npmエコシステムで新たに明らかになった大規模なスパムキャンペーンにより、パッケージレジストリのセキュリティ、依存関係の衛生管理、オープンソースのインセンティブプロトコルにおける重大な弱点が露呈した。
セキュリティ研究者のPaul McCarty氏は明らかにした、4万3000個を超える悪意ある、またはスパム目的のパッケージ(総称してIndonesianFoodsワームと呼ばれる)が、2年にわたり少なくとも11個のnpmアカウントから検知されることなく公開されていた。
これらのパッケージにはアクティブなマルウェアは含まれていなかったものの、休眠状態のペイロードを埋め込み、自己増殖する依存関係ネットワークを形成していた。npmエコシステム全体の1%超に相当する規模だ。
その存在は、オープンソースエコシステムにおけるより強固なサプライチェーン防御、自動検知、ガバナンスの必要性が高まっていることを浮き彫りにしている。
数千個のスパムパッケージが正規品に見えた理由
IndonesianFoodsワームは、その独特な命名規則にちなんで名付けられた。
各パッケージは、インドネシア人の名前(例:andi、budi、zul)とインドネシア料理の語(例:sate、rendang、tapai)を組み合わせ、さらに数字や接尾辞を変化させて名前を生成する。
この手法により、パターン化されながらももっともらしい名前を持つ、一見無関係なパッケージが数万個も生み出された。
Endor Labsの研究者は突き止めた、このキャンペーンが、オープンソースへの貢献に対するブロックチェーンベースの報酬システムであるTEAプロトコルを悪用しようと攻撃者が試みた、2024年に初めて確認された攻撃と関連していることを。
増殖するスパムパッケージ
これらのパッケージは表面上は正規品に見える。実際に動作するNext.jsテンプレートと実在する依存関係を含むことも多いが、ペイロードは休眠状態にある。
各パッケージには未使用のJavaScriptファイルが含まれており、通常はauto.jsまたはpublishScript.jsという名前が付けられている。
手動で実行すると、このスクリプトはプライバシー保護を解除し、バージョン番号をランダム化し、新たにランダムなパッケージ名を生成したうえで、無限ループで新しいパッケージをnpmに繰り返し公開する。
1回の実行で1日あたり1万7000個を超えるパッケージを公開できるため、キャンペーンが約4万4000件にまで拡大した経緯が説明できる。
問題をさらに悪化させたのは、各スパムパッケージがしばしば、別のスパムパッケージを参照する8~10個の依存関係を含んでいたことだ。これにより、ワームのような拡散メカニズムが生まれた。
開発者がこのようなパッケージを1つインストールすると、npmが自動的にさらに数十個を取得するため、キャンペーンの影響範囲がエコシステム全体で増殖する。
TEAトークンの操作によるNPMスパムの収益化
研究者はさらに、攻撃者が管理するパッケージに埋め込まれたtea.yamlファイルも発見した。これらのファイルは、特定のTEAアカウントと暗号資産ウォレットアドレスを参照していた。
これらのファイルは、TEAのインパクトスコアを人為的に引き上げ、正当なオープンソース貢献を対象としたトークン報酬を獲得するために設計されたものとみられる。
少なくとも1つのパッケージのドキュメントでは、こうしたトークン収益が公然と宣伝されている。この収益化レイヤーは、TEAの報酬モデルを悪用して金銭的利益を得るための組織的な取り組みであり、孤立した偶発的な悪用ではないことを示している。
キャンペーンが検知されなかった理由
このキャンペーンが約2年にわたって検知を逃れたのは、現在のセキュリティスキャン手法に弱点があったためだ。
自動スキャナーの大半は、postinstallフックや不審なファイルシステム操作など、インストール中に実行される悪意あるコードに焦点を当てている。
これらのパッケージにはアクティブなマルウェアがなく、インストール時の活動も発生しなかったため、無害に見えた。
さらに、休眠状態のペイロードファイルはどのコードパスからも参照されておらず、スキャナーには未使用のアーティファクトとして扱われた。
npmにおけるレート制限の欠如、メタデータ分析の不足、大量公開されたパッケージを対象とするパターン検知の不在も、キャンペーンの長期化に拍車をかけた。
エコシステム全体を操作する新たな潮流
IndonesianFoodsワームは、オープンソースエコシステムにおける複数の構造的問題を浮き彫りにしている。
大規模で兆候の少ないスパムは、レジストリの品質を低下させ、依存関係ツリーを肥大化させ、開発者の信頼を損なう可能性がある。
この攻撃はまた、攻撃者が直接マルウェアを展開するのではなく、TEAトークンのマイニングなど、代替的な収益源を悪用する意欲をますます強めていることを示している。
複数のアカウントの協調、進化する亜種、依存関係をまたぐ拡散と相まって、このキャンペーンは、従来の価値の高いパッケージの侵害ではなく、戦略的でエコシステム全体を対象とする操作への移行を示している。
大規模なパッケージ悪用に対する必須の防御策
自社がIndonesianFoods npmスパムキャンペーンの影響を受けているか評価する組織は、ソフトウェアサプライチェーンを守るため、先を見越した体系的なアプローチを取らなければならない。
これらのパッケージは大規模に運用されながら、約2年間休眠状態のまま検知されなかったため、従来のインストール時スキャナーだけでは不十分だ。
アクセス制御の強化、依存関係の可視性向上、レジストリレベルの防御強化は、同様の悪用を将来防ぐために不可欠な措置である。
- 侵害されたアカウントの既知の一覧と依存関係を照合し、不審なパッケージを削除する。
- npm publishの権限をCI/CDシステムと承認済みメンテナーに限定し、悪意あるスクリプトの偶発的な実行を防ぐ。
- 休眠ファイル、通常とは異なる命名パターン、循環依存構造を検知できるソフトウェア構成分析(SCA)を適用し、
- 異常な公開動作を監視してレート制限を導入するか、大量のパッケージ送信にCAPTCHAを導入する。
- 大規模な公開活動に関与するnpmアカウントには、より強固な本人確認を義務付ける。
アクセス制御を強化し、依存関係の可視性を高め、レジストリの保護策を強化することで、組織とエコシステムの管理者はサプライチェーンリスクを低減し、サイバーレジリエンスを構築できる。
オープンソースのサプライチェーン悪用、新時代へ
IndonesianFoodsキャンペーンは、規模、持続性、そしてオープンソースのインセンティブを巧妙に悪用することで、攻撃者が何年にもわたり気づかれずに活動できることを示している。
パッケージには直ちに悪用可能なコードがなかったものの、その規模、ワームのような依存関係構造、収益化戦略は、サプライチェーンスパムの高度化が進んでいることを明らかにしている。
現代のソフトウェアサプライチェーンセキュリティは、それを標的とする脅威と同じ速さで進化しなければならない。





