npmエコシステムにおけるShai-Hulud攻撃キャンペーンに関する調査レポート

npmエコシステムにおけるShai-Hulud攻撃キャンペーンに関する調査レポート

宛先: シニアセキュリティコンサルタント
作成者: AIリサーチアシスタント
作成日: 2025年09月18日
件名: 詳細調査レポート:npmサプライチェーン攻撃「Shai-Hulud」キャンペーン


1. はじめに

本レポートは、2025年9月中旬にnpmエコシステムで観測された大規模なソフトウェアサプライチェーン攻撃キャンペーン「Shai-Hulud」に関する徹底的な調査結果をまとめたものです。この攻撃は、npm史上初とされる自己増殖(ワーム)機能を持つマルウェアを利用した点で特筆すべき事案であり、JavaScriptエコシステム全体に深刻な影響を及ぼしました。

本レポートでは、収集した複数のセキュリティベンダーの分析情報を基に、以下の項目に重点を置いて詳細を解説します。

本調査は、貴殿がクライアントに対して正確かつ実用的なセキュリティアドバイスを提供するための一助となることを目的としています。

2. 攻撃の概要

Shai-Huludキャンペーンは、2025年9月14日頃から観測された高度なサプライチェーン攻撃です。攻撃者は、盗んだnpmメンテナーの認証情報(トークン)を利用して、@ctrl/tinycolorngx-bootstrapなど多数の人気npmパッケージに悪意のあるバージョンを公開しました。

この攻撃の最大の特徴は、マルウェアがワームのように自己増殖する点にあります。一度悪意のあるパッケージがインストールされると、マルウェアは開発環境内の他のnpmトークンを探し出し、そのトークンが持つ権限を利用してさらに別のパッケージにマルウェアを注入し、自動的に拡散します。これにより、被害が連鎖的に拡大しました Self-replicating Shai-hulud worm spreads token stealing malware on ...

攻撃の名称「Shai-Hulud」は、攻撃者が作成したGitHubリポジトリやワークフローファイルの名前に由来しており、小説『デューン/砂の惑星』に登場する巨大な砂虫への言及です Ongoing Supply Chain Attack Targets CrowdStrike npm Packages...

3. 攻撃手法の詳細分析

Shai-Hulud攻撃は、複数の高度な手法を組み合わせた多段階の攻撃です。

3.1. 初期侵入とマルウェアの埋め込み

攻撃の起点となった開発者アカウントの正確な侵害方法は特定されていませんが、過去の類似事例からフィッシング攻撃や他の攻撃で漏洩した認証情報(トークン)が悪用された可能性が高いと推測されています Self-Replicating 'Shai-hulud' Worm Targets NPM Packages

攻撃者は、侵害したアカウントの権限を使い、管理下にあるパッケージのpackage.jsonpostinstallスクリプトを追加しました。このスクリプトはnpm install時に自動的に実行され、難読化された巨大なJavaScriptファイルbundle.js(マルウェア本体)を起動させます Shai-Hulud: The novel self-replicating worm infecting hundreds of ...

3.2. 情報窃取 (Credential Harvesting)

bundle.jsが実行されると、まず開発環境からの機密情報の窃取を試みます。

3.3. 自己増殖(ワーム)機能

本攻撃キャンペーンを際立たせているのが、この自己増殖メカニズムです。

  1. マルウェアは、窃取したNPM_TOKENが有効かnpm whoamiで検証します。
  2. 有効なトークンが見つかると、そのトークンの所有者(メンテナー)が管理するパッケージのリストを取得します。
  3. ダウンロード数が多い上位20パッケージを標的に、既存のパッケージをダウンロードし、マルウェア本体(bundle.js)を注入します。
  4. バージョンをインクリメントし、改竄したパッケージをnpm publishコマンドで強制的に公開します。

このプロセスにより、1つのアカウントの侵害が、そのアカウントが管理する多数のパッケージの侵害へと自動的に連鎖し、感染が爆発的に拡大しました Self-replicating worm hits 180+ npm packages in (largely ...

3.4. 永続化とデータ漏洩 (Persistence and Exfiltration)

攻撃者は、窃取した情報を複数の経路で外部に送信し、永続化を図ります。

4. 影響範囲

この攻撃の影響は広範囲に及び、多くの開発者と組織が被害を受けました。

4.1. 影響を受けたパッケージ

2025年9月18日現在、**数百(187から500近く)**のパッケージが影響を受けたと報告されています。特に影響が大きかったのは以下のパッケージです。

その他、@nativescript-community, @operato, @teselagenなど、多数のスコープにまたがるパッケージで悪意のあるバージョンが確認されています。詳細なリストは各セキュリティベンダーのレポートに記載されています Shai-Hulud npm Supply Chain Attack | Wiz Blog

4.2. タイムライン

Socket.devの分析によると、攻撃は複数の波に分かれて行われました Ongoing Supply Chain Attack Targets CrowdStrike npm Packages...

5. 推奨対応とベストプラクティス

この攻撃への対応として、緊急対応と将来的な予防策の両方が不可欠です。

5.1. 緊急対応 (Immediate Actions)

もし影響を受けたパッケージをインストールした可能性がある場合、以下の対応を即時実施してください。

  1. 影響の特定:

    • プロジェクトの依存関係をスキャンし、影響を受けるパッケージとバージョンが含まれていないか確認します。npm ls <package-name>package-lock.jsonファイルを確認してください。
    • Snyk、Socket、Semgrep Supply ChainなどのSCAツールを利用して、環境全体をスキャンします Embedded Malicious Code in tinycolor and ngx-bootstrap releases ...
  2. パッケージの削除と再インストール:

    • 影響を受けるパッケージバージョンをプロジェクトから削除します。
    • node_modulesディレクトリとロックファイルを削除し、npm cache clean --forceを実行した上で、安全なバージョンをピン留めして再インストールします。
  3. クレデンシャルのローテーション:

    • 最重要: 影響を受けた可能性のあるマシン(開発者のローカル環境、CI/CDサーバーなど)に保存されていた全てのクレデンシャルを信頼できる別のクリーンなマシンから失効させ、再生成します。
    • 対象: GitHub PAT, npmトークン, AWS/GCP/Azureのキー, SSHキー, その他のAPIキー。
  4. 侵害の痕跡 (IoC) の調査:

    • GitHub: セキュリティログを確認し、Shai-Hulud, shai-huludブランチ、*-migrationといった名前を持つ不審なリポジトリやブランチ、shai-hulud-workflow.ymlワークフローが作成されていないか監査します。
    • ネットワークログ: CI/CDサーバーや開発マシンからhxxps://webhook.site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7へのアウトバウンド通信がないか確認します Popular Tinycolor npm Package Compromised in Supply Chain At...
    • npm: npm view <package-name> timeコマンドで、身に覚えのないバージョンが公開されていないか確認します。

5.2. 予防策とベストプラクティス

将来のサプライチェーン攻撃のリスクを低減するため、以下のベストプラクティスを導入することを強く推奨します。

  1. 依存関係のセキュアな管理:

    • バージョンの固定 (Version Pinning): package-lock.jsonyarn.lockをバージョン管理に含め、依存関係のバージョンを厳密に固定します。これにより、意図しないバージョンのインストールを防ぎます Unpacking the Largest NPM Breach: Shai-Hulud Attack Explained Excalidraw: ...
    • postinstallスクリプトの無効化: npm install --ignore-scripts を利用して、インストール時のスクリプト実行をデフォルトで無効にすることを検討します。ただし、ビルドに必要な正当なスクリプトもあるため、プロジェクトごとに影響を評価する必要があります。
    • pnpmの利用検討: pnpmパッケージマネージャには、公開されてから一定期間が経過するまでインストールを許可しないminimumReleaseAgeという機能があり、ゼロデイ攻撃のリスクを低減できます Security Advisory | NPM Packages Using Secret Scanning Tools to ...
  2. 認証と権限の強化:

    • フィッシング耐性MFAの導入: npmやGitHubのアカウントには、パスワードだけでなく、FIDO2/WebAuthn対応のセキュリティキーを用いた多要素認証を必須とします。
    • トークンの権限最小化: npmやGitHubのアクセストークンを発行する際は、必要な操作(例: 読み取り専用)にスコープを限定し、有効期限を設定します。
    • Trusted Publishersの利用: npmのTrusted Publishers機能を利用し、CI/CD環境からトークンレスでパッケージを公開する仕組みを導入することで、トークン漏洩のリスクを根本的に排除します。
  3. 継続的な監視と検知:

    • サプライチェーンセキュリティツールの導入: Socket, Snyk, Semgrep, MendなどのツールをCI/CDパイプラインに統合し、悪意のあるコードや不審な挙動(postinstallでのファイルシステムアクセスやネットワーク通信など)をプロアクティブに検知します。
    • ランタイムセキュリティ: Sysdig SecureやFalcoなどのツールを用いて、開発環境やCI/CD環境での不審なプロセス実行やネットワークアクティビティをリアルタイムで監視します Shai-Hulud: The novel self-replicating worm infecting hundreds of ...
    • プライベートレジストリの活用: JFrog ArtifactoryやSonatype Nexusのようなプライベートレジストリをプロキシとして利用し、承認されたパッケージのみを内部で使用するポリシーを適用します。

6. まとめと今後の展望

Shai-Hulud攻撃キャンペーンは、npmエコシステムにおけるサプライチェーン攻撃の脅威が新たな段階に入ったことを示す象徴的なインシデントです。単なるクレデンシャルスタッファーやタイポスクワッティングに留まらず、自己増殖するワームという古典的でありながら強力な手法が、現代のソフトウェア開発基盤を標的にしたことは、我々が依存するオープンソースエコシステムの脆弱性を改めて浮き彫りにしました。

この攻撃は、8月下旬に観測されたs1ngularity/Nx攻撃と多くの手口を共有しており、攻撃者が継続的に戦術を進化させていることを示唆しています Self-replicating worm hits 180+ npm packages in (largely ...

開発者および組織は、もはや「信頼できる」という前提でオープンソースパッケージを利用することはできません。本レポートで提示した推奨対応を迅速に実施するとともに、多層的な防御戦略を開発ライフサイクル全体に組み込むことが、今後ますます重要になります。サプライチェーンセキュリティは一度きりの対策ではなく、継続的な監視、教育、そして改善プロセスの実践が不可欠です。


7. 参考資料

Google検索

Youtube検索

(本レポートは提供された検索結果のみを基に作成されており、追加の外部情報やモデル内部の知識は使用していません。)