Shai-Hulud 2.0は、npmの複数パッケージにおいてpackage.jsonにpreinstallスクリプトsetup_bun.jsを追加する形で実行されるサプライチェーン攻撃である。setup_bun.jsはBunランタイムを確認またはインストールし、bun_environment.jsを実行してGitHub Actions Runnerアーカイブを取得し、SHA1Huludという名前のランナーを設定する。攻撃ではTruffleHogやRunner.Listenerが使用され、クラウド認証情報などの秘密情報が収集・流出する。一部のコミットにはLinus Torvalds名義が使われた例があり、Zapier、PostHog、Postmanなどのプロジェクトメンテナーアカウントも影響を受けた。Microsoft Defender for Containersは「Suspicious usage of the shred command on hidden files detected」や「Sha1-Hulud Campaign Detected – Possible command injection to exfiltrate credentials」などのアラートで検出し、Microsoft Defender XDR、Microsoft Defender for Endpoint、Microsoft Defender for Cloud、Microsoft Sentinel、Microsoft Security Copilotなどの製品が関連する検出・調査・防御機能を提供している。
From:
Shai-Hulud 2.0: Guidance for detecting, investigating, and defending against the supply chain attack
【編集部解説】
今回のShai-Hulud 2.0攻撃が示すのは、開発プロセスそのものが攻撃対象になる時代への突入です。2025年11月下旬(21日頃から)に700以上のnpmパッケージと25,000以上のGitHubリポジトリが侵害されたこの事案は、従来型のマルウェアとは根本的に異なる性質を持っています。
最大の特徴は、npm の preinstall フェーズで実行される点にあります。これはパッケージのインストール前に動作するため、開発者によるコードレビューやセキュリティスキャンよりも先に実行されます。ほぼすべての静的解析ツールが無力化され、さらにインストールが失敗しても攻撃コードは実行されるため、開発者が気づかないうちに認証情報が抜き取られる構造です。
攻撃には Bun という新しいJavaScriptランタイムが使われています。Bunは従来のNode.jsよりも高速で、システムへの深いアクセスが可能なため、攻撃者にとって格好のツールとなりました。侵害されたマシンは自動的にGitHub Actions のセルフホストランナーとして登録され、TruffleHogという正規のセキュリティツールを逆手に取って、AWS・GCP・Azure・GitHubなどの認証情報を根こそぎ収集します。
この攻撃はワーム型であることも見逃せません。盗んだnpmトークンを使って自動的に他のパッケージへ感染を広げる仕組みを持ち、人間の操作なしに指数関数的に拡散します。Unit 42の分析によれば、悪意あるbashスクリプトの一部はLLM(大規模言語モデル)によって生成された可能性が高く、コメントや絵文字の使用パターンがその根拠とされています。
Zapier、PostHog、Postmanといった著名プロジェクトのメンテナーアカウントが侵害され、これらが管理する複数のパッケージに影響が及びました。これらは日常的に何千ものプロジェクトで使われているため、被害の波及範囲は計り知れません。特にCI/CDパイプラインで自動的にパッケージ更新が行われる環境では、人間が介在しないまま侵害が進行します。
この事案が示唆するのは、もはや「信頼できるパッケージ」という概念自体が崩壊しつつあることです。従来のセキュリティ対策は、インストール後のコード検査やランタイム保護に重点を置いていましたが、攻撃がそれより前の段階で完了してしまう以上、防御の起点を根本から見直す必要があります。Microsoft Defender for Containersが検知したのは、データ破壊活動やコマンドインジェクションといったランタイムの挙動であり、パッケージインストール前の静的スキャンでは捕捉できていません。
長期的に見れば、この攻撃はソフトウェアサプライチェーン全体の信頼モデルを再設計する契機となるでしょう。npm の trusted publishing、WebAuthnベースの2FA、コミット署名検証といった対策は既に存在しますが、導入率は決して高くありません。開発者コミュニティ全体がこれらのベストプラクティスを標準装備として採用しない限り、同様の攻撃は今後も繰り返されます。
【用語解説】
npm(Node Package Manager)
Node.js向けの世界最大のパッケージ管理システム。JavaScriptライブラリやツールを配布・インストールするためのプラットフォームで、数百万の開発者が日常的に利用している。
preinstallスクリプト
npmパッケージのインストール前に自動実行されるスクリプト。package.jsonに記述され、依存関係の解決やセキュリティチェックより前に動作するため、悪用されると検知が困難になる。
サプライチェーン攻撃
ソフトウェア開発における供給網(依存パッケージ、ビルドツール、配布プラットフォームなど)を標的とした攻撃手法。信頼されたコンポーネントを侵害することで、それを利用するすべてのシステムに影響を与える。
CI/CDパイプライン
Continuous Integration(継続的インテグレーション)とContinuous Delivery(継続的デリバリー)の略。コードの変更を自動的にテスト・ビルド・デプロイする開発プロセスで、現代のソフトウェア開発では標準的な手法となっている。
Bun
JavaScriptおよびTypeScript向けの新しいランタイム環境。Node.jsよりも高速で、バンドラー、テストランナー、パッケージマネージャーを統合している。2022年にリリースされ、急速に普及が進んでいる。
GitHub Actions
GitHub上でCI/CDワークフローを自動化するサービス。セルフホストランナーを使えば、自社サーバー上でビルドやテストを実行できるが、今回の攻撃ではこの仕組みが悪用された。
TruffleHog
Gitリポジトリやファイルシステムから機密情報(APIキー、パスワード、トークンなど)を検出するオープンソースのセキュリティツール。本来はセキュリティ監査用だが、攻撃者によって認証情報の窃取に転用された。
WebAuthn
パスワードレス認証を実現するWeb標準規格。生体認証やセキュリティキーを使った強固な二要素認証を提供し、TOTPベースの認証よりもフィッシング耐性が高い。
ワーム型マルウェア
自己増殖機能を持つマルウェア。人間の操作なしに自動的に他のシステムへ感染を広げる特性を持ち、被害が指数関数的に拡大する。
【参考リンク】
npm公式サイト(外部)
Node.jsパッケージレジストリ。200万以上のパッケージをホストし、週間ダウンロード数は数十億に達する世界最大のJavaScriptエコシステム。
GitHub(外部)
世界最大のソースコード管理プラットフォーム。1億人以上の開発者が利用し、GitHub Actionsなど開発自動化機能も提供している。
Bun公式サイト(外部)
高速なJavaScript/TypeScriptランタイム。Node.jsの代替として設計され、パッケージマネージャー、バンドラー、テストランナーを統合。
TruffleHog GitHub(外部)
機密情報検出のためのオープンソースツール。Gitリポジトリやファイルシステムから誤ってコミットされた認証情報を発見する。
Microsoft Defender for Cloud(外部)
クラウドネイティブアプリケーション保護プラットフォーム。マルチクラウド環境のセキュリティ態勢管理、脅威防御を統合的に提供。
Microsoft Security Blog(外部)
Microsoftの公式セキュリティブログ。最新の脅威分析、製品アップデート、防御戦略に関する技術的知見を提供している。
Zapier(外部)
異なるWebアプリケーション間の連携を自動化するノーコードプラットフォーム。7,000以上のアプリと統合可能。
【参考記事】
“Shai-Hulud” Worm Compromises npm Ecosystem in Supply Chain Attack(外部)
Palo Alto NetworksのUnit 42による技術分析。25,000以上のGitHubリポジトリ侵害、LLM生成コードの可能性、ワーム型自己増殖メカニズムを詳述。
Shai-Hulud 2.0: Inside The Second Coming(外部)
Check Pointによる包括的攻撃分析。2025年11月21日からの攻撃時系列、影響パッケージ詳細、preinstallフェーズ実行メカニズムを技術解説。
Shai-Hulud 2 Malware Campaign Targets GitHub and Cloud Credentials(外部)
Endor LabsによるBunランタイム悪用分析。GitHub Actionsセルフホストランナー自動登録、TruffleHog認証情報収集の仕組みを報告。
【編集部後記】
みなさんが日々使っている開発ツールやライブラリは、どこまで信頼できると感じていますか?今回のShai-Hulud 2.0は、「有名なパッケージだから安全」という前提が崩れつつあることを示しています。特にCI/CDパイプラインを運用されている方は、自動化された環境だからこそ、気づかないうちに侵害が進行するリスクと向き合う必要があります。preinstallフェーズでの実行という新しい攻撃手法に対して、みなさんのチームではどんな対策を取られていますか?もしよければ、現場での課題や工夫を教えていただけると嬉しいです。

