Koi Securityの研究者らは、PhantomRavenと名付けたマルウェアキャンペーンを発見した。この攻撃により、世界中の開発者から認証情報や秘密情報を収集するマルウェアが、8万6000件を超えるnpmパッケージのダウンロードに侵入していた。
研究者らは、攻撃が「ほとんどのセキュリティツールが依存する依存関係分析から隠された依存関係の中に、悪意のあるコードを隠している」と述べた。
AIと自動化が新たなサプライチェーンリスクを生む
この攻撃は、オープンソースエコシステムにおける高まるリスクを浮き彫りにしている。そこでは、自動化ツールやAI支援コーディングが標準的な手法になりつつある。
開発者は、npmパッケージを利用する前に検証するため依存関係スキャンに頼っている。しかしPhantomRavenは、こうした防御策を完全にすり抜けた。
攻撃者は、npmの目立たない機能と、AIが生成したパッケージ名に対する開発者の信頼を悪用し、数カ月にわたって検知されずに悪意のあるコードを配布できた。
このキャンペーンは、従来の依存関係監査や静的解析だけでは、ソフトウェアサプライチェーンを完全に保護できないことを示している。
PhantomRavenの手法を使えば、レビュー済みのパッケージが無害に見える場合でも、脅威アクターはインストール時に被害者のマシン上で実行されるコードを制御できる。
クリーンなパッケージに隠された不正な秘密
悪意のあるパッケージは無害に見えた。多くの場合、目に見える依存関係のない単純な「Hello, world!」スクリプトだった。
実際のペイロードは、Koiの研究者がRemote Dynamic Dependencies(RDD)と呼ぶものに潜んでいた。これは、インストール時に攻撃者が管理するサーバーから悪意のあるコードを取得する、隠されたHTTPベースの参照だ。
開発者がnpm installを実行すると、パッケージマネージャーは外部URLから見えない依存関係を取得した。
npmや大半のセキュリティスキャナーはHTTP URLをたどらないため、こうした依存関係は検知を免れた。
インストールのたびに攻撃者のサーバーから新しいペイロードが取得され、インストーラーのIPアドレスや環境に応じてコード配信を調整できた。
例えば、セキュリティ研究者には無害なコードを配布する一方、企業ネットワークには認証情報を盗むマルウェアを送り込むことが可能だった。
インストールからデータ窃取へ
PhantomRavenの成功の鍵は、npmに組み込まれたライフサイクルスクリプトにあった。
悪意のある依存関係には、“preinstall”: “node index.js”というpreinstallフックが含まれており、ユーザーの同意なしに自動実行された。つまり、通常のインストール処理の一部として、深くネストされた依存関係でさえコードを実行できた。
起動すると、マルウェアは開発者のシステムから次のようなデータを組織的に収集した。
- メールアドレスを.gitconfig、.npmrc、環境変数から収集した。
- CI/CD認証情報。GitHub Actionsのトークン、GitLab CIのキー、Jenkins、CircleCI、npm公開用トークンなどが含まれる。
- システムフィンガープリント情報。IPアドレス、ホスト名、OSの詳細、ユーザー名などだ。
流出したデータはHTTP GET、HTTP POST、WebSocket接続を介して冗長に送信され、ネットワーク制限下でも確実に届けられるようになっていた。
スロップスクワッティング攻撃の台頭
ステルス性の高い配信メカニズムに加え、PhantomRavenはスロップスクワッティングと呼ばれる新たなソーシャルエンジニアリング手法を導入した。従来のタイポスクワッティングをひねったものだ。
既存のパッケージ名を模倣する代わりに、攻撃者はGitHub CopilotやChatGPTなどのAIアシスタントがもっともらしいものとして幻覚的に生成しそうな名前を登録した。
例としては次のようなものがある。
- eslint-comments(正規のeslint-plugin-eslint-commentsではなく)
- unused-imports(eslint-plugin-unused-importsではなく)
- Transform-react-remove-prop-types(babel-plugin-transform-react-remove-prop-typesではなく)
AIが存在しないこれらのパッケージを開発者に提案すると、ユーザーは知らずに悪意のあるバージョンをインストールしてしまう。これは、人工知能が意図せずサプライチェーンのリスクを増幅し得ることを示している。
開発パイプラインをロックダウンする
PhantomRavenのようなソフトウェアサプライチェーンの脅威に対抗するには、依存関係、ビルド環境、開発者の慣行を厳格に管理する必要がある。以下の対策は、リスクを低減しコードの完全性を高めるための実践的な手順を示したものだ。
- 未検証の依存関係を制限する:外部URLをブロックし、許可されていないリンクがないか依存関係を監査する。
- 再現可能なビルドを徹底する:バージョンを固定し、インストール中の動的な取得を防ぐ。
- ビルド環境を分離する:インストールをサンドボックス化し、外向きのネットワークアクセスを制限する。
- 挙動とネットワーク活動を監視する:異常なインストール、ネットワーク通信、スクリプト実行を検知する。
- 最小権限を適用する:CI/CDトークン、環境変数、開発者の権限を制限する。
- 開発者の警戒を促す:パッケージの出所を確認し、使っていない依存関係を削除し、AIが提案した名前に注意する。
依存関係を保護し、ビルドを分離することで、組織は重大な隙間を塞ぎ、サイバーレジリエンス全体を高められる。
サプライチェーン脅威の新時代
PhantomRavenは、タイポスクワッティングや認証情報の窃取から、AIの影響を受けた手段を用いる動的で適応型のマルウェア配信に至るまで、ソフトウェアサプライチェーンの脅威が進化していることを浮き彫りにした。
生成AIが日常的な開発ツールになるにつれ、攻撃者は機械が提案するコンテンツへの信頼をますます悪用している。
PhantomRavenは、静的な防御だけではもはや十分でないことを警告している。継続的な挙動監視、依存関係の分離、AIを考慮したコードレビュープロセスを、標準的なセキュリティ対策にしなければならない。
強化ソフトウェアサプライチェーンのセキュリティをすることは、もはや選択肢ではない。不可欠だ。





