npmワーム「Shai-Hulud」が172パッケージを汚染、正規署名を突破

攻撃の全体像

TanStack等172パッケージに悪意あるコード混入
正規SLSA署名付きで検証をすり抜け
npmからPyPIへ48時間で拡散
累計5.18億ダウンロードに影響

AIエージェントも標的に

Claude CodeやVS Codeに永続化フック設置
MCP設定からAPIキー・認証トークン窃取
パッケージ削除後も再実行される仕組み

防御策と対応

トークン失効前にマシン隔離が必須
OIDC信頼範囲をワークフロー単位に限定
キャッシュ分離と行動分析の導入を推奨
詳細を読む

2026年5月11日、サプライチェーン攻撃ワーム「Mini Shai-Hulud」がnpmおよびPyPIの計172パッケージ・403バージョンを侵害しました。週間1,270万ダウンロードの@tanstack/react-routerを含む主要パッケージが標的となり、累計5.18億ダウンロードに影響が及んでいます。CVSSスコアは9.6と極めて深刻です。

攻撃者はGitHub ActionsのキャッシュポイズニングとOIDCトークン抽出を組み合わせ、正規のリリースワークフロー内でコード実行を達成しました。すべての悪意あるバージョンが有効なSLSA Build Level 3署名を持っており、署名検証だけでは検知できません。TanStackのポストモーテムによれば、2FA・OIDC・署名付き出所証明をすべて導入していたにもかかわらず、OIDC信頼範囲の設定不備を突かれました。

今回のキャンペーンで特筆すべきは、AIコーディングエージェントを信頼された実行環境として標的にした点です。ワームはClaude Codeの.claude/settings.jsonやVS Codeのtasks.jsonに永続化フックを書き込み、パッケージを削除してもプロジェクトを開くたびに再実行されます。さらにClaude・KiroのMCP設定ファイルから外部サービスの認証トークンを収集します。Endor LabsのKennedy氏は「攻撃者はAIエージェントを信頼された実行環境の一部として扱った。実際そのとおりだ」と指摘しています。

npmからPyPIへの拡散も確認されています。Microsoftの脅威情報チームによると、mistralai PyPIパッケージv2.4.6はインストール時ではなくインポート時に実行され、npmの--ignore-scripts対策は無効です。UiPath・OpenSearch・Guardrails AIなど65以上のパッケージにも波及しています。

対応では順序が極めて重要です。ワームはトークン失効を検知するとホームディレクトリ全消去を実行する破壊的デーモンを仕込んでおり、先にマシンを隔離・フォレンジック保全してからトークンを失効させる必要があります。中長期的には、OIDCの信頼範囲を特定ワークフロー・保護ブランチに限定し、キャッシュを信頼境界ごとに分離し、署名検証に加えて行動分析を導入することが求められます。