GitHub Copilot CLIに脆弱性、暗号化プロンプトでオートパイロットモード中の開発者の機密情報が流出

Adversa AIの研究者らは、攻撃者が管理するWebページを介して開発者の機密情報を窃取するGitHub Copilot CLIへの攻撃を公表しました。この攻撃では、暗号化された命令が使われます。

2026年10月6日に公開された研究では、「Cryptographic Context Injection(CCI)」と呼ばれる手法を説明しています。復号された実行時の出力を、コーディングエージェントが信頼する命令へと変えてしまう手法です。

実証実験では、Copilot CLIが.env.prodファイルの内容を、わずか28秒で攻撃者のエンドポイントに送信しました。ただし、この攻撃チェーンが成立するにはオートパイロットモードと、指示に従いやすい(制限の緩い)モデルが必要でした。あらゆる環境が侵害されるわけではなく、確認プロンプトを回避するものでもありません。

攻撃は、開発者がCopilot CLIに外部Webページの取得を依頼したところから始まります。このページには暗号化されたコンテンツが表示され、Pythonによる復号を要求するとともに、鍵の候補とされる2つを提示します。

一方は正規の鍵です。もう一方はテンプレートで、ローカルファイルの情報が必要になります。エージェントはこのテンプレート化された鍵を準備するため、標的となるファイルを読み込み、その内容を文字列に組み込みます。この収集は、復号が成功する前に行われます。

このテンプレート鍵による復号は意図的に失敗するよう仕組まれており、エージェントは正規の鍵を試すことになります。復号に成功すると、第2段階の命令が現れます。追加の文脈情報を得るため、別のURLを取得するよう Copilot に指示する内容です。

このリクエストには、先に収集したファイルの内容がパラメータとして埋め込まれており、機密情報が攻撃者に届けられます。研究者によると、画面に表示されるトランスクリプトには、送信先ホストも、ファイルがマシンの外へ出たことも示されませんでした。

この攻撃の要点は、悪意ある命令がどの時点で読める状態になるかにあります。暗号化によって、エージェントの実行環境内で処理されるまで命令は隠されます。その後、エージェントは得られた平文を信頼できるコンテキストとして扱います。

Adversa AIによると、同等の内容を平文で記した命令は、プロンプトインジェクションとして検出され、拒否されました。

Microsoftのmai-code-1.1-flashは、研究者による試行の50%で攻撃を完遂しました。一方、2種類のGPT-5.6モデルは、同じペイロードを一貫して拒否しました。ただし、レポートはすべてのCopilotモデルやセッションが脆弱だと立証しているわけではありません。

検証した有料アカウントの1つでは、研究者が脆弱なモデルを手動で選択しました。一方、別のアカウントでAutoルーティングを使用したところ、セッションごとに脆弱なモデルと耐性のあるモデルの両方が割り当てられました。モデルを明示的に選ばない場合、保護の効果が一定しなくなります。

アクセス可能な標的には、作業ディレクトリ外のファイルも含まれていました。Adversa AIはこの問題を、2026年9月17日にGitHubのバグバウンティプログラムへ報告しました。

GitHubはこの挙動を事実と認めたものの、脆弱性としては分類しないと判断しました。ユーザーが攻撃者の管理するコンテンツを要求したうえで、自律的な動作の権限を与えていたためです。

この攻撃チェーンは10月1日の時点でも再現可能でした。具体的なペイロードは公開されていません。研究者らは、モデルによる拒否に頼るのではなく、エージェントの周囲に対策を講じるよう推奨しています。

防御側には、次の対応が求められます。Webページの取得、コード実行、ローカルファイルへのアクセス、予期しない外部接続を相関分析すること。解決済みの引数を含むツール呼び出しのトレースを保持すること。新たな接続先を制限すること。信頼できないコンテンツを、認証情報やファイルシステムへのアクセス権を持つコンテキストから隔離することです。

ANY.RUNを導入している16,000以上のSOCチームに加わり、脅威調査を効率化して手作業を減らしませんか。チームで試してみる

翻訳元: https://cyberpress.org/github-copilot-cli-flaw/

本記事は cyberpress.org の記事を翻訳・要約したものです。