「モデルではなくハーネスが穴だった」——Claude Code、Gemini CLI、Codexを同時に貫いた、一つのGitHub issue
Black Hat USA 2026で公表され、9月に入って改めて注目を集めている調査結果がある。セキュリティ企業Novee Securityの研究者エラド・メゲド氏が、リポジトリへの権限を一切持たないアカウントが、たった1つのGitHub issueを投稿するだけで、Anthropic・Google・OpenAIそれぞれの、AIコーディングエージェントのCI(継続的インテグレーション)実行環境にある、機密情報にアクセスできてしまう脆弱性を発見したという内容だ。エンジニアとして、この「ハーネス」という概念を軸にした調査結果を、丁寧に見ていきたい。
「モデルの判断」と「ハーネスの設計」を切り分ける
この調査で最も重要な概念が、「ハーネス」という言葉だ。メゲド氏はこれを「モデルと実世界との間にあるコード」と説明している。AIコーディングエージェントは、単に言語モデルが応答を返すだけのシステムではなく、そのモデルの周りに、権限管理、ツールの呼び出し経路、サンドボックス(隔離環境)の制御、共有ワークスペース、実行環境といった、様々な「配管」が組み合わさって、初めて実用的なエージェントとして機能する。
今回発見された3つの脆弱性は、いずれもこの「配管」の部分に存在していた。つまり、AIモデル自体が悪意ある判断を下したわけではなく、モデルの周りを固める設計に、見落としがあったということだ。
Claude Codeを貫いた、「一致しない文字列解釈」
Anthropicの「Claude Code」で見つかった問題(CVE-2026-54316)は、コマンドの妥当性検証と、実際の実行とで、同じ文字列を異なる解釈をしてしまうという、微妙なズレに起因していた。Claude Codeのコマンド検証機能は、シングルクォートで囲まれたテキストを、23個のチェック項目を実行する前に除去する。これはbash(シェル)の挙動としては正しい処理だが、gitの`--receive-pack`というフラグの値に埋め込まれた攻撃コードは、この除去処理をすり抜けて、実行時にはそのままgitによって解釈されてしまった。
さらに厄介なのが、この脆弱性の悪用に使われた「情報の持ち出し経路」だ。研究者は、Claude Codeが既に承認済みのアクセス権を持っていたHugging Faceの機能を悪用し、公開されている「ダウンロード数」というカウンターを、隠れた通信経路として利用した。APIキーを1文字ずつ、ダウンロード数の増減という形でエンコードして送信するという、極めて巧妙な手口だ。
Gemini CLIの「CVSS満点」という深刻度
GoogleのGemini CLIで見つかった脆弱性(CVE-2026-12537)は、さらに深刻だった。ヘッドレスモード(画面表示なしでの自動実行)における「ワークスペースの自動信頼」という仕組みと、許可リストが「登録時にはチェックされるが、実行時には強制されない」という設計上の隙間が組み合わさり、Linuxの`/proc`ファイルシステムを通じて、親プロセスの環境変数を読み取れてしまう状態になっていた。この脆弱性には、CVSSスコアで満点となる10.0という評価が付けられている。
OpenAI Codexは「サンドボックスは仕様通り」という立場
3社の中で対応が分かれたのが、OpenAIだ。研究者の報告に対し、OpenAIは自社のサンドボックスが「文書化された通り正確に動作していた」という立場を取っており、Codexに関する発見については、製品バージョンでのパッチも、CVE番号の割り当ても行われなかったという。この一件を巡っては、脆弱性の深刻度に対する評価軸そのものが、企業によって異なりうることが浮き彫りになっている。
「100を超える公開リポジトリ」に広がる、同じパターン
この調査でもう一つ注目すべきなのが、Cloud Security Allianceの分析だ。同様の設定上の問題が、100を超える公開リポジトリで確認されたという。その多くは、Anthropic、Google、OpenAIが公式に提供している、参考実装(リファレンスワークフロー)をそのままコピーしていたとされる。
つまり、今回発見された脆弱性は、単一のリポジトリだけの問題ではなく、ベンダーが提供するデフォルト設定そのものに内在していた問題であり、それをそのまま採用していた無数のプロジェクトに、同じリスクが横展開されていたことになる。過去に報告された「Clinejection」「GhostCommit」「GuardFall」といった類似の脆弱性とも、根底にある構造的な問題(文字列レベルの検証が、実際のシェルやファイルシステムによる解釈と食い違う)は共通しているという。
各社の対応と、既に修正済みという事実
幸い、Black Hatでの発表時点で、Google・Anthropic両社の脆弱性は既にパッチが適用されていた。Gemini CLIはバージョン0.39.1、Claude Codeはバージョン2.1.163で修正されている。Googleは自社の脆弱性報奨金プログラムを通じてこの報告を評価し、メゲド氏と、Pillar Securityのダン・リシチキン氏の功績を認めている。Anthropicも修正版をリリースし、セキュリティガイダンスを更新して、コンテンツのサニタイザー(無害化処理)がバイパスされうることへの警告を追加した。
エンジニアとして見ておきたいこと
この調査結果が投げかける教訓は明確だ。AIコーディングエージェントのセキュリティを評価する際、「このモデルは危険な指示を拒否できるか」という、モデル自体の判断能力だけを見ていては不十分だ。むしろ、そのエージェントが実際にどうツールを呼び出し、どう権限を管理し、どうサンドボックスを構成しているかという、周辺の実装(ハーネス)にこそ、見落とされがちな穴が潜んでいる。
自社のCI/CDパイプラインにAIコーディングエージェントを組み込んでいる、あるいは組み込もうとしているエンジニアにとって、今回の一件は、「外部からトリガーされうる自動化ワークフローすべてを、改めて監査すべきだ」という、具体的な行動喚起になっている。ベンダーが提供するデフォルト設定を無条件に信頼するのではなく、それが自分たちの環境で、どのような権限とアクセス範囲を実際に持っているのかを、一度手を動かして確認してみる価値がありそうだ。