概要

セキュリティ企業Air Securityは9月18日、Claude Code、OpenAI Codex、GitHub Copilot、Google Gemini CLIという主要な4つのAIコーディングエージェントに共通する脆弱性「Plugin4Shell」を公表した。これらのエージェントはプラグインをGitのコミットハッシュ(SHA)でピン留めし、特定バージョンのコードのみを信頼する仕組みを採用しているが、実際にはGitが要求通りのコミットをチェックアウトしたかどうかを検証していないという実装上の欠陥がある。Air Securityはこれを「AIエージェントエコシステムにおける初めてのサプライチェーン脆弱性」と位置づけており、セキュリティのベストプラクティスに従ってプラグインをハッシュ固定していたユーザーであっても被害を免れないと警告している。同社によれば脆弱性は2026年5月に発見され、6月に各ベンダーへ通知されたが、9月18日時点でCVE番号の割り当てやセキュリティ勧告の公開はなく、実際の悪用が確認された事例も報告されていない。

技術的な仕組み

攻撃の核心は、ハッシュに似せたブランチ名を使ってGitの解決先をすり替える点にある。多くのGitプラットフォームではコミットSHAのような16進数文字列をブランチ名として作成でき、エージェントが特定のハッシュを指定してチェックアウトを要求した際、Gitがそれをコミットハッシュではなくブランチ名として解釈し、攻撃者が用意した別のコミットを取得してしまうことがある。Claude Code、Codex、GitHub Copilotの3製品はこのブランチ名の解釈を突いた手法で影響を受ける一方、Gemini CLIは「FETCH_HEAD」という名前でチェックアウトを指示する独自の実装に起因する別経路の脆弱性を抱えていた。プラグインはユーザー権限で実行されるため、悪意あるコードに差し替えられればソースコード、認証情報、CI/CDツールやクラウド環境へのアクセスが可能になり、API キーの窃取やリポジトリの改ざん、企業インフラへの侵入につながりうる。

影響範囲とプラットフォームによる差異

この脆弱性が特に厄介なのは、ユーザー操作なしにコードが実行される「ゼロクリック」型である点だ。GitHubはハッシュのような文字列をブランチ名として作成できない仕様になっているため、GitHub上でホストされたプラグインは直接的な影響を免れる。一方、Bitbucketや自前運用のGitサーバーでは同様の制限がなく、攻撃が成立しうる。さらに、Claude CodeやCodexではプラグインのバックグラウンド自動更新が既定で有効になっている場合があり、これが攻撃の自動化・拡大を助長する要因となっている。Air Securityは過去の調査で、悪意あるプラグイン1件が2万6000超のエージェントに到達した事例や、925件の乗っ取られたスキルが13万4000のエージェントに影響を及ぼした「SkillJacking」を報告しており、Plugin4Shellはこうした供給網リスクをバージョン固定済みのプラグインにまで広げるものだと位置づけられている。

対応状況と今後の見通し

各ベンダーの対応には差が出ている。AnthropicはClaude Codeをバージョン2.1.179で、OpenAIはCodexをバージョン0.146.0で、それぞれ修正済みだ。GoogleはGemini CLI自体の修正を行わず、後継製品「Antigravity」への移行を推奨するという事実上の廃止対応を選んだ。一方、MicrosoftのGitHub Copilotは記事執筆時点で修正版が公開されておらず、GitHub自体が以前から実施しているブランチ・タグ名の制限(コミットハッシュに似た名前を作成できない仕様)がGitHub本体やそのマーケットプレイス上のプラグインには一定の効果を持つものの、Copilotが利用できる他のホスト(Bitbucket等)には及ばないため、リスクは残存している。Air Securityは「アップデートだけが唯一の完全な対策だ」と強調しており、既にセキュリティ対策としてハッシュ固定を実践していたユーザーほど、この問題に気づきにくい点を懸念材料として挙げている。アナリストのPareekh Jain氏は、今回の問題の根本原因は「エージェントが実行を指示されたコードをどう検証するか」という設計そのものにあると指摘しており、AIエージェントのプラグイン・エコシステム全体でサプライチェーン検証の見直しが求められそうだ。