indexed-btree、npm v12防御を回避しランタイム攻撃が判明

悪意のあるnpmパッケージindexed-btreeがnpm v12の防御を回避し、ランタイム時にマルウェアを実行する新たな手口が明らかになりました。

投稿者 central
ハイライト
  • このマルウェアはインストールスクリプトを使わず、BTree.prototype.setメソッド内にローダーを隠蔽しています。
  • 攻撃者はイーサリアムウォレットに109ETHを保有し、多大な利益を得ている可能性があります。
  • 開発者は直ちにシークレットをローテーションし、安全なバックアップから環境を復元すべきです。

悪意のあるnpmパッケージ「indexed-btree」が、サプライチェーン攻撃に対する新たな防御機構を巧妙に回避する手法で、ランタイム時にマルウェアを実行していることが明らかになった。セキュリティ企業Checkmarxの調査によれば、このパッケージは正規ライブラリ「sorted-btree」を偽装し、すでに週間200万ダウンロードを達成。攻撃者はイーサリアムウォレットに109ETHを保有するなど、多大な利益を得ている可能性が指摘されている。

npm v12の防御を潜り抜ける新たな手口

2026年6月、GitHubはnpmエコシステムにおけるサプライチェーン攻撃を防ぐため、一連のセキュリティ対策を発表した。その中核となるのが、依存関係のライフサイクルスクリプト「preinstall」「install」「postinstall」に対するブロック機能である。明示的な承認がない限り、これらのスクリプトは実行されない。さらに、許可なしにGitリポジトリやリモートURLから依存関係を自動取得する挙動も防止される。

indexed-btreeが採用した手法は、これらの対策の盲点を突いたものだ。マルウェアはインストールスクリプトを使用せず、パッケージのコア機能であるBTree.prototype.set()メソッド内にローダーを隠蔽。このメソッドは、アプリケーションが特定のキー値を指定して呼び出した際に実行される、ごく一般的な関数である。そのため、インストールプロセスは完全にクリーンに見え、npm v12の承認メカニズムを一切トリガーしない。

ランタイムトリガーの仕組み

Checkmarxの分析によると、マルウェアローダーはライブラリ本来のメソッド内部に潜む。開発者が日常的に呼び出すBTree.prototype.setを起点に、難読化された第一段階ペイロード「sharedLoad.min.js」が起動する。このアプローチは、標準的な汚染分析ツールや静的スキャナによる検出を極めて困難にする。

マルウェアが実行されると、システムアーキテクチャ、ホスト名、CPU、メモリ、稼働時間などの詳細情報を収集。収集したデータは、ハードコードされたSlackおよびTelegramチャンネルを通じて外部に送信される。さらに、攻撃者はSepoliaテストネット上のイーサリアムスマートコントラクトを介してC2(コマンド&コントロール)情報を管理。X25519鍵交換でAES鍵を導出し、コントラクトに格納された第二段階ペイロードを復号する仕組みだ。

攻撃が終了する際、マルウェアは自身のファイルを削除し、パッケージコードから悪意のあるトリガーを取り除くことで痕跡を完全に消去する機能も備えている。

巧妙に偽装された開発者アカウントとコミット履歴

攻撃者は、このプロジェクトを正当なものに見せるために相当な労力を費やしている。GitHub上には一見して本物と見分けがつかないリポジトリが構築され、コミット履歴は入念に過去の日付までさかのぼって作成。開発者アカウントも長期間にわたって育成されており、一連の工作は高度に組織化されている。

関連パッケージと累計ダウンロード数

Checkmarxは、同一のキャンペーンに属する9つの追加パッケージを特定し、すでにnpmから削除されている。これらのパッケージも軒並み高いダウンロード数を記録していた。

  • ordered-kv-index(44万8,184ダウンロード)
  • btree-leaderboard(49万3,685ダウンロード)
  • priority-slot-queue(40万2,860ダウンロード)
  • btree-range-store(46万8,092ダウンロード)
  • btree-core(195万1,274ダウンロード)
  • btree-time-index(42万5,312ダウンロード)
  • btree-lru-cache(37万2,185ダウンロード)
  • neighbor-key-map(36万6,019ダウンロード)
  • sliding-score-window(44万8,024ダウンロード)

単一パッケージだけでも週間200万ダウンロードに達していたindexed-btreeを合わせれば、その影響範囲は計り知れない。

いま開発者に求められるセキュリティ対策

このインシデントが示す教訓は明確だ。インストール時のスキャンだけに依存するセキュリティモデルは、もはや十分ではない。マルウェアはランタイム時の挙動に潜む可能性があり、ランタイム行動分析を併用することが不可欠となる。

もしindexed-btree、または上記リストに含まれるいずれかのパッケージをインストールした場合、直ちにすべてのシークレット(APIキー、トークン、認証情報など)をローテーションし、安全なバックアップから開発環境を復元することが推奨される。攻撃者がC2通信にイーサリアムスマートコントラクトを活用している点からも、静的なネットワークシグネチャのみによる検出は困難であり、プロアクティブな防御戦略への転換が急務である。

この記事をシェア