# JavaScriptエコシステム全体で使われる人気パッケージに悪意あるnpm更新

NeoTechNews編集部

発生日である2025-09-08、セキュリティ企業Aikidoは、`debug`や`chalk`を含む人気npmパッケージ群に影響するサプライチェーン攻撃について報告した。新たに公開されたバージョンに悪意あるコードが挿入されていたという。[16125]

Aikidoによると、同社の脅威インテリジェンス・フィードが13時16分(UTC)にパッケージの公開を初めて検知した。影響を受けたのは非常に人気の高い18個のパッケージで、合計ダウンロード数は週20億件を超えると説明した。[16125] この規模が重要なのは、依存関係の連鎖に短時間さらされただけでも、侵害されたパッケージの直接のメンテナーをはるかに超え、多数のウェブサイト、アプリケーション、ビルドシステムに影響が波及し得るためだ。

報告されたペイロードは、ありふれた迷惑プログラムではなかった。Aikidoによると、挿入されたコードはウェブサイトのクライアント側で実行され、ブラウザー内の暗号資産およびWeb3関連の動作をひそかに傍受することを目的としていた。[16125] 同社の分析では、マルウェアはウォレットとのやり取りを操作し、支払先を書き換え、利用者に明白な警告を出すことなく、資金や承認を攻撃者が管理するアカウントへ転送できたという。[16125]

技術的な説明からは、多層的な傍受戦略がうかがえる。Aikidoによると、マルウェアは`fetch`、`XMLHttpRequest`、一般的なウォレット・インターフェースなどの関数に自身を組み込み、リクエストとレスポンス内の値を書き換えた。[16125] これが重要なのは、攻撃対象が、利用者が目にして署名する内容を信頼する段階へと近づくからだ。画面上では通常の取引に見えても、その下では重要な識別子や承認先がすでに置き換えられている可能性がある。[16125]

Aikidoはまた、コードが文字列照合ロジックを用い、対象をよく似た値に置き換えることで、操作を見つけにくくしていたと説明した。[16125] 実際には、この攻撃はブラウザーの挙動を変えるだけでなく、利用者が背後の送信先の変更に気づかず処理を進めてしまう程度に、見た目の類似性を保つよう設計されていたことを意味する。

インシデント報告は、侵害の原因をメンテナーに対するフィッシング攻撃だとしている。Aikidoによると、メンテナーは、`support [at] npmjs [dot] help`から送られたメールを通じてアカウントが乗っ取られたと明らかにし、このドメインはわずか3日前の2025-09-05に登録されていた。[16125] 報告によると、AikidoがBlueskyでメンテナーに連絡した後、メンテナーは15時15分(UTC)、侵害を認識しており、影響を受けたパッケージの修復を始めたと返信した。[16125]

Aikidoが報告を書いた時点では、対応は完了していなかった。同社によると、メンテナーはアカウントへのアクセスを失う前に、侵害されたパッケージの大半を削除したようだったが、執筆時点で`simple-swizzle`は依然として侵害された状態だった。[16125] Aikidoはまた、16時58分(UTC)に、同じ攻撃者に侵害されたとみられる別のパッケージを検知し、`dist/cjs/proto-tinker.cjs.entry.js`内で悪意あるコードが見つかったと述べた。[16125]

この事案は、JavaScriptのパッケージ・エコシステムが、公開者のアカウントというレベルで依然として脆弱であることを改めて示すものだ。メンテナーがフィッシング被害に遭い、侵害が封じ込められる前に悪意あるバージョンが公開されれば、信頼されているパッケージがクライアント側の金融マルウェアの配布経路になり得る。[16125]

提供された証拠はAikidoのインシデント報告に限られるため、ここでの被害範囲は、同社がその時点で説明したものとして理解すべきである。そうした留保を踏まえても、核心は明白だ。これはタイポスクワッティングによる脇道の攻撃でも、ダウンロード数の少ない依存関係を悪用する手口でもなかった。決済、ウォレット、Web3の処理に関わるブラウザー利用者を狙い、主流のnpmパッケージを武器化しようとする標的型の試みだった。[16125]

開発者とセキュリティチームにとって、実務上の意味は明確だ。依存パッケージへの信頼はメンテナーのアカウント・セキュリティと切り離せず、ブラウザー側のパッケージには、コードが実際の利用者に届いて初めて表面化するリスクがある。今回の事件では、この二つの危険が一つの連鎖の中で組み合わさった。