PhantomRaven マルウェア
サイバーセキュリティ研究者は、npmエコシステムを標的とした、非常に活発なソフトウェアサプライチェーン攻撃を発見しました。100を超える悪意のあるパッケージが特定され、認証トークン、CI/CDシークレット、GitHub認証情報など、開発者の機密情報を侵害されたマシンから直接盗み出すことが可能です。
PhantomRavenというコードネームで呼ばれるこのキャンペーンは、2025年8月に初めて出現しました。それ以来、126のnpmライブラリに拡大し、86,000件以上のインストールを獲得しており、これらの悪意のあるパッケージの急速な拡散と採用を実証しています。
目次
気づかれずに飛び交う悪意のあるパッケージ
フラグが付けられたパッケージには次のものがあります:
- op-cli-installer – 486 ダウンロード
- unused-imports – 1,350 ダウンロード
- badgekit-api-client – 483 ダウンロード
- polyfill-corejs3 – 475 ダウンロード
- eslint-comments – 936 ダウンロード
PhantomRaven が特に巧妙なのは、リモート動的依存関係(RDD)の使用です。悪意のあるパッケージは、公式の npm レジストリからコードを取得する代わりに、カスタム HTTP URL(packages.storeartifact.com)を参照します。これにより、npm は信頼できない外部ソースから依存関係を取得し、npmjs.com の保護を効果的に回避できます。
従来のセキュリティ スキャナーや依存関係分析ツールでは、自動化されたシステムがパッケージに「依存関係が 0 個」あると認識するため、これらの RDD を検出できません。
攻撃の仕組み
攻撃チェーンは、開発者が一見無害なパッケージのいずれかをインストールするとすぐに始まります。主な要素は次のとおりです。
インストール前フックの実行: パッケージには、メインのペイロードを自動的に実行するインストール前ライフサイクル スクリプトが含まれています。
リモート ペイロードの取得: スクリプトは、攻撃者が制御するサーバーから悪意のある依存関係を取得します。
データの窃盗: 実行されると、マルウェアは開発者の環境をスキャンして電子メール アドレスを探し、CI/CD 環境の詳細を収集し、システムのフィンガープリント (パブリック IP を含む) を作成し、データをリモート サーバーに送信します。
攻撃者はペイロードを自由に変更し、最初は無害なコードを提供して検出を回避し、パッケージが採用されると悪意のある更新をプッシュします。
人間とAIの盲点を突く
パッケージ名の選択は意図的です。脅威アクターはスロップスクワッティングと呼ばれる手法を用いています。これは、大規模言語モデル(LLM)が存在しないものの、いかにもそれらしいパッケージ名を偽装するものです。開発者は、その現実的な名前から、隠れた脅威に気づかずにこれらのパッケージを信頼してしまう可能性があります。
研究者が指摘するように、PhantomRaven は攻撃者の巧妙化が進んでいることを浮き彫りにしています。
- リモート動的依存関係は静的分析を回避します。
- AI によって生成されたパッケージ名は開発者の信頼を悪用します。
- ライフサイクル スクリプトは、ユーザーの操作なしで自動的に実行されます。
このキャンペーンは、悪意のある攻撃者が従来のセキュリティ ツールのギャップを悪用して、オープンソース エコシステムでコードを隠す新しい方法を見つけていることを強調しています。
npmが主要なターゲットである理由
npmエコシステムはパッケージ公開の容易さと、インストール前、インストール後、そしてインストール後のスクリプトの自動実行という特徴を併せ持つため、格好の標的となっています。攻撃者はライフサイクルスクリプト内に悪意のある動作を隠蔽することが可能であり、多くの場合、開発者の知らないうちに実行されるため、現代の開発環境においては、より一層の警戒と堅牢なセキュリティ対策が不可欠です。