悪性 npm「indexed-btree」、インストール時の防御を回避 実行時にマルウェアを起動

セキュリティニュース

投稿日時: 更新日時:

悪性 npm「indexed-btree」、インストール時の防御を回避 実行時にマルウェアを起動

セキュリティ企業Checkmarxは2026年9月17日、正規ライブラリ「sorted-btree」に似せた悪性npmパッケージ「indexed-btree」を発見したと公表しました。従来の悪性パッケージで使われてきたインストール時のスクリプトではなく、アプリケーションがライブラリの通常機能を呼び出したときにマルウェアを起動する仕組みです。

GitHubは2026年7月、依存パッケージのインストール時スクリプトを原則無効化したnpm v12を正式公開しました。今回の事例はnpm v12の脆弱性ではなく、その保護対象外であるアプリケーション実行時へ悪性処理を移した攻撃です。Checkmarxは、インストール時の検査に加えて実行時の挙動を監視する必要があると指摘しています。

悪性npmパッケージ「indexed-btree」のサマリー

  • 2026年9月17日、Checkmarx Zeroが「indexed-btree」と関連する悪性パッケージ群の調査結果を公開しました。
  • 「indexed-btree」は正規の「sorted-btree」を模倣し、Checkmarxによると調査時点で週間約200万ダウンロードに達していました。
  • preinstallpostinstallではなく、通常のデータ操作メソッドBTree.prototype.set()に悪性コードの起動処理を隠していました。
  • 起動後は、OSアーキテクチャ、ホスト名、CPU、メモリ、稼働時間などを収集し、SlackとTelegram経由で送信する機能がありました。
  • 追加ペイロードの取得には、EthereumのSepoliaテストネット上のスマートコントラクトを使用していました。悪性ファイルや起動処理を削除する機能も確認されています。
  • Checkmarxは関連する別の悪性npmパッケージ9件も報告し、これら9件はnpmから削除されたと説明しています。
  • 正規の開発プロジェクトに見えるGitHubリポジトリも用意されていました。研究者によると、調査時点のリポジトリにはnpm配布物と同じ悪性コードが含まれていませんでした。
  • ダウンロード数は感染端末数ではありません。実際の感染件数、流出件数、被害額は公表されていません。
項目 内容
調査公表日 2026年9月17日
発見・分析 Checkmarx Zero
主な悪性パッケージ indexed-btree
偽装対象 正規npmライブラリ sorted-btree
悪性コードの実行時点 ライブラリの通常機能が使用されたとき
確認された機能 端末情報収集、外部送信、ブロックチェーンを介した追加ペイロード取得、痕跡削除
ダウンロード規模 調査時点で週間約200万件とCheckmarxが報告
関連パッケージ 別の9件と、過去に同じスマートコントラクトを参照した1件
情報流出・感染件数 公表されていません
攻撃者 特定されていません
対応 Checkmarxは関連9件がnpmから削除されたと報告。indexed-btree自体の現在の公開状態は独立に確認できていません

npm v12の防御対象外となる「実行時」に悪性コードを配置

Checkmarxの解析では、indexed-btreepackage.jsonに悪意あるインストールフックはありませんでした。代わりに、ライブラリの通常メソッドBTree.prototype.set()へ、難読化されたマルウェアのローダーを起動する処理が埋め込まれていました。

そのため、依存パッケージのインストールが正常に完了しても、アプリケーションからパッケージを使用したときに悪性コードが起動する可能性があります。インストールフックの有無だけを確認する検査では、こうしたコードを見落とします。

GitHubは2026年7月8日、npm v12の一般提供を発表しました。npm v12ではpreinstallinstallpostinstallなどの依存パッケージの実行はデフォルトで無効になり、Git依存関係やリモートURLからの依存関係取得も原則として明示的な許可が必要です。

今回の手法はインストール時スクリプトを使用しないため、この制限だけでは実行を防げません。ただし、スクリプト制限そのものが無意味になったわけではなく、従来型のインストール時攻撃を抑える防御として引き続き機能します。

SlackとTelegramへ端末情報を送信、C2にはスマートコントラクトを利用

Checkmarxによると、難読化されたコードには、ホスト名、OSアーキテクチャ、CPU、メモリ、稼働時間などを収集して外部送信する機能がありました。送信先にはSlackとTelegramが設定されていました。

さらにEthereumのSepoliaテストネット上のスマートコントラクトから指令・制御(C2)情報と暗号化された追加ペイロードを取得する仕組みも確認されています。公開鍵暗号を利用して復号鍵を生成し、暗号化されたデータを復号する設計です。また、悪性ファイルと起動処理を削除して痕跡を消す機能もありました。

これらは研究者がパッケージ内に確認した機能です。実際に何台の端末で実行され、どの情報が外部へ送信されたかは、組織ごとのログなどで確認する必要があります。研究者は暗号資産ウォレットの資金にも言及していますが、その残高を今回の攻撃による窃取額と判断できる根拠は示されていません。

関連する悪性npmパッケージ9件も発見

Checkmarxはindexed-btreeのほかに、以下の9パッケージを関連する活動として報告しました。ダウンロード数は同社が公表した調査時点の数値です。

パッケージ ダウンロード数
ordered-kv-index 448,184
btree-leaderboard 493,685
priority-slot-queue 402,860
btree-range-store 468,092
btree-core 1,951,274
btree-time-index 425,312
btree-lru-cache 372,185
neighbor-key-map 366,019
sliding-score-window 448,024

同社によると、これら9件はnpmから削除されています。また、今回の活動で使用されたスマートコントラクトは、過去にmutex-forgeという別のパッケージからも参照されていました。

ダウンロード数は繰り返し取得や自動化されたビルドも含み得ます。実際の利用企業数や感染端末数へ換算することはできません。

正常に見えるGitHubリポジトリでも配布物の検査が必要

今回のパッケージには、通常の開発プロジェクトに見えるGitHubリポジトリ、コミット履歴、開発者アカウントが用意されていました。

Checkmarxの調査によると、当時のGitHubリポジトリには、npmで配布されていたパッケージ内の悪性コードが含まれていませんでした。開発者がREADME、コミット数、GitHub上のソースコードだけでパッケージを評価した場合、実際に取得する配布物との違いを見落とす可能性があります。

開発・調達部門では、依存先リポジトリの評判だけでなく、実際にビルドへ取り込むnpm配布物を検査対象にする必要があります。

Axiosへの攻撃とは何が違うのか

2026年3月31日に発生したAxiosへのサプライチェーン攻撃では、攻撃者が正規パッケージの公開権限を悪用し、悪性依存パッケージのpostinstallスクリプトを使ってマルウェアを実行させました。

今回のindexed-btreeは、別のパッケージを正規ライブラリに似せて公開し、通常のライブラリ操作を実行の起点にした点が異なります。従来型と今回の手法は、開発環境を侵害するというリスクは共通していますが、対処する検査・実行制御の対象が異なります。

関連記事:

※npm v12は2026年7月8日に一般提供されています。上記のnpm v12関連記事にある「リリース予定」は発表当時の情報です。

情報システム部門・開発部門が確認したいポイント

対象パッケージを導入した可能性がある場合は、インストール履歴だけでなく実行の有無も調べます。

  • 依存関係を確認する: package.json、ロックファイル、SBOM、CI/CDの依存関係記録、配布済みコンテナを調べ、対象パッケージの直接・間接利用を洗い出します。
  • 実行状況を調べる: 対象ライブラリを利用したプロセスの実行履歴、通常と異なる子プロセス、Slack・Telegramやブロックチェーン関連の不審通信を確認します。これらのサービスへの通信すべてが悪性という意味ではないため、プロセスと通信先を突き合わせます。
  • 感染が疑われる環境を隔離する: 不審な実行や通信を確認した場合は開発端末やCI/CD実行環境を隔離し、ログや調査証拠を保全します。
  • 認証情報を見直す: マルウェア実行が確認された環境や、実行の可能性を排除できない環境について、アクセス可能だったnpm、GitHub、クラウド、CI/CDの認証情報を棚卸しし、安全な環境から失効・再発行します。
  • 信頼できる環境へ戻す: 感染が確認された場合、パッケージ削除だけで対応を終えず、検証済みの依存関係とクリーンな環境から再構築します。
  • 検査範囲を広げる: npm v12のインストール時スクリプト制限を継続しつつ、実際の配布物の検査、実行時のプロセス・外部通信監視、CI/CD権限の最小化を組み合わせます。

Checkmarxは、インストール時のスクリプト制限を維持したうえで、実行時の挙動分析を追加するよう勧めています。今回の事例では、インストール処理に異常がなくても、パッケージを使用した段階でマルウェアが動作する可能性があるためです。

出典