見えない依存関係を使うPhantomRaven

PhantomRavenは、脅威キャンペーンにつけられた名称です。
活動はnpmを舞台にして行われます。
npmは、Node.jsのパッケージを管理するシステムです。
そして、世界中の開発者からnpmトークン、GitHubの認証情報、CI/CDのシークレットを積極的に盗み出します。
どんな流れで動くのでしょうか。

  • 無害なスクリプトを作成する
    まず初めに攻撃者はnpmで配布するパッケージを作成します。
    その第一段階として、無害なスクリプトを作成します。
    このパッケージの内容となるスクリプトには怪しい点がありません。
    このため、セキュリティ製品でスキャンされても引っかかりません。
  • package.jsonを作成する
    次に作成するのは配布するパッケージを利用するための依存会計を記述するためのファイルです。
    通常はここに配布するパッケージが必要とする他のパッケージを記述します。
    PhantomRavenのポイントはここにあります。
    よくある通常の方法では単に必要なパッケージの名称やバージョンを記述するだけなのですが、PhantomRavenでは依存パッケージを直接HTTPのURLで指定する方式で記述したのです。
    通常、パッケージの名前とバージョンを指定して依存パッケージを取得する場合にはnpmjs.comから取得されることになるのですが、このようにHTTPのURLを指定するとこのパッケージをインストールした際にはその外部サイトから直接追加のパッケージが取得されて適用されます。
  • 依存関係のパッケージで侵害する
    外部に置いているパッケージなので、どんな悪意を持った機構を仕込んでいてもそれは持ち込むことができてしまいます。
    npmjs.comはこれらのURLをたどりません。
    セキュリティスキャナーはこれらのURLを取得しません。
    依存関係分析ツールはこれらのURLを無視するのです。
    あらゆる自動化セキュリティシステムでは、これらのパッケージは「依存関係なし」と表示されます。
    ですが、実際には外部サイトから持ち込まれているのです。

この手法による攻撃では、被害者となる人の行動を必要とすることなく攻撃が開始されて完了されます。
そして完了してしまうと、その環境のnpmトークン、GitHubの認証情報、CI/CDのシークレットを盗み出します。

依存関係でもってくる外部パッケージの名称も実にそれらしいものにしてあります。
これらのパッケージ名称の作成には生成AIが使われていると考えられています。
いわゆるslopsquattingです。

このキャンペーンのように、パッケージそのものではなく、その依存関係を解消する仕組みを使って攻撃を成立させる手法は、また別のキャンペーンで使われることも考えられます。
注意が必要な部分が増えていきますね。

PhantomRaven: NPM Malware Hidden in Invisible Dependencies
https://www.koi.ai/blog/phantomraven-npm-malware-hidden-in-invisible-dependencies

一緒によく読まれている記事

最新の脅威情報
をお届け

BLOGブログ

情報セキュリティに対する啓蒙のため、
3つのメディアを運用し、
情報発信を行っています。

わたしたちはサイバー領域や
認知領域の未知なる脅威に、
テクノロジーとインテリジェンスで対抗します。

私たちが選ばれる理由

CONTACT リスクマネジメントサービスの
ご相談窓口

コンステラ セキュリティ ジャパンは
最先端のサービスを
お客様のニーズに
カスタマイズして提供し、
効果が出るまで寄り添います。