サイバー脅威
NPMサプライチェーン攻撃の現状と分析
本稿では、進行中のNPMサプライチェーン攻撃に関する重要な詳細を明らかにし、潜在的な侵害から身を守るために必要な対応を提示しています。
- 攻撃者は、Node Package Manager(NPM)のメンテナーアカウントを侵害することを狙った標的型フィッシングキャンペーンを仕掛け、広く利用されているJavaScript パッケージに悪意あるコードを挿入したと報告されています。
- 特定の悪意あるパッケージは、Web APIを乗っ取り、ネットワークトラフィックを操作することで暗号資産を密かに奪取していました。
- 攻撃のペイロードの一つであるShai-huludワームは、改ざんされたパッケージを通じて配布され、クラウドサービスのトークンを窃取し、シークレットスキャンツールを展開し、さらに他のアカウントへと拡散します。
- トレンドマイクロのテレメトリーデータによると、Cryptohijackerと呼ばれるペイロードによって、北米と欧州の組織が特に大きな影響を受けていますが、Shai-huludワームの検知は現時点では確認されていません。
- Trend Vision One™ は、本稿で提示する侵入の痕跡(IOC)を検知・ブロックし、ユーザに向けてスレット(脅威)ハンティング用のクエリ、脅威インサイト、インテリジェンスレポートを提供しています。
2025年9月15日、Node Package Manager(NPM)リポジトリでサプライチェーン攻撃が進行中であることが確認されました。攻撃者は高度に標的化されたフィッシング攻撃キャンペーンを実行し、NPMパッケージのメンテナーアカウントを侵害しました。特権アクセスを得た攻撃者は広く利用されているJavaScriptパッケージに不正コードを挿入し、ソフトウェアの利用環境全体を脅かしました。特に、この攻撃によりアプリケーション開発や暗号処理に不可欠な複数の主要NPMパッケージが影響を受けています。
セキュリティ企業StepSecurityによると、この攻撃の背後にいる攻撃者は、先月発生したNxサプライチェーン攻撃でも同様の手法を用いていました。9月16日時点で、Socketのリサーチャーはすでに約500件の影響を受けたNPMパッケージを特定しています。
本稿では、トレンドマイクロが今回のNPMエコシステムにおける侵害の概要、企業のSOCチームが把握すべき点、そしてこの脅威を回避するための推奨されるセキュリティ対策を紹介します。
危険にさらされているパッケージの種類
今回の改ざんは、開発フレームワークや暗号処理機能を支える重要なJavaScriptライブラリに対して行われました。影響を受けたパッケージは、世界的に非常に高いダウンロード数を持つものであり、週あたり26億回以上の利用が確認されており、幅広いウェブアプリケーションや依存プロジェクトに影響を及ぼしています。
攻撃者による暗号資産の窃取
攻撃者はWeb APIを乗っ取り、ネットワークトラフィックを操作することで、正規のチャネルから自らが管理するウォレットに資金を密かに誘導しました。標的となったのは、侵害されたパッケージを利用する組織やエンドユーザです。
Shai-huludワームの機能
ペイロードの一つとして、「Shai-hulud」と名付けられた自己増殖型ワームがNPMレジストリで確認されました。名称は、フランク・ハーバートのSF小説『デューン/砂の惑星』(Dune)に登場する巨大な砂虫に由来しています。このワームは、開発者アカウントを侵害し、正規のパッケージに有害なコードを挿入することで拡散します。主な機能は以下の通りです。
- Stealing cloud service tokens (NPM, GitHub, AWS, GCP)
- クラウドサービスのトークン(NPM、GitHub、AWS、GCP)の窃取
- 機密情報の露出を探索するためのオープンソースのシークレットスキャニングツール「Trufflehog」のインストール
- 追加のパッケージやアカウントへの自動拡散
- 非公開リポジトリの暴露
これまでに影響を受けた対象
トレンドマイクロのテレメトリーデータによると、Cryptohijackerペイロードを利用した攻撃は複数の国で報告されていますが、主に北米と欧州で確認されています。Cryptohijackerはネットワークトラフィックを操作して暗号資産を不正に奪取する機能を持ち、組織やエンドユーザの資金を攻撃者のウォレットに誘導する特徴があります。広く採用されているJavaScriptライブラリに依存する組織や開発者が特に大きな影響を受けています。ただし、現時点でShai-Huludワームの検知は確認されていません。
セキュリティに関する推奨事項
進行中のNPMサプライチェーン攻撃に伴うリスクから開発ワークフローや機密資産を守るため、組織は以下の推奨されるベストプラクティスを通じて、積極的なセキュリティ体制を優先する必要があります。
- 依存関係の監査(特に最近更新されたパッケージ)。 すべての依存関係を確認し、特に最近変更されたものを精査し、侵害の可能性がある場合は削除またはロールバックを行います。
- 資格情報の失効と更新(特にNPMアカウント)。 流出した可能性のある認証情報やAPIキーを速やかに無効化し、優先度の高いアカウントから順に置き換えます。
- Trufflehogなどのスキャンツールの利用痕跡を監視。 ログを確認し、異常なリポジトリスキャン活動がないか調べるとともに、自身のコードベースを事前にスキャンして露出した機密情報を確認します。
- 公式NPMレジストリや信頼できる情報源の勧告を継続的に確認。 最新の修正や推奨アクションを速やかに適用できるよう、公式の勧告を定期的に確認します。
- アクセス権限とセキュリティポリシーの強化。 たとえば、リポジトリや自動化に影響するすべてのアカウントに最小権限の原則を適用し、さらにすべての開発者やCI/CDのアクセスには多要素認証(MFA)を義務付けます。
Shai-hulud攻撃チェーンの分析
ペイロードの一つとして、SF小説『デューン/砂の惑星』に登場する砂虫にちなんで「Shai-hulud」と名付けられた自己増殖型ワームがNPMレジストリで確認されました。トレンドマイクロでは、このShai-huludの動作メカニズムとNPMに依存する組織への影響について分析を行いました。
Shai-huludは自律的な複製能力を持つ点で際立っています。単なる感染にとどまらず、ワームのような拡散を行い、継続的に新たなパッケージや環境を探索して侵害します。
攻撃チェーン
Shai-huludの攻撃チェーンは、NPMのセキュリティアラートを装ったフィッシングメールから始まりました。開発者が認証情報を入力してしまい、攻撃者はその開発者のNPMアカウントを侵害して悪意のあるパッケージをアップロードしました。このパッケージがインストールされるとJavaScriptが実行され、Unixシェルスクリプトが組み込まれて永続化を確立し、情報窃取を開始しました。
窃取されたGitHubアクセストークンを利用し、このワームはGitHub APIに認証を行い、ユーザの権限を確認して被害者がアクセス可能なすべてのリポジトリを列挙しました。その中には非公開のものも含まれており、攻撃者のアカウントにクローンを作成し、それぞれのリポジトリに新しいブランチを作成して、データ窃取を自動化する悪意のあるワークフローを配置しました。
次にソースコードや構成ファイルに含まれる秘密情報(シークレット)を検出するオープンソースツールTruffleHogをダウンロードしてインストールし、ファイルからさらなる機密情報を探索・収集しました。盗まれたリポジトリはすべて公開され、その全履歴がミラーリングされました。機密データは自動化されたWebリクエストを介して攻撃者に送信されました。
この攻撃チェーンは、単一のアカウントが侵害されるだけで、悪意あるコードの拡散、認証情報の窃取、組織全体の開発環境における大規模なデータ漏洩へとつながることを示しています。
この脅威の広範な影響により、初期検知前に数百のパッケージが侵害された可能性があり、オープンソースの依存関係を採用することへの信頼が揺らぎました。自動化によって拡大可能な攻撃は、技術的なリスクだけでなくビジネスリスクも大幅に高め、一度展開されれば攻撃者が要する労力は最小限となります。
Shai-Huludの特徴
従来のソフトウェアサプライチェーン脅威は、単発のペイロードや標的型の認証情報窃取を伴うものが一般的でした。Shai-Huludは、NPMエコシステム内で自己複製できる点で異なります。ポストインストールスクリプトの機能を利用して二次感染や三次感染を成立させることが可能です。一度侵害されたパッケージがインストールされると、このワームは自動的に新たな標的への拡散を試み、初期展開後は攻撃者の介入を必要としない増殖型の脅威となります。
主な特性:
- 自己伝播 ― Shai-Huludはワームのように振る舞い、オープンソースコミュニティにおける既存の信頼関係を利用して、追加のNPMパッケージやプロジェクトを自動的に感染させます。
- 自律性 ― マルウェアは運用者の継続的な操作なしで動作し、より持続性が高く封じ込めが困難になります。
- 環境への影響 ― 開発環境やCI/CD環境に深く組み込まれることで、さらなる認証情報、トークン、ビルド関連の機密情報にアクセスする可能性を持ちます。
技術的手法
- ポストインストールの悪用 ― 主要な拡散メカニズムは不正なポストインストールスクリプトに基づきます。感染したパッケージが導入されると任意のコードが実行され、追加のペイロードをダウンロードしたり、他のプロジェクトや依存関係に不正なスクリプトを挿入したりする可能性があります。
- ネットワーク活動 ― ワームはリモートサーバーと通信し、データを外部送信したり更新を受信したりすることで、初期展開後も進化を続けます。
- 再帰的脅威ベクトル ― Shai-Huludは持続性を重視して設計されており、単発でプロジェクトを侵害するのではなく、依存関係が更新されても潜在的なリスクとして残り続けます。
NPMとオープンソースへのリスク
NPMの強みであり同時にリスクとなるのは、コミュニティ主導の膨大なパッケージネットワークです。Shai-Huludの自己複製型ワーム設計は、このコミュニティの信頼を直接的に標的とし、単一の攻撃者が非常に短時間で開発者やソフトウェアプロジェクトの大規模なセグメントに影響を与える可能性を浮き彫りにしています。
Shai-Hulud 分析
不正なワークフロー注入の解析
Shai-Huludワームは、ターゲットとなったリポジトリに不正なGitHub Actionsワークフローを注入する高度な手法を利用し、組織の開発環境全体で自動的な拡散とシークレットの持ち出しを可能にします。
実行時、Shai-Huludは次の準備を行います。
- 一貫性を保ち、リポジトリ間の感染を追跡しやすくするために、shai-hulud のようなブランチ名を割り当てます。
- 不正なワークフローファイルの配置先として以下を標的にします。
.github/workflows/shai-hulud-workflow.yml
- 不正な自動化ペイロードを含むYAMLワークフローファイルを生成するか取得します。
図2に示されるように、注入されたワークフローの主要な機能は、リポジトリのシークレットを体系的に収集して持ち出すことです。
- ワークフローはCI/CDの実行環境で露出しているすべてのシークレットを列挙します。
- これらのシークレットを送信向けにペイロードとしてまとめます。
- シークレットはHTTP(S)リクエストを介して攻撃者が管理するWebhookエンドポイントに送信されます。

Shai-Hulud はまた、GitHubのREST APIを悪用して水平移動を自動化し、永続化を確立します(図3)。ワームは利用可能な GitHub 認証トークンの有効性と権限を確認し、API とやり取りできるかどうかを検証します。

例えば、以下のような API リクエストを発行することで、ワームは侵害されたアカウントが十分な権限を有するリポジトリを特定します。所有者、コラボレーター、組織メンバーの役割でフィルタリングし、最近のアクティビティに注目します(図4)。
/user/repos?affiliation=owner,collaborator,organization_member&since=2025-01-01T00:00:00Z&per_page=100,

対象となる各リポジトリに対し、Shai-Hulud ワームは次の操作を行います。
- ブランチ作成。注入したワークフローを格納し悪意ある変更を分離するために、shai-hulud のような固有名のブランチを作成します(図5)。

- ワークフローファイルのアップロード。ワームは新しく作成したブランチに悪意ある YAML ファイルをアップロードし、ワークフローがトリガーされるたびに継続的なシークレット持ち出しが実行されるように設定します(図6)。

GitHub リポジトリのクローン解析
Shai-Hulud の攻撃チェーンには、組織内のプライベートな GitHub リポジトリを自動的にクローン、移行、公開して攻撃者のインフラへ露出させるプロセスが含まれます。以下のセクションでは、このクローン活動のプログラム的段階を概説します。
主なオーケストレーションロジックは、初期化からリポジトリ作成と露出に至る完全なクローンサイクルを統括します(図7)。

ワームはターゲット組織内で特定されたすべてのプライベートリポジトリを反復処理し、内部ロジックを用いて各リポジトリを解析・処理します(図8)。

初期チェックでは、組織名、ターゲットユーザ名、GitHub認証トークンなど、必要な入力の存在と有効性を確認し、API 準拠性とワークフローの信頼性を担保します(図9)。

API の対話は標準化された通信ラッパーの背後に抽象化されており、ベアラートークンや OAuthアプリによる認証管理、堅牢なエラー処理のためのHTTP GET、POST、PUT、PATCHの各メソッドのハンドリングを担当します(図10)。

プロセスはステルス性とインパクトを最大化するために、プライベートまたは内部リポジトリのみを対象とします。大規模な組織内の全リポジトリを列挙するために API ページネーションが実装されています(図11)。

検出された各リポジトリについて、ワームは攻撃者アカウント側に対応する宛先リポジトリを作成し、説明欄に「Shai-Hulud Migration」などの識別子を埋め込んで追跡可能にします(図12)。

作成後、被害者組織内でプライベートであったリポジトリは攻撃者の管理下で公開され、大量のデータ露出とフィンガープリンティングが可能になります(図13)。

盗用の価値を最大化するため、ワームは完全なミラークローンを実行し、コード内容だけでなくコミット履歴やブランチ履歴も含めて取得します。これにより二次攻撃や後続の悪用が容易になります(図14)。

これらの自動化された仕組みにより、Shai-Hulud はプライベートリポジトリから高感度な知的財産やソースコードを迅速に持ち出し、それらをさらなる情報露出、身代金要求、下流のサプライチェーン脅威に利用します。
TruffleHogによる認証情報収集
侵害後の活動の一環として、Shai-HuludはTruffleHogを利用して、侵害された環境内の認証情報やシークレットの発見を自動化します。ワークフローはまずTruffleHogの最新リリースを取得することから始まり、ダウンロード可能な最新バージョンをプログラム的に取得します(図15)。

適切なTruffleHogファイルが特定されると、ワームはバイナリをダウンロードし、被害端末のOSに応じて正しいバージョンを自動的に検出・展開します(図16)。

展開後、TruffleHogは環境にインストールされるか配置され、不正なワークフローから即座に利用可能な状態になります(図17、図18)。


マルウェアは続いて子プロセスを生成し、TruffleHogを呼び出してローカルファイルシステムや対象リポジトリの内容を高エントロピー文字列、キー、その他の機密情報についてスキャンします。この処理はメモリ上やランタイムコンテキスト内で行われ、永続的な検知を回避します。スキャン完了後、TruffleHogバイナリは痕跡隠滅のために削除され、フォレンジックの証跡を最小化します。
TruffleHogをこのように自動化して組み込むことで、Shai-Huludは持ち出されるシークレットの量と質を大幅に高めると同時に、攻撃ライフサイクル全体での運用上の隠蔽性を維持します。
Trend Vision One™ のスレットインテリジェンス
進化する脅威に先んじて対応するため、Trend Vision One™ の利用者はTrend Vision One™ Threat Insights にアクセスし、Trend Researchによる新たな脅威や攻撃者に関する最新情報を入手できます。
Trend Vision One Threat Insights
新たな脅威: Massive NPM Supply-Chain Attack: Phishing Hijack Leads to Malicious JavaScript Injection(大規模なNPMサプライチェーン攻撃: フィッシングによるハイジャックが悪意あるJavaScript注入につながる)
Trend Vision One Intelligence Reports (IOC Sweeping)
Massive NPM Supply-Chain Attack: Phishing Hijack Leads to Malicious JavaScript Injection(大規模なNPMサプライチェーン攻撃: フィッシングによるハイジャックが悪意あるJavaScript注入につながる)
ハンティングクエリ
Trend Vision One Search App
Trend Vision Oneの利用者は、Search Appを使用して本ブログで言及された不正なインジケータを自社環境のデータと照合またはハンティングすることができます。
マルウェアペイロードの検知
malName: (CRYPTOHIJACK OR ) AND eventName: MALWARE_DETECTION
その他のハンティングクエリも、Threat Insights機能が有効化されたTrend Vision Oneの利用者は利用可能となっています。
侵入の痕跡(IoC)
本稿に関連する侵入の痕跡はこちらで確認できます。
参考記事:
What We Know About the NPM Supply Chain Attack
By: Trend Micro
翻訳:与那城 務(Platform Marketing, Trend Micro™ Research)