SHAピン留めは守ってくれなかった AIコーディングエージェント4種を貫いたPlugin4Shell|2026年9月21日版
プラグインを「このコミットに固定する」という設定は、多くの開発者が安全側の手続きだと思って使ってきた。レビュー済みのバージョンから動かない、という前提があったからだ。
その前提が、主要なAIコーディングエージェント4種でまとめて崩れた。9月17日に公開された「Plugin4Shell」は、固定したはずのコミットに本当に到達したかを誰も検証していなかった、という単純で厄介な欠陥だ。クリックも承認も再インストールも要らない。プラグインの更新が走るだけで、攻撃者のコードが開発者と同じ権限で動く。
対象は Claude Code、OpenAI Codex、GitHub Copilot、Gemini CLI。修正が出ているのは2つだけで、残りはユーザー側の選択に委ねられている。
- 核心:SHAピン留めの「到達確認」抜けが4製品で共通していた
- 影響範囲:エージェントを動かす開発者の権限すべて(ソース、認証情報、SSH鍵、社内リポジトリ)
- 対応状況:Claude Code と Codex は修正済み、Copilot は未修正、Gemini CLI は非推奨化で対応せず
- いま取るべき行動:バージョン確認と更新、そしてプラグイン導入元の棚卸し
今日の重要ポイント早見表
| 製品 | ベンダー | 現状 |
|---|---|---|
| Claude Code | Anthropic | 2.1.179 で修正(6月17日に修正確認) |
| Codex | OpenAI | 0.146.0 で修正(8月12日にパッチ検証) |
| GitHub Copilot | Microsoft / GitHub | 公開時点で修正版の提供なし |
| Gemini CLI | 8月4日に「非推奨のため修正しない」と回答 |
表の粒度は要点だけに絞った。どの製品をどう扱うかの判断材料は、以下で分けて書く。
何が起きたのか:ピン留めが「祈り」になっていた
発見したのはセキュリティ企業 AIR(Air Security)。5月に動作する実証コードを揃え、6月に4社へ協調的開示を行い、9月17日に公開した。
仕組みの核心は拍子抜けするほど素朴だ。エージェントはマーケットプレイスが指定したコミットハッシュを checkout する。ところが、checkout の結果が本当にそのコミットだったかを確認していない。 git はブランチ名と識別子が衝突したときブランチ参照を優先するため、ハッシュに見える名前のブランチが用意されていれば、ピンは「守られたように見えたまま」中身が入れ替わる。
なぜ「ゼロクリック」が重いのか
プラグインやスキルの類は、いまやエージェント本体と同じ権限で動く。つまり次のものに手が届く。
- ローカルのソースコードと作業中のブランチ
- クラウドの認証情報、API キー、SSH 鍵
- 社内リポジトリ、CI、場合によっては本番環境
通常のサプライチェーン攻撃は「怪しいものを入れてしまった人」が起点になる。今回は違う。すでに入れてレビューも済ませたプラグインが、後から中身だけ差し替わる。 利用者の注意深さでは防げない、という点が性質を変えている。
AIR は過去の類似キャンペーンとして2万6千台規模、13万4千台規模のエージェント侵害を挙げており、この種の攻撃面が理論上の話でないことは既に示されている。
4社の対応が割れた
同じ欠陥に対して、4社の判断は見事にばらけた。
修正が出ている2つ
Anthropic は6月17日に修正を確認し、Claude Code 2.1.179 で配布。OpenAI は8月12日にパッチを検証し、Codex 0.146.0 に入れた。どちらも、やるべきことは単純で「更新する」だけになる。
修正が出ていない2つ
Google は8月4日、Gemini CLI は非推奨(deprecated)であるとして修正を出さない方針を回答した。移行先として Antigravity が案内されているが、既存インストールはそのまま残る。ツールの終了宣言が、結果として未修正の実行環境を野に放つ形になっている。
Microsoft については報道間で記述に幅がある。Help Net Security と The Register はいずれも公開時点で Copilot 向けの修正が出ていないと報じ、The Register は Microsoft 自身の「Fortune 500 の約9割が Copilot を使っている」という数字を併記した。利用規模と対応の落差が、この件で最も議論になっている部分だ。
ここがポイント: 同じ脆弱性でも「直す/直さない/製品ごと畳む」で結論が分かれる。エージェントを選ぶ基準に、パッチ供給の継続性が入ってきた。
日本の開発現場が確認すべきこと
抽象論にせず、手を動かす順番で並べる。
- バージョンの実測:Claude Code は 2.1.179 以上、Codex は 0.146.0 以上かを確認する。社内に複数の開発端末や CI コンテナがある場合、古いイメージが残っていないかまで見る。
- 未修正ツールの扱いを決める:Copilot と Gemini CLI については「使い続ける/止める/隔離環境に閉じる」を組織として明示的に決める。判断を各開発者に委ねると、結局は誰も決めていない状態になる。
- プラグインの棚卸し:どのマーケットプレイスから、何を、誰が入れたのかを一覧化する。ピン留めしてあるから大丈夫、という前提は今回いったん外す。
- 権限の見直し:エージェントが動く環境に本番の認証情報が同居していないか。今回の件で一番効く恒久対策は、更新よりもこちらかもしれない。
研究チーム自身が「修正はエージェント側に入るしかなく、更新が唯一の完全な緩和策だ」と述べている。裏を返せば、修正が来ない製品には完全な緩和策が存在しない。
継続ウォッチ
- Microsoft が Copilot 向けの修正を出すか。利用規模が大きいだけに、方針表明のタイミングと内容が次の焦点になる。
- CVE 採番と公的アドバイザリの有無。現時点で公開情報の中心はベンダー対応と研究者の記述で、識別子ベースの追跡はまだ整っていない。
- マーケットプレイス側の検証強化。エージェント側の修正だけでなく、配布側が改ざん検知をどう組み込むかが中期の論点になる。
- 非推奨ツールの扱いという前例。「サポート終了だから直さない」が今後も通るのか、企業の調達条件に影響しうる。
今日のまとめ
Plugin4Shell が突いたのは、賢いモデルでも新しいアーキテクチャでもなく、checkout の結果を確認していないという一行分の抜けだった。AIエージェントの安全性議論はプロンプトインジェクションに寄りがちだが、実際に最短で刺さったのは昔ながらのソフトウェア配布の穴だ。
まず手元のバージョンを見る。次にプラグインの出所を数える。そして未修正のツールを使い続けるかどうかを、今日のうちに決める。
参考リンク
- Plugin4Shell – Zero Click RCE Vulnerability found in top 4 most popular coding agents(AIR Security)
- Zero-click RCE vulnerability hit four major AI coding agents, two remain unpatched(Help Net Security)
- AI coding agents’ 0-click RCE flaw could hand attackers keys to the kingdom(The Register)
- A zero-click RCE flaw in AI coding agents could have exposed enterprise systems(InfoWorld)
