9月18日、Help Net Securityが「Zero-click RCE vulnerability hit four major AI coding agents, two remain unpatched」と題した記事を公開した。Claude Code・Codex・GitHub Copilot・Gemini CLIの4つの主要AIコーディングエージェントに影響するゼロクリックRCE脆弱性「Plugin4Shell」の詳細が報告されている。
プラグインを慎重に選んでいても防げない理由
セキュリティ研究機関のAIR(Adversarial Intelligence Research。本脆弱性の研究・開示を専門に行う独立系セキュリティ組織)は、AIコーディングエージェントのプラグインエコシステムに存在する脆弱性「Plugin4Shell」を発表した。影響を受けるのはClaude Code、Codex(OpenAI)、GitHub Copilot、Gemini CLIの4製品だ。
AIRはこの脆弱性を「AIエージェントエコシステム初のサプライチェーン脆弱性」と表現している。問題の核心は、プラグインのバージョンを固定する仕組みであるSHAピニング(SHA pinning)の迂回にある。SHAピニングとは、プラグインをレビュー済みの特定コミット(バージョン)に紐付けることで、開発者の知らないうちにコードが書き換わることを防ぐ仕組みだ。信頼できるプラグインのみを厳選してインストールしていても、この仕組み自体が破られている以上、選択の慎重さは攻撃を防ぐ保証にならない。
AIRの調査によると、4製品はいずれもピン留めされたコミットをチェックアウトする際、実際にそのコミットに到達したかどうかを検証していない。これにより、ピンは正常に見えたまま悪意あるコードへの差し替えが可能になる。

脆弱性の仕組みを示す図(出典: AIR)
Claude Code・Codex・GitHub Copilotの3製品が持つ経路は同一だ。gitでは通常、コミットハッシュ(SHA-1/SHA-256の40桁16進数)を指定することでブランチではなく特定のコミットを直接参照できる。しかし、gitホストによってはこの40桁16進数と同じ文字列をブランチ名として登録することが許可されており、その場合git checkoutはハッシュより先にブランチ名を参照してしまう。攻撃者がピン留めSHAと同名のブランチを悪意あるコミットで作成すれば、エージェントは正規のコミットではなくそのブランチ先頭を取得してしまう。Gemini CLIはピン留めコミットのフェッチとチェックアウト処理における別の経路で同様の問題を持つ。
ゼロクリックである理由:バックグラウンド自動更新が引き金
この脆弱性が「ゼロクリック」と呼ばれる理由は、インストール時だけでなくバックグラウンドの自動更新時にも同じgit checkoutが走ることにある。Claude CodeとCodexではデフォルトで自動更新が有効になっており、マーケットプレイス側がピン留めSHAを更新するだけで、ユーザーの操作なしに悪意あるコードが既にインストール済みのプラグインに展開される。
技術的な前提条件として、この攻撃はブランチ名をハッシュ値と同じ文字列(40桁の16進数)で命名できるgitホストでのみ成立する。GitHubはこの形式のブランチ名を拒否するが、Bitbucketやセルフホスト型のgitサーバーでは許可されるとAIRは指摘している。
攻撃者の侵入経路は2パターン
AIRが示した攻撃シナリオは2つある。
1つ目は「マルウェア遅延型」:攻撃者が正常に機能するプラグインを公開してレビューを通過させ、ユーザーが広まった後に悪意あるコードへ切り替える手口だ。AIRは以前の研究でこのアプローチの実証実験を行っており、自ら作成したプラグインが2万6,000以上のエージェントに展開された後に削除されたことを明かしている。
2つ目は「リポジトリ乗っ取り型」:既存の人気プラグインのリポジトリを攻撃者が乗っ取り、既にインストール済みのユーザーへ悪意あるコードを展開する手口だ。AIRが別途「SkillJacking」と名付けた研究では、実際に使われていた925のスキルが元のメンテナーから乗っ取られており、13万4,000のエージェントに到達していたことが判明している。
AIRは「リポジトリ乗っ取りはすでに大規模に発生しており、Plugin4Shellはそれをコンテナするはずだったメカニズムを破る。攻撃チェーンはエンドツーエンドで実証されている」と述べている。
パッチ対応は4社でバラバラ
AIRは2026年5月に全4製品に対する動作するPoCエクスプロイトとともに本脆弱性を発見し、翌月各ベンダーへ開示した。修正はエージェント側での対応が必要であり、マーケットプレイス単独での対策は不可能だとAIRは指摘している。
| 製品 | 対応状況 |
|---|---|
| Claude Code | バージョン2.1.179でパッチ済み |
| Codex | バージョン0.146.0でパッチ済み |
| GitHub Copilot | 未パッチ(Microsoftは修正を未リリース) |
| Gemini CLI | 廃止(Googleは修正せずに製品を終了) |
タイトルの「2製品は未修正」にはGemini CLIの廃止が含まれる点に注意が必要だ。GitHub Copilotはパッチ未提供のまま製品が継続されており、Gemini CLIはパッチの提供前に製品そのものが終了した。両者は「未修正」である事実は共通するが、ユーザーへの影響と取るべき対処は異なる。
特にGoogleの対応は特異で、Gemini CLIにパッチを当てるのではなく製品そのものを廃止した。既存インストールはすべて脆弱なままとなる。Googleはユーザーに対して、後継エージェント「Antigravity」への移行を促している。AntigravityはGemini CLIとは別設計の製品であり、プラグインのピン留め機構自体を持たない構造のため、Plugin4Shellと同一の経路は存在しないとされる。ただしAIRは、Antigravity固有のプラグイン管理モデルについての評価はまだ公表していない。
現時点でできること
- Claude CodeまたはCodexを使用している場合:直ちに最新版(それぞれv2.1.179、v0.146.0以降)へアップデートする
- GitHub Copilotを使用している場合:プラグインのソースリポジトリがGitHub以外(Bitbucketやセルフホスト環境)でホストされていないかを確認する。GitHubホスト以外のプラグインは現時点でリスクが残る
- Gemini CLIを使用している場合:製品は既に廃止されており、脆弱な状態のまま使い続けることになる。Googleが推奨するAntigravityへの移行を検討する
詳細はZero-click RCE vulnerability hit four major AI coding agents, two remain unpatchedを参照していただきたい。