
記事とタイトルを更新し、「ワーム」という用語を削除しました。以下の更新を参照のこと。
npmで公開されている自動スパムペイロードは、7秒ごとに新しいパッケージを生成してレジストリをスパムし、大量のジャンクを作成する。
この複製ペイロードは、ランダムなインドネシア語の名前と食べ物用語を選ぶという特徴的なパッケージ名から「IndonesianFoods」と名付けられ、Sonatypeによると10万以上のパッケージを公開しており、その数は指数関数的に増加している。
これらのパッケージは、開発者にとって悪意のある要素(例えば、データを盗む、ホストをバックドアする)を持っていませんが、危険なペイロードを導入するアップデートによって変わる可能性があります。
自動化のレベルと攻撃の大規模な性質により、サプライチェーンが広範囲に侵害される可能性がある。
このスパムキャンペーンを最初に報告したセキュリティ研究者Paul McCartyは、問題のnpmパブリッシャーと彼らがプラットフォーム上でリリースしたパッケージの数を追跡するページを作成した。
Sonatypeによると、同じ行為者が9月10日にも「fajar-donat9-breki」という名前のパッケージで別の試みを行ったという。このパッケージには同じ複製ロジックが含まれていたが、拡散には失敗した。
「この攻撃は、複数のセキュリティ・データ・システムを圧倒し、前例のない規模を示しました」と、Sonatypeの主任セキュリティ研究者であるGarrett Calpouzosは述べている。
「Amazon InspectorはOSV勧告を通じてこれらのパッケージにフラグを立て、脆弱性報告の大波を引き起こしています。Sonatypeのデータベースだけで、1日に72,000の新しい勧告を見ました。”
研究者は、IndonesianFoodsは開発者のマシンに侵入することに重点を置いているのではなく、エコシステムにストレスを与え、世界最大のソフトウェアサプライチェーンを混乱させることに重点を置いているように見えるとコメントしている。
「動機は不明だが、その意味するところは注目に値する」とCalpouzos氏は指摘する。
IndonesianFoodsキャンペーンに関するEndor Labsのレポートによると、一部のパッケージはTEAプロトコルを悪用しているようだ。TEAプロトコルは、OSSへの貢献に対してTEAトークンで報酬を与えるブロックチェーンシステムで、TEAアカウントとウォレットアドレスが記載されたtea.yamlファイルが含まれている。
何千もの相互接続されたパッケージを公開することで、攻撃者はより多くのトークンを獲得するためにインパクトスコアを膨らませており、この攻撃の背後に金銭的な動機があることを示しています。

Source:Endor Labs
また、Endor Labsの報告によると、スパムキャンペーンは実際には2年前に始まっており、2023年に43,000のパッケージが追加され、2024年にTEAの収益化が実装され、2025年に自己複製ループが導入された。
IndonesianFoodsキャンペーンは、OpenVSXに対するGlassWorm攻撃、依存性の混乱伝播を採用したShai-Huludワーム、chalkやdebugのような広く使用されているパッケージのハイジャックなど、オープンソースのエコシステムに対するいくつかの同様の自動化ベースのサプライチェーン攻撃の文脈で行われる。
これらのインシデントの個々の被害は限定的ですが、攻撃者が自動化と規模を悪用してオープンソースのエコシステムを圧倒するようになっているという新しい傾向を浮き彫りにしています。
Sonatypeはまた、このような単純でありながらインパクトのある操作は、脅威行為者がより深刻なマルウェアをオープンソースのエコシステムに紛れ込ませるための理想的な条件を作り出すと警告しています。
攻撃が続く中、ソフトウェア開発者は、依存バージョンをロックダウンし、異常なパブリッシングパターンを監視し、厳格なデジタル署名検証ポリシーを導入することをお勧めします。
更新 11/14– AWSのリサーチャーも同じキャンペーンに関する観察レポートを発表し、現在npm上で150,000以上のパッケージを確認したと報告している。
更新 11/15–Socket.devによると、悪意のあるパッケージはnpmをスパムしており、自律的な伝播メカニズムを備えておらず、手動で起動する必要があるという事実を反映するために、記事のタイトルと内容が更新されました。したがって、「ワーム」という用語の使用は技術的に不正確であり、削除した。
.ia_ad { background-color:#width: 95%; max-width: 800px; margin: 15px auto; border-radius: 8px; border:1px solid #d6ddee; display: flex; align-items: stretch; padding: 0; overflow: hidden; }:0; overflow: hidden; } .ia_lef { flex: 1; max-width: 200px; height: auto; display: flex; align-items: stretch; } .ia_lef a { display: flex; width: 100%; height: 100%; } .ia_lef a img { width: 100%; height: 100%; border-radius: 8px 0 0 8px; margin: 0; display: block; } .ia_rig { flex: 2; padding:display: flex; flex-direction: column; justify-content: center; } .ia_rig h2 { font-size: 17px !important; font-weight: 700; color:#line-height: 1.4; font-family:margin: 0 0 14px 0; } .ia_rig p { font-weight: bold; font-size: 14px; margin: 0 0 clamp(6px, 2vw, 14px) 0; } .ia_button { background-color:#border:1px solid #3b59aa; color: black; text-align: center; text-decoration: none; border-radius: 8px; display: inline-block; font-size: 16px; font-weight: bold; cursor: pointer; padding:width: fit-content; } .ia_button a { text-decoration: none; color: inherit; display: block; } @media (max-width: 600px) { .ia_ad { flex-direction: column; align-items: center; } .ia_lef { max-width: 100%; } .ia_lef a img { border-radius: 8px 8px 0 0; } .ia_rig { padding:15px;
width: 100%;
}
.ia_button {
width: 100%;
margin: 0px auto;
}
}
秘密 セキュリティ・チートシート:スプロールからコントロールへ
古いキーのクリーンアップでも、AIが生成するコードのガードレールの設定でも、このガイドはチームが最初からセキュアに構築するのに役立ちます。
チートシートを入手して、秘密管理の手間を省きましょう。





Comments