GitHub Copilot CLIに脆弱性、開発者のシークレットやローカルファイルが窃取される恐れ

Adversa AIの研究者らは、細工を施したWebページによってGitHub Copilot CLIをだまし、.envファイルなどのローカルシークレットを読み取らせて攻撃者に送信させることが可能だと指摘しています。GitHubはこれを製品の脆弱性とは認めていませんが、Adversaは説明どおりの攻撃チェーンが今も成立するとしています。

この手法は「Cryptographic Context Injection(CCI)」と呼ばれます。Adversa AIが公開した調査によると、同社は2026年8月にxAIのGrokに対してこの手法を最初に報告しており、Geminiでも同様の回避を再現しました。

攻撃者は平文のプロンプトを使わず、強力な暗号文、鍵の素材、そして復号を指示する命令を用意します。これにより、エージェントは自らのコード実行環境で復号処理を実行するよう誘導されます。

テキストを検査するフィルターは、暗号文に含まれる悪意を見抜けません。研究者のRony Utevsky氏は、静的なガードレールはテキストを読むだけで、実行はしないと述べています。Cloud Security Allianceの分析によると、ペイロードにはPBKDF2による鍵導出を伴うAES-256-GCMが使われています。

想定されるシナリオでは、ユーザーがCopilot CLIをオートパイロットモードで実行し、特定のURLの取得を依頼します。windowsforumのページには、暗号化されたコンテンツ、Pythonによる復号手順、2つの鍵候補が含まれています。

1つ目の鍵はおとりのテンプレートです。エージェントはユーザーの.envなど狙われたファイルをディスクから読み込み、その内容を付け加えてこの鍵を組み立てます。おとりの鍵では復号に失敗するため、エージェントは2つ目の鍵を試し、こちらで復号に成功します。

復号された命令は、エージェントに「詳細な文脈を得るため」として別のURLを取得するよう指示します。このURLには収集されたシークレットが含まれているため、リクエストを送るだけで攻撃者に情報が渡ります。theregister

Adversaによると、暗号化したページ1つだけで、Copilot CLIにローカルのシークレットを攻撃者へ送信させるのに28秒で足りました。adversa

成否は、セッションを処理するモデルによって左右されます。Microsoftのmai-code-1.1-flashは、50パーセントの試行でチェーン全体を実行しました。OpenAIのGPT-5.6の2モデルは、ペイロードを拒否しました。theregister

脆弱だったモデルは、Adversaが検証した有料アカウントの既定モデルではなく、手動で選択する必要がありました。一方、Autoのままにしたアカウントでは、ルーターがセッションによって脆弱なモデルを割り当てることもあれば、安全なモデルを割り当てることもありました。ユーザーは既定の設定から何も変えていませんが、使用中のモデルが常に分かるとは限りません。theregister

Adversaは2026年9月17日、GitHubのバグバウンティプログラムを通じてこの問題を報告しました。GitHubのトリアージチームは発見内容を検証しましたが、脆弱性として扱うことは見送りました。

GitHubの広報担当者は、この攻撃が成立するには、ユーザーが攻撃者の管理下にあるコンテンツや信頼できないコンテンツをCopilot CLIに意図的に取得させ、さらに操作の実行を承認する必要があると説明しました。GitHubは、今後も製品を改善する方法を常に模索しているとも述べています。theregister

これは実証された攻撃チェーンであり、実際の攻撃で悪用された被害は報告されていません。確認できた報道では、CVE番号への言及もありませんでした。windowsforum

今回の発見は、Copilotに関する過去のデータ窃取研究に続くものです。CamoLeak(CVE-2025-59145、CVSS 9.6)は、プルリクエストに仕込んだ隠し命令を使い、Copilot Chat経由でプライベートリポジトリのシークレットを盗み出しました。GitHubはCopilot Chatの画像レンダリングを無効にすることで修正しています。legitsecurity+1

GitHubのドキュメントによると、Copilot CLIは既定でディレクトリ単位に権限が制限されており、危険性のあるコマンドの実行やファイルの変更の前に確認を求めます。このチェーンはローカルファイルの読み取りと外部へのリクエスト送信に依存するため、権限と設定によって攻撃が完了するかどうかが決まります。docs.github+1

推奨される対策は次のとおりです。正当な作業であっても、取得したWebコンテンツは信頼できないものとして扱います。信頼できないコンテンツに触れるセッションでは、–allow-allや–yoloを使わないようにします。承認プロンプトは自動で受け入れず、毎回内容を確認します。.envファイルなどのシークレットはエージェントが届かない場所に置きます。可能な範囲でサンドボックスを活用します。モデルの選択をAutoのままにせず、ペイロードを拒否することが確認されているモデルに固定します。

セキュリティチームは、ファイルの読み取りとネットワークリクエストの両方が可能なコーディングエージェントを、データ流出の経路として扱う必要があります。

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

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