2026年7月2日、FBIがIC3経由でFLASH警告(FLASH-20260702-01)を公開した。npm/PyPIを横断する自己増殖型サプライチェーンワーム群(Mini Shai-Hulud、Miasma ほか)を攻撃グループTeamPCPに帰属させ、その手口としてGitHub Actionsワークフローの乗っ取りと、AIコーディングアシスタント設定ファイルへの隠し命令混入を挙げた。
ここで起きているのは、CI/CDパイプラインとAIコーディングエージェントの設定ファイルが、同時に一次攻撃面になったという転換だ。「依存を入れる」「プロジェクトをエディタで開く」という日常動作が、資格情報窃取とワーム伝播のトリガーになる。同じ攻撃者ツール群にAIゲートウェイの既知脆弱性まで並ぶ。本稿は、公開ソースで確認できる事実だけを起点に、今日CIとエージェント設定で直すべき箇所をチェックリストに落とす。
結論
| 境界(何が新しく攻撃面か) | ニュース上の含意 | 今日直すこと |
|---|---|---|
| GitHub Actionsランナー(pull_request_target・キャッシュ汚染・OIDCトークン実行時抽出) | タグpinのままだと差し替えで悪性コードが走りうる | 全actionをフルコミットSHAでpinし直す |
| npm/PyPIの新規バージョン | 自己増殖ワームが公開直後に即時伝播 | 最低リリース経過日数ゲート(FBIの例で7日)を設ける |
| .cursorrules / CLAUDE.md / .claude/settings.json 等 | 隠し命令やSessionStartフックが開いた瞬間に実行されうる | AI設定ファイルの差分をレビュー必須化し検出を回す |
| AIゲートウェイ(LiteLLM) | KEV入り=実際に悪用され認証回避→RCEに連鎖 | CISA期限で即パッチ+管理IFの露出を遮断 |
ソース1: FBI FLASH警告のTeamPCPワーム
確認できる事実
FBIのFLASH警告は、npmとPyPIをまたぐ自己増殖ワーム群(Mini Shai-Hulud、Miasma)と、認証情報スティーラーSANDCLOCKをTeamPCPに帰属させた。改ざん対象として名指しされたツールにはTrivy、KICS、LiteLLM、Telnyx Python SDKが含まれる。いずれもCI/CD・クラウド・セキュリティワークフローに広く組み込まれるものだ。
規模も具体的だ。Mendの追跡では、Mini Shai-Hulud波は48時間以内に npm/PyPI 横断で172パッケージ・403件の悪性バージョンへ拡大した。侵害された @tanstack/react-router 単体で週約1,270万ダウンロードという流通量を持つ。報道ベースでは1,000社超の環境が影響を受け、約300GBのデータと推定約50万件の認証情報セットが流出したとされる。関連CVEとしてCVE-2026-33634、CVE-2026-48027、CVE-2026-45321、CVE-2025-55182が挙がる。
手口は、GitHub Actionsワークフローの乗っ取りが中核だ。pull_request_targetの悪用、Actionsキャッシュの汚染、ランナー上でのOIDCトークンの実行時抽出により publishトークンを偽造し、侵害されたメンテナが管理する全パッケージへ伝播する。窃取対象はAWS/GCP/Azureのキー、GitHub PAT、HashiCorp Vaultトークン、Kubernetes secret、SSH鍵に及ぶ。
FBIの推奨対策は具体的で、そのまま行動に落とせる。
原文: "Pin GitHub Actions workflows to verified commit SHA hashes rather than floating version tags"/"Enforce a minimum package age threshold of at least seven days"
日本語訳: 「GitHub ActionsワークフローをフローティングなバージョンタグではなくコミットSHAハッシュでpinせよ」「新規バージョン採用前に最低7日の経過日数しきい値を強制せよ」。加えてFLASHは、CI/CDとクラウドの全secret・publishトークンのローテーション、CI/CDサービスアカウントへの最小権限、publish権限を持つ全アカウントへのフィッシング耐性MFA、ランナーの実行時挙動監視を挙げている。(FBI FLASH-20260702-01、securityaffairs報道より)
実務解釈
構造上の要点は二つある。一つは、メンテナ1人の侵害が依存グラフ全体へ波及する点だ。あなたが直接侵害されなくても、依存先の1人が踏まれれば、その人の全パッケージ経由で降ってくる。もう一つは、この波の悪性パッケージが有効なSLSA Build Level 3のprovenance署名を伴っていたこと。つまりprovenance検証は「どのパイプラインが作ったか」は保証するが「そのパイプラインが安全に振る舞ったか」は保証しない。署名が付いているから安全、という運用はここで崩れる。
ソース2: Miasma変種がAIエージェント設定ファイルを汚染する
確認できる事実
2026年6月上旬に観測されたMiasma波(SecurityJoes、Morphisec ほかが分析)は、AIコーディングエージェントの設定ファイルを永続化の足場に使う。悪性パッケージが .cursorrules や CLAUDE.md を投下し、そこにゼロ幅Unicodeの隠し命令を埋め込む。開発者がCursorやClaude Codeでプロジェクトを開くと、エージェントが正当なプロジェクト指示に見えるそれを読み、「セキュリティスキャン」と称してローカルの秘密を持ち出す実装が報告されている。
さらに悪質なのはフックによる永続化だ。.claude/settings.json にSessionStartフック、.gemini/settings.json、.vscode/tasks.json(フォルダオープン時実行)、.cursor/rules/setup.mdc、悪性MCPサーバー定義などを仕込む。これらはワイルドカードのマッチャで、開発者がプロンプトを入力する前にドロッパを実行する。マルウェアスキャナがほとんど見ないパスに置かれ、npm uninstall や node_modules の全消去でも生き残る。GitHubの自動対応は、Microsoft/Azure関連49件を含む73リポジトリを約105秒で無効化した。
実務解釈
「AI設定ファイルは読むだけだから安全」という前提は崩れた。ゼロ幅Unicodeは目視では見えず、SessionStartフックはエージェント起動と同時に走る。CLAUDE.md / AGENTS.md / .cursorrules / .claude/settings.json をコードレビューの対象外にしていたなら、その運用は見直す前提に立つべきだ。加えて、MCPツールの出力やWeb取得コンテンツも「非信頼入力」として扱う——エージェントに渡る文字列は、どれも命令注入の経路になりうる。
ソース3: LiteLLM CVE-2026-42271がCISA KEV入り
確認できる事実
CISAは2026年6月8日、AIゲートウェイのLiteLLMのCVE-2026-42271(コマンドインジェクション、CVSS 8.7)を、実際の悪用(in-the-wild)を確認したうえでKnown Exploited Vulnerabilities(KEV)カタログに追加した。MCPサーバーのプレビュー用エンドポイント(POST /mcp-rest/test/connection など)が、stdioトランスポート用の command/args/env を含むサーバー設定をそのまま受け取る点が根本原因で、認証済みのプロキシAPIキー保持者が任意コマンドを実行できる。さらにCVE-2026-48710(Starletteのhost-headerバリデーションバイパス、通称BadHost)と連鎖させると認証を完全に回避し、露出したLiteLLMデプロイに対して認証情報不要のリモートコード実行に至りうる。LiteLLMはFBIのTeamPCP改ざん対象ツールの一覧にも登場する。
実務解釈
KEV入りは、CISAの期限に沿って今すぐパッチを当てる対象であることを意味する。あわせて、管理/adminインターフェースが非信頼ネットワークに露出していないかを監査する。要は、AIゲートウェイを「内部専用の便利なプロキシ」ではなく、インターネットに面した認証境界として扱うということだ。ネットワーク分離、host-header検証やWAF、資格情報ローテーションを、他のインターネット公開エンドポイントと同じ基準で適用する。供給網侵害とゲートウェイ脆弱性が同じ攻撃者ツール群で重なる点が、この複合リスクの厄介さだ。
実装チェックリスト
グループA: GitHub Actions堅牢化
- 全actionをタグ(@v4など)ではなくフルコミットSHAでpinし直す
- 各ワークフローで permissions: を宣言し、デフォルトの全権限を最小権限へ絞る
- pull_request_target の使用箇所を棚卸しし、非信頼PRからのsecret露出経路を潰す
- Actionsキャッシュの信頼境界を確認する(汚染されたキャッシュを信頼していないか)
- OIDC subjectのaudience(対象)を限定し、トークンの実行時抽出・悪用の余地を狭める
グループB: 依存供給網
- 新規バージョンに最低経過日数ゲートを設ける(FBIの例は7日)
- lockfileを固定し、意図しないバージョン繰り上がりを防ぐ
- provenance/署名を検証する。ただし今回の波は有効なprovenanceを伴っていた——署名の有無だけで安全と判断せず、公開元の振る舞い監視と併用する
- 侵害メンテナ由来の異常な公開(短時間の一括publish等)を検知する仕組みを持つ
グループC: 秘密情報
- CI/CDとクラウドの全キー(AWS/GCP/Azure、GitHub PAT)をローテーションする
- フィッシング耐性MFAを、publish権限を持つ全アカウントに強制する
- 最小権限を徹底し、静的な資格情報より一時的な資格情報を優先する
- HashiCorp Vaultトークン・Kubernetes secretを棚卸しし露出を確認する
グループD: AIエージェント設定
- .cursorrules / CLAUDE.md / AGENTS.md / .claude/settings.json / .gemini/settings.json の予期しない差分をレビュー必須化する
- ゼロ幅Unicodeなど不可視文字を検出する(目視に頼らない)
- SessionStart/フォルダオープン系フック(.vscode/tasks.json 等)と登録済みMCPサーバーを棚卸しする
- MCPツールの出力とWeb取得コンテンツを非信頼入力として扱う
グループE: ランナー実行時挙動監視
- ランナー上の実行時挙動(想定外の外部通信・トークンアクセス)を行動ベースで監視する
失敗パターン
- パターン1: タグ(@v4)pinのまま安心する → 対策: タグは可変。フルコミットSHAでpinし、差し替えによる悪性コード注入を封じる。
- パターン2: provenance署名があるから安全とみなす → 対策: 今回の波は有効なSLSA Build L3署名を伴っていた。署名は「どのパイプラインが作ったか」の証明で、安全性の証明ではない。振る舞い監視と併用する。
- パターン3: AI設定ファイルをコードレビュー対象外にする → 対策: CLAUDE.md/AGENTS.md/.cursorrules/.claude/settings.json を差分レビューに含め、不可視文字とフックを検出する。
- パターン4: 新規依存を即日採用する → 対策: 最低経過日数ゲート(例7日)とlockfile固定で、公開直後のワーム伝播を待ち受けない。
- パターン5: AIゲートウェイを内部専用と誤認して公開する → 対策: インターネット面の認証境界として扱い、ネットワーク分離・host-header検証・資格情報ローテを適用する。
- パターン6: 秘密ローテを「疑わしい時だけ」にする → 対策: KEV/FLASH級の警告時は疑いの有無に関わらず全キーをローテーションする定常運用にする。
参考リンク
- FBI FLASH-20260702-01 (IC3, TLP:CLEAR PDF)
- FBI: TeamPCP compromised dev tools to steal cloud credentials (securityaffairs)
- Mini Shai-Hulud wave hits 172 npm and PyPI packages (Mend)
- Mini Shai-Hulud is back: self-spreading supply-chain attack (StepSecurity)
- Shai-Hulud: Miasma — when a supply-chain worm learned to hijack AI coding agents (SecurityJoes)
- It's in your AI assistant now: Shai-Hulud Wave 3 and the Miasma worm (Morphisec)
- Miasma supply-chain worm burrows into 73 Microsoft repositories (Dark Reading)
- Copilot CLI no longer needs a PAT in GitHub Actions (GitHub Changelog)
- LiteLLM flaw CVE-2026-42271 exploited in the wild, chains to unauthenticated RCE (The Hacker News)
- CSA research note: LiteLLM CVE-2026-42271 AI gateway exploitation
この記事を書いた人✏️@YushiYamamoto
ITPRODX.com代表 / AIアーキテクト
Next.js / TypeScript / n8nを活用した自律型アーキテクチャ設計を専門としています。
日々の自動化の検証結果や、ビジネス側の視点(ROI等)に関するより深い考察は、以下の公式サイトおよびnoteで発信しています。
