2026年9月17日、企業向けAIエージェント保護を掲げる Air の研究チームは、主要AIコーディングエージェントに影響するゼロクリックRCE手法 Plugin4Shell を公開しました(Air 公式/The Register)。狙いはモデル本体ではなく、プラグイン/スキルを配るマーケットプレイスと、エージェント側のSHAピン留め実装です。
「レビュー済みコミットに固定したから安全」という前提が、チェックアウト後の検証不足で崩れる、という話です。
何が壊れていたか
マーケットプレイスは、可変なタグやブランチではなく、不変のコミットハッシュにピン留めすることで、後からの差し替え(ラグプル)を防ぐ設計を取ります。Plugin4Shellは、エージェントが「ピン留めされたコミットをチェックアウトする」一方で、実際に作業ツリーがそのコミットに着地したかを検証しない点を突きます。
Air の説明では、典型的な流れは次のとおりです。
- 攻撃者がまず無害なプラグインを出し、レビューとピン留めを通す
- 利用が進み、マーケットプレイスが別の(まだ無害な)コミットへピンを更新する
- 攻撃者がリポジトリを支配下に置き、ピン留めSHAと同名のブランチなどを使って、チェックアウト先を悪意ある内容へすり替える
- エージェントのプラグイン自動更新が走り、ユーザー操作なしで悪意ある版に置き換わる
Git は「40桁の十六進と同じ名前の ref」があると、オブジェクトIDより ref を優先する、といった挙動が悪用の土台になります(ホストによっては40桁ブランチ名を拒否する、という緩和もあります)。Gemini CLI 側は別経路(FETCH_HEAD まわり)でも同種のずれが起き得る、と報告されています。
Air が示す修正の要点は単純で、チェックアウト後に HEAD の実コミットがピン留めSHAと一致することを検証し、一致しなければ中止する、というものです。検証はマーケットプレイス側だけでは完結せず、エージェント側の修正が必要、というのが繰り返し強調されている点です。
影響製品とパッチ状況(報告時点)
Air の開示・検証まとめ(公開時点)は次のとおりです。
| 製品 | 状況 |
|---|---|
| Anthropic Claude Code | 2.1.179 で修正 |
| OpenAI Codex | 0.146.0 で修正 |
| Microsoft / GitHub Copilot | 開示済みだが、報告時点でパッチ未提供(ユーザー側に完全な緩和が無い、との説明) |
| Google Gemini CLI | 非推奨化のためパッチなし。Google は Antigravity への移行を推奨 |
GitHub 側は「SHAに似せたブランチ/タグ名を作れない」緩和により自社ホスト上では悪用されない、とのコメントが報道されています。Air は、マーケットプレイスが Bitbucket など他ホストでも動ける構成では足りない、と反論しています。
開示は2026年6月。発見は5月、各社への報告後、Anthropic・OpenAI は修正、Google は8月にパッチなし方針を確認、というタイムラインです。
なぜ「王国の鍵」と言われるか
コーディングエージェントは、開発者本人と同じく、リポジトリ・クラウド資格情報・社内API・本番周辺に手が届くことが多いです。プラグインは、その権限をほぼそのまま継承します。悪意あるプラグインに一度乗れば、追加の権限昇格なしにホスト上のコード実行へつながる、というのが影響の読みです。
Air は先行研究として、悪意あるスキルの拡散や、メンテナ乗っ取り(SkillJacking / RepoJacking)も示してきました。Plugin4Shellは、その「乗っ取ったあと、ピン留めで封じる」最後の壁が抜けた、という第三幕、という位置づけです。
いまできること
完璧な理論より、運用の優先度です。
- Claude Code / Codex は、上記バージョン以上へ更新する
- プラグイン自動更新を無制限にしない(特に未修正エージェント)
- コミュニティマーケットプレイス依存を見直し、社内レビュー済み配布へ寄せる
- Gemini CLI 利用者は、ベンダー推奨どおり移行先の確認
- 「ピン留めしたから終わり」ではなく、エージェント側の検証実装の有無を確認する
モデルのプロンプト注入ばかりが話題になりがちですが、今回は配布レイヤの古典的サプライチェーンです。エージェントを「便利な拡張付きシェル」として扱うなら、拡張の供給源と検証は、パッケージマネージャと同じ厳しさが要ります。