OWN NEWS GATHER
← 戻る
The Hacker News

npmパッケージ「indexed-btree」に悪意あるコード、実行時に関数を経由して起動する手口が判明

要点

  • 正規のデータ構造ライブラリを模倣したnpmパッケージ「indexed-btree」にマルウェアが混入し、削除前に数百万回ダウンロードされていたことが明らかになった。

  • npmのセキュリティ強化を回避するため、従来のインストール時スクリプトではなく、通常メソッドの実行時に不正コードを読み込ませる手法が使われていた。

  • 攻撃者はブロックチェーン上にコードを隠す「EtherHiding」技術を用いてペイロードを取得し、約109 ETHの不正利益を得たとみられている。

  • セキュリティ企業Checkmarxの調査で判明し、関連する10個のパッケージとともにnpmレジストリから既に削除された。

  • ソフトウェアサプライチェーンセキュリティ企業のCheckmarxは2026年9月、JavaScript向けパッケージ管理システム「npm」で配布されていたパッケージ「indexed-btree」に悪意あるコードが含まれていたことを公表した。同パッケージは正規のライブラリを装って短期間で数百万回ダウンロードされ、攻撃者に多額の暗号資産をもたらした可能性があるという。npm側のセキュリティ対策をすり抜けるため、パッケージの導入時ではなくアプリケーションの実行時に不正処理を開始する巧妙な手口が確認されている。

セキュリティ対策をすり抜ける実行時コードへの隠蔽

今回の攻撃で確認された大きな特徴は、パッケージのインストールスクリプトを一切使わず、通常のアプリケーションコードの中に悪意ある処理を潜ませていた点にある。

npmではバージョン12において、パッケージ導入時に自動実行される「preinstall」や「postinstall」といったライフサイクルスクリプト(パッケージのインストール前後に自動実行される処理)の動作を制限するセキュリティ対策が導入された。これらは本来、必要なコードのコンパイルや環境設定に使われる正当な仕組みだが、攻撃者が利用者の意図しないタイミングで不正コードを実行する手段として悪用されてきた経緯がある。

Checkmarxによると、攻撃者はこの仕様変更に対応する形で手口を変化させたという。「indexed-btree」は、一般的なB-tree(データの検索や挿入を高速化する階層的なデータ構造)を扱う正規パッケージ「sorted-btree」を模倣して作られており、ライブラリ内の関数が実行されるタイミングで不正な処理を開始するよう設計されていた。

数百万ダウンロードを記録し多額の不正利益を獲得

調査によると、「indexed-btree」は2026年6月18日に「charlessadler25」というアカウントによってnpmレジストリへ初めて公開された。その後、削除されるまでの短期間の間に数百万回に及ぶダウンロードを記録した。

さらに、この攻撃キャンペーンを通じて、攻撃者は約109 ETH(約23万933.57ユーロ相当)にのぼる暗号資産の不正利益を得ていた可能性があると報告されている。なお、問題となったパッケージおよび関連するGitHubリポジトリ(INDEXED-BTREE)は、現在すでにnpmレジストリから削除されており、ダウンロードできない状態となっている。

メソッド呼び出しから始まる多段階のマルウェア感染

マルウェアのローダーは、ライブラリに含まれる「BTree.prototype.set()」メソッドの内部に隠蔽されていた。利用側のアプリケーションでこのメソッドが呼び出されると、難読化された第1ステージのペイロードを含むスクリプト「sharedLoad.min.js」が起動する。

起動したマルウェアは、まず感染先のマシンの環境情報を収集するフィンガープリンティング(対象端末の構成や設定情報を収集して特定する処理)を実行する。収集された情報は、あらかじめコード内に記述されていたSlackチャンネルやTelegramのボット宛てに送信される。

続いてマルウェアは、次段階のコード取得に「EtherHiding(ブロックチェーン上に不正コードを分散・隠蔽して配信する手法)」を採用していた。Ethereumのテストネットである「Sepolia」上に配置されたスマートコントラクトから暗号化されたデータブロックをダウンロードし、それらを結合することで第2ステージのペイロードを完成させる。最終段階では、生成した悪意あるファイル類を削除し、パッケージコード内からトリガーとなった記述を取り除くことで、自身の侵入痕跡を消去する処理まで組み込まれていた。

関連パッケージの存在と多層的な防御の必要性

Checkmarxの調査では、「indexed-btree」以外にも同一の攻撃者グループが関与したとみられる複数の不審なパッケージが特定されており、これらもすべてレジストリから削除された。確認された関連パッケージには以下のものが含まれる。

  • ordered-kv-index
  • btree-leaderboard
  • priority-slot-queue
  • btree-range-store
  • btree-core
  • btree-time-index
  • btree-lru-cache
  • neighbor-key-map
  • sliding-score-window
  • mutex-forge

セキュリティ企業SOCRadarのCISO(最高情報セキュリティ責任者)であるEnsar Seker氏は、The Hacker Newsに寄せた声明の中で、攻撃者がサプライチェーン防御の強化に対して即座に適応している実態を指摘している。同氏によると、npmがライフサイクルスクリプトを制限してインストール時の安全性を高めたのに対し、攻撃側は一見して正常に見える実行時の機能の中へと悪意ある処理を移すことで対抗したという。

Seker氏は、セキュリティ対策は攻撃の根本的な脅威を排除するものではなく攻撃者の行動を変化させる性質を持つと述べ、ライフサイクルスクリプトの遮断は重要であるものの、攻撃者は別の実行経路を模索し続けると説明している。その上で、導入時の検査やスクリプト遮断にとどまらず、プログラム実行中の振る舞いを監視するランタイム振る舞い分析(プログラムの動作時の挙動をリアルタイムに検知する手法)やデプロイ後の監視など、多層的な対策を講じる重要性を挙げている。

元URL