Hackers Flooded npm Registry Over 43,000 Spam Packages Survived for Almost Two Years
2025/11/14 CyberSecurityNews — npm エコシステムを標的とする大規模な組織的スパム・キャンペーンを、セキュリティ研究者 Paul McCarty が発見した。このキャンペーンは、IndonesianFoods ワームと名付けられ、少なくとも 11 のユーザー・アカウントを用いて実行され、約2年間で公開された 43,000 件以上のスパム・パッケージで構成されている。これらのパッケージは npm レジストリ全体の 1% 以上を占め、アクティベーション待ちの状態で未検出のまま存続している。

このキャンペーンの規模は深刻である。悪意あるスクリプトを1回実行すると、1 分間に約 12 個のパッケージが公開され、1時間あたり約 720 個、1日あたり約 17,000 個のパッケージが生成される。
この攻撃は巧妙なネーミングスキームを利用しており、”andi”/“budi” や “rendang”/“sate”といったインドネシアの食品用語などを組み合わせ、さらにランダムな数字や “-kyuki”/“-breki” などのサフィックスを付加している。
例として挙げられるのは、”zul-tapai9-kyuki”/”andi-rendang23-breki” といったパッケージ名である。この特徴的なパターンは、リポジトリ内でカモフラージュ効果を発揮しながらも、追跡できる状態を維持している。
それぞれのパッケージは、標準的な Next[.]js プロジェクト構造/適切なコンフィグファイル/React および Tailwind CSS などの正規の依存関係や、専門的なドキュメントを含んでいるため、一見すると正当なパッケージに見えてしまう。しかし、”auto[.]js” または “publishScript[.]js” というスクリプト・ファイルに悪意のコンポーネントが存在し、パッケージ構造内では参照されずに潜伏している。
これらのパッケージは、2024年4月に初めて報告された攻撃の一部であると、ENDOR Labs のセキュリティ・アナリストたちが特定した。この攻撃では、オープンソース・コントリビューターへの報酬を目的とした、TEA プロトコルが悪用されていた。
このプラットフォームは、エコシステム参加者の暗号通貨報酬を追跡しており、それを悪用する攻撃者はスパム・キャンペーンを収益化していた。少なくとも1人のインドネシア人のソフトウェア・エンジニアがメンテナとして関与していると見られ、この攻撃の地域特異性を示している。
ワームの自己複製メカニズム
IndonesianFoods ワームは、依存関係チェーンを通じた特に巧妙な拡散メカニズムを備えている。
node auto[.]js のようなコマンドで悪意のスクリプトが手動実行されると、3つの連続した動作がそれに連なる。最初に、package[.]json ファイルから private: true フラグを削除する。それは開発者がプロプライエタリ・コードの誤公開を防ぐための保護機能である。
続いて、”2.3.1″ などのランダムなバージョン番号を生成し、npm の重複検出システムを回避する。最後に、package[.]json/package-lock[.]json ファイルを更新し、npm publish –access public を実行する。それにより、7~10 秒周期でレジストリに新しいパッケージが大量に追加される。
この攻撃が特に危険なのは、各スパム・パッケージが 8~10 個の追加スパム・パッケージを依存関係として参照している点である。そのため、被害者である開発者が汚染されたパッケージをインストールすると、その依存関係ツリー全体を自動的に取得する npm は、100 を超える関連スパム・パッケージを連鎖的に取り込む可能性がある。
その結果として、1つのパッケージをインストールするだけで、レジストリ全体に悪意のパッケージが指数関数的に拡散するリスクが生じる。さらに、これらのパッケージの中には、週数千回ダウンロードされるものもあり、攻撃者による将来のアップデートにおいて実際の悪意のコードが注入されると、多数のインストールに影響を与える機会が生じる。
さらに、TEA トークン報酬によるマネタイズの側面は、攻撃者が恣意的に生成したエコシステムを通じて暗号通貨が獲得されていることを示しており、一部のパッケージでは獲得したトークンの金額をドキュメントで公表している。それが裏付けるのは、2年間にわたる組織的な攻撃の背後にある金銭的な動機である。
npm を悪用する大規模なスパム拡散の原因が、パッケージに仕込まれた自動公開スクリプトにあることが判明しました。正規のプロジェクト構造を装いながら参照されない悪意のスクリプトを紛れ込ませ、その実行により、大量のパッケージが連続的に公開されるという仕組みに注目すべきなのでしょう。また、依存関係チェーンにスパムを組み込むことで、開発者が気づかないうちに、大量のパッケージを取り込んでしまう点も深刻です。ご利用のチームは、ご注意ください。よろしければ、npm で検索を、お試しください。
You must be logged in to post a comment.