Self-replicating worm hits 180+ npm packages in (largely) automated supply chain attack
2025/09/16 HelpNetSecurity — npm レジストリで公開されているパッケージに対し、自己複製のワーム型ペイロードを展開するという、大規模なサプライチェーン攻撃が進行している。このワームは、侵害したパッケージの実行環境から被害者の認証情報を窃取し、その内容を攻撃者が管理する公開 GitHub リポジトリに送信するものであり、Shai-Hulud と呼称されている。そして、窃取した npm 認証トークンを用いて感染と侵害のサイクルを維持し、さらに侵害した GitHub トークンを利用して、非公開リポジトリを公開することが確認されている。

GitHub と npm の関係:npm トークンについて
npm は JavaScript のパッケージ・マネージャであり、数百万の JavaScript/Node.js パッケージをホストするオンライン・リポジトリ (npmjs.com) である。そして、それらのパッケージの大半が、GitHub リポジトリからビルドされている。
2020年に GitHub が npm Inc を買収した後は、npm レジストリは事実上 GitHub 傘下で運営されている。そのため、開発者は GitHub 経由で npmjs.com にログインし、レジストリへの公開に用いる npm アクセス・トークンを生成する。これらのトークンはローカル (開発者マシン) または CI/CD (例: GitHub Actions) に保存される。
Shai-Hulud ワーム
ReversingLabs のリバース・エンジニアである Karlo Zanki は「Shai-Hulud ワーム自体は、3MB を超える巨大な JavaScript ファイルである。しかし、その動作は、きわめてシンプルなものである」と説明している。
npm 開発者アカウントを侵害したワームは、そのメンテナーが管理する他のパッケージを探索して自身を注入し、新しいバージョンを公開する。それらの新たに作成されたパッケージは、インストール後のアクションで bundle.js を実行するように改変されるものである。それによりワームは、新たな被害者から認証情報を収集して、同様の手順を繰り返すことで拡散していく。
このワームは TruffleHog などの正規スキャンツールを利用して、GitHub 個人アクセス・トークン/AWS アクセスキー/GCP サービス認証情報/Azure 認証情報/npm 認証トークンなどのシークレットを探索する。そして、収集された認証情報は悪意のスクリプトにより検証され、GitHub トークンが発見された場合には、Shai-Hulud という公開リポジトリを作成し、収集データ (二重 base64 エンコード済) を /user/repos API 経由でアップロードする。
Wiz の研究者は「このワームは、アクセスが可能な全てのリポジトリに新しい GitHub Actions ワークフローをプッシュする。このアクションにより、それぞれのリポジトリのシークレットが、攻撃者が管理する “webhook.site” に送信される」と説明している。
このワームは、さらに被害者の GitHub アカウントを調査して、プライベート・リポジトリを公開し、リポジトリ名に “-migration” サフィックスを追加し、その説明文を Shai-Hulud Migration に変更する。
S1ngularity 攻撃は Shai-Hulud 攻撃の前兆だったのか?
StepSecurity が公開しているのは、影響を受けるパッケージの最新リストであり、その件数は時間ごとに増加中である (執筆時点で確認された件数は 187 件) 。
ReversingLabs は、「最初に感染したパッケージは、”rxnt-authentication” だと特定している。このパッケージの、悪意のバージョン 0.0.3 は、9月14日 17:58:50 (UTC) に公開されている。そのメンテナーである techsupportrxnt が、感染者 0 号だと推測される」と発表している。
Aikido Security の研究者 Charlie Eriksen は、「この攻撃の最も顕著な特徴は、真のワームのように振る舞う点である。この攻撃者は、個々のパッケージを標的化する必要がない。1つの環境を侵害できれば、メンテナーの公開権限を悪用するワームが拡散を自動化する」と指摘している。
現時点において、この攻撃の背後にいる人物は不明であるが、2025年8月に発生した S1ngularity 攻撃との類似点は無視できない。そのときの攻撃では、Nx ビルド・システム・パッケージの悪意あるバージョンが、npm レジストリへ向けて配信されていた。
どちらのケースでも、攻撃者は以下のアクションを実施している。
- 窃取したデータを、被害者の GitHub アカウント内の公開リポジトリへ流出。
- 侵害した GitHub トークンを利用して、被害者の非公開リポジトリを公開に変更。
- Linux または macOS を使用する開発者のみを標的にする。
最近では、広く利用される 18 個の npm パッケージに、暗号通貨窃取コードが注入されるという、サプライチェーン侵害が発生している。それらが、npm レジストリへアップロードされたことで、このエコシステムに大きな問題が生じている。
Shai-Hulud ワームが npm パッケージを介して自己複製し、認証情報を窃取するという、サプライチェーン攻撃が進行中とのことです。原因は、npm と GitHub における、トークン管理にあります。具体的には、侵害した開発者アカウントのトークンを使って、別のパッケージに自身を注入し、公開権限を悪用して感染を広げています。また、GitHub Actions の仕組みを利用してシークレットを収集し、公開リポジトリに送信する動作も確認されています。それにより、非公開リポジトリの強制公開や認証情報の流出といった被害につながると、この記事は指摘しています。よろしければ、Shai-Hulud で検索も、ご参照ください。

You must be logged in to post a comment.