▽ 要約
発見――9/8 13:16(UTC)検知、約2.5時間で封じ込め開始
対象――debugやchalk等18件、週計約20億DL超
仕掛け――fetch/XHRとwallet API改変で送金先を置換
時間窓――短時間の更新+ロック未固定で主に影響
JavaScript生態系を直撃したQix npmサプライチェーン攻撃は、9月8日(UTC)に検知され、debugやchalkなど基盤18パッケージへ悪意コードが注入された事件です。Qix npm サプライチェーン攻撃はブラウザ層で取引を乗っ取り、暗号資産アドレスや承認先を書き換え得るため、短時間でも深刻でした。本稿は発覚から封じ込め、改ざん版一覧、マルウェアの挙動、影響条件、実務対策まで一次情報を精査し、開発者とユーザーが今すぐ取るべき手順を解説します。
発覚と封じ込めの経緯
9/8 13:16(UTC)に検知が走り、同日中にunpublishと差し替えが進んだため、短時間ながら広範な潜在リスクが生じた。
Aikido Securityの監視が異常を捉え、Qix氏はSNSとIssueで侵害を認めて清掃を開始しました。npm側で不正版の公開停止が順次行われ、数時間で大半が除去されました。フィッシング元はnpm公式を装う新規ドメインからの2FA更新催促メールで、Qix氏はアクセスしたと説明しています。
フィッシング手口
npm公式を装った2FA更新メールを介して認証情報が詐取され、短時間に連続公開が行われた。
攻撃メールはsupport@npmjs.helpから送り付けられ、偽ログインに誘導して資格情報と2FAを窃取しました。資格情報は外部エンドポイントへ送信され、取得直後に18パッケージへ新バージョンを公開する動きが観測されました。
改ざん対象と規模
改ざんは基盤ユーティリティ18件で週約20億DL超に及んだため、間接依存も含め波及余地が大きかった。
悪性バージョン(主要):
・ansi-styles 6.2.2/debug 4.4.2/chalk 5.6.1/supports-color 10.2.1/strip-ansi 7.1.1/ansi-regex 6.2.1/wrap-ansi 9.0.1/color-convert 3.1.1/color-name 2.0.1/is-arrayish 0.3.3/slice-ansi 7.1.1/color-string 2.1.1/simple-swizzle 0.2.3/supports-hyperlinks 4.1.1/has-ansi 6.0.1/chalk-template 1.1.1/backslash 0.2.1/error-ex 1.3.3
(参考)proto-tinker-wc:0.1.87/1.8.7の両表記が流通。
週次ダウンロードはansi-styles約3.7億、debug約3.6億、chalk約3.0億などで、依存の深さから潜在的影響は最大級でした。
実被害の閾値
時間窓とロックの有無が被害の分水嶺となり、ロック運用や未更新環境では影響が限定された。
影響は「9/8午前(米東部)に新規インストール/更新し、依存をロックせず不正版を取得し、ブラウザ経由で暗号資産操作」を満たす場合に集中しました。Node純環境ではブラウザAPI未在で異常終了する報告もあり、検知の糸口にもなりました。
マルウェアの挙動(クリプトクリッパー)
ブラウザ層で通信とウォレットの両面をフックするため、UIが正しく見えても署名データが改変され得る。
主な動作は①fetch/XMLHttpRequestのモンキーパッチでレスポンス監視とアドレス置換、②window.ethereumやSolana関連APIのフックでeth_sendTransactionや署名直前のパラメータを書換、③ERC‑20のapprove(0x095ea7b3)検出時に承認先を攻撃者アドレスへ差し替え、の多層改変です。BTC/ETH/SOL/TRX/LTC/BCHの形式検出と「それらしく見える」置換で発覚を遅らせます。
ウォレットとユーザー影響
ソフトウェアウォレットはUIと署名内容の齟齬を突かれ得るため、当面はハードウェアでの厳格確認が有効だ。
ハードウェアウォレットはデバイス上で最終宛先を提示するため、ブラウザ内改ざんを見抜きやすいと専門家が助言。非ハードウェア利用者は新規宛先への高額送金を控え、少額テストとアドレス全桁照合を推奨します。
開発者が直ちに取る対策
ロック運用・危険版の強制固定・混入検出の三点を徹底することで再発と取り込みを抑止できる。
①依存監査:npm audit/Dependabotで不正版を即特定。該当はダウングレード(例:chalk=5.6.0等)
②ロック徹底:CIはnpm ciへ移行し、常時lockfile遵守
③強制固定:package.jsonのoverridesで安全版を明示
④混入スキャン:node_modules配下をripgrepで「_0x112fa8」等の難読化断片を検索
⑤アカウント防御:2FA/リカバリ更新、メール中リンクを踏まず公式に直接ログイン
// 例:危険版の強制固定
"overrides": {
"chalk": "5.6.0",
"debug": "4.3.4"
}
ユーザー向けの即応
最終確認画面の全桁照合・小額テスト送金・不要承認のRevokeにより被害確率を下げられる。
ウォレットの承認・送金確認では宛先全桁を照合し、不審なら中止。新規宛先は少額テスト後に本送金。過去のERC‑20承認はRevokeツールで定期的に棚卸し、見知らぬ許可は撤回します。
npmとコミュニティの対応
不正版の公開停止と注意喚起が迅速に進み、検知共有とIOC配布で横展開リスクの監視が強化された。
npm(GitHub/Microsoft)は不正版を順次unpublishし、関連リポジトリではIssueで経緯と注意喚起が行われました。AikidoやSocketは技術分析とIOC(偽ドメイン・不審URL・署名改変挙動)を公開。Sindre Sorhus氏はrgによる混入検出のワンライナーを示し、現場の確認作業を後押ししました。
▽ FAQ
Q. いつ・どう検知されましたか?
A. 2025年9月8日13:16(UTC)にAikidoが検知し、数時間でnpmが不正版をunpublishしました。
Q. 影響範囲はどの程度ですか?
A. debugやchalkなど18件で週約20億DL超の規模ですが、時間窓とロック有無で実被害は限定的でした。
Q. マルウェアは何をしますか?
A. fetch/XHRとwallet APIをフックし、宛先やERC‑20承認先(0x095ea7b3)を攻撃者側に置換します。
Q. 確認すべき危険版は?
A. 例としてdebug 4.4.2、chalk 5.6.1、ansi-styles 6.2.2など18件で、全件ダウングレードか再インストールを。
Q. 直近の安全策は?
A. npm ci運用、overrides固定、ripgrepで_0x112fa8検査、ハードウェアウォレットで厳格確認が推奨です。
■ ニュース解説
発覚は9/8 13:16(UTC)で、偽サポート経由の資格情報奪取により18パッケージへ悪性版が公開されたため、短時間でも広範な潜在リスクが生じた。
背景は単一メンテナー集中と依存の深さで、ブラウザ層を狙うクリプトクリッパーが多段で介入したため、UIと署名内容の齟齬が起きやすい。
影響は時間窓・ロック運用・ブラウザ経由の有無に左右され、多くの環境ではロックや未更新で実害が抑制された一方、ウォレットUI依存の運用は高リスクである。
投資家の視点:パッケージ集中と単一アカウントのバスリスクは構造的課題です。ソフトウェア供給網の評価では、①鍵・署名・パブリッシュ権限の分散、②出荷前の実行時検知(フック検出)、③ロック/再現性担保(SBOMとピン留めの適用範囲設計)を重視すべきです。暗号資産の運用では、当面ハードウェア署名と少額テスト送金の原則を遵守してください。
※本稿は投資助言ではありません。
(参考:Aikido Security,Bluesky,GitHub Issue)