自己伝播ワーム「Shai-Hulud」、大部分を自動化したサプライチェーン攻撃で180件超のnpmパッケージを侵害
The Register – Tue 16 Sep 2025
npmプラットフォームを標的とした新たなサプライチェーン攻撃について、複数のセキュリティ企業が報告。自己伝播を行うワーム性能を特徴とするこの攻撃ではすでに187件のパッケージが侵害されており、その数は今後も増えていく恐れがあるという。
9月15日、SocketとStep Securityが最初にこの攻撃に関するレポート記事を公開。週あたりのダウンロード数220万超のパッケージ「@ctrl/tinycolor」に悪意あるアップデートが加えられていたこと、この感染はその他40以上のパッケージにも影響を与えているサプライチェーン攻撃の中で発生していたことなどが明かされていた。しかし16日、Aikido社はブログ記事の中で、さらに147件の侵害されたパッケージを観測したと報告。またこれらの感染パッケージの中には、セキュリティ大手CrowdStrikeのものも含まれると伝えた。
Socketによれば、侵害されたバージョンには関数「NpmModule.updatePackage」が含まれており、この関数によりパッケージのタールボールのダウンロード、package.jsonの修正、ローカルスクリプト「bundle.js」の注入、アーカイブのリパック、再公開が行われることで、「下流パッケージのトロイの木馬化」を自動化できるようになっているという。
ワームマルウェア「Shai-Hulud」
この攻撃のコアとなるのは、Shai-Huludと名付けられた前述の「bundle.js」ファイル。Aikidoによれば、このワームマルウェアは大きく分けて以下5つの働きをするという。
- 収集:感染npmをダウンロードした開発者のマシンでシークレットやシステム情報、認証情報を探索。正規のシークレットスキャナーであるTruffleHogが使われ、AWSキー、GCPおよびAzureサービスの認証情報、GitHubの個人アクセストークン、クラウドのメタデータエンドポイント、npm認証トークンを探す。
- 抜き取り①:侵害されたアカウントの下に「Shai-Hulud」というGitHubリポジトリを作成し、システム情報、環境変数、収集されたシークレットを含むJSONダンプをコミット。
- 抜き取り②:GitHub Actionsワークフローを「.github/workflows」に書き込み、収集した情報を攻撃者のwebhook[.]siteのURLへPOST送信。
- 伝播:感染先マシンで見つけ出した有効なnpmトークンを使い、感染した開発者が管理しているパッケージを列挙し、悪意あるアップデートを加える。これにより連鎖的な侵害効果を生じさせ、npmレジストリ全体の依存関係エコシステムに悪意のあるバンドルが再帰的に注入されることになる。
- 増幅:被害ユーザーのアクセス可能なリポジトリをイテレートし、これを公開するかworkflow/branchを追加。workflow/branchによりさらなる実行とリークがトリガーされる。
Shai-Huludのnpmを通じた自己伝播
npmを悪用した一般的なサプライチェーン攻撃では、感染したパッケージのみがマルウェア拡散に使われるが、Shai-Huludの場合はそうではない。同ワームのコードは、侵害済みの開発者が保有するその他のnpmパッケージの中にも自らを再公開できる設計になっているという。
Aikidoは、ワーム性能のロジックを以下のように説明している。
- ターゲットタールボールのダウンロード:npmレジストリから既存のパッケージバージョンを取得する。
- package.jsonの修正:パッチバージョンをバンプ(例:1.2.3→1.2.4など)し、新たなライフサイクルフック(postinstall)を挿入する。
- 自らのペイロードのコピー:実行スクリプトをbundle.jsとしてタールボール内に書き込む。これにより、あるパッケージに注入されたコードが次のパッケージにも確実に含まれることになる。
- トロイの木馬化されたパッケージの再公開:修正されたタールボールをgzip圧縮し、開発者の認証情報を使ってnpmへプッシュバックする。
上記のサイクルにより、感染した開発者がアクセス権を有しているすべてのパッケージが継続的にShai-Huludに侵害されることになるという。つまり、誰かが侵害されたパッケージをインストールするとワームが起動して自己複製し、感染した開発者の公開権限を使ってnpmエコシステム内でさらなる自己伝播を行う仕組みになっているとされる。
CrowdStrike関連のパッケージにも影響
Shai-Huludに侵害されたパッケージの中には、CrowdStrikeに関連する以下のパッケージおよびバージョンが含まれていたとされる。
- @crowdstrike/commitlint(8.1.1, 8.1.2)
- @crowdstrike/falcon-shoelace(0.4.1, 0.4.2)
- @crowdstrike/foundry-js(0.19.1, 0.19.2)
- @crowdstrike/glide-core(0.34.2, 0.34.3)
- @crowdstrike/logscale-dashboard(1.205.1、1.205.2)
- @crowdstrike/logscale-file-editor(1.205.1、1.205.2)
- @crowdstrike/logscale-parser-edit(1.205.1、1.205.2)
- @crowdstrike/logscale-search(1.205.1、1.205.2)
- @crowdstrike/tailwind-toucan-base(5.0.1、5.0.2)
- eslint-config-crowdstrike(11.0.2、11.0.3)
- eslint-config-crowdstrike-node(4.0.3、4.0.4)
- remark-preset-lint-crowdstrike(4.0.1、4.0.2)
同社の広報担当者はこれについて、この件が検出されたのち、速やかにこれらを削除し、公開レジストリにおける自社のキーをローテーションしたと述べた。また同社製品「Falcon」にこれらのパッケージは使われておらず、Falconプラットフォームは影響を受けていないこと、顧客は引き続き保護されていることも請け合った上で、「NPMと協力し、徹底的な調査を実施しているところです」と語っているとのこと。
Socketの研究者らはユーザーに対し、侵害されたバージョンをアンインストールすることを推奨。またメンテナには、このサプライチェーン攻撃で影響を受けていないことが確認されたバージョンをピン留めすることを勧めている。なお、現時点までにわかっている影響を受けたパッケージの一覧は、Aikidoのブログ記事で確認できる。
【無料配布中!】インテリジェンス要件定義ガイド
インテリジェンス要件定義に関するガイドブック:『要件主導型インテリジェンスプログラムの構築方法』
以下のバナーより、優先的インテリジェンス要件(PIR)を中心とした効果的なインテリジェンスプログラムを確立するためのポイントなどを解説したSilobreaker社のガイドブック『要件主導型インテリジェンスプログラムの構築方法』の日本語訳バージョンを無料でダウンロードいただけます。
<ガイドブックの主なトピック>
本ガイドブックでは、優先的インテリジェンス要件(PIR)の策定にあたって検討すべき点と、PIRをステークホルダーのニーズに沿ったものにするために考慮すべき点について詳しく解説しています。具体的には、以下のトピックを取り上げます。
- 脅威プロファイルの確立
- ステークホルダーの特定・分析
- ユースケースの確立
- 要件の定義と管理
- データの収集と処理
- 分析と生産
- 報告
- フィードバック
- 実効性の評価