Critical GitHub Copilot Vulnerability Let Attackers Exfiltrate Source Code From Private Repos
2025/10/10 CyberSecurityNews — GitHub Copilot Chat に存在する深刻な脆弱性 CVE-N/A (CVSS 9.6) を悪用する攻撃者は、非公開リポジトリからソースコードや機密情報を気付かれずに窃取することが可能だったという。この脆弱性を悪用するシナリオは、GitHub の Content Security Policy (CSP) を巧妙に回避しながら、新たなプロンプト注入技術を用いるものだ。それにより攻撃者は、悪意のコードやリンクを提案し、被害者の Copilot インスタンスを広範に制御する可能性があった。この問題は HackerOne を通じて責任ある形で報告され、その後に GitHub は修正を適用した。

GitHub Copilot の脆弱性
この攻撃は、GitHub Copilot のコンテキスト認識機能を悪用することから始まる。この AI アシスタントは、コードやプルリクエストなどのリポジトリ情報を用いて、適切な回答を提供するよう設計されている。
Legit Security の研究者が発見したのは、GitHub の非表示コメント機能を利用してプルリクエストの説明文に悪意のプロンプトを直接埋め込むシナリオだ。コメント自体はユーザー・インターフェイス上で非表示となるが、その内容は Copilot により処理される。つまり攻撃者は、悪意のプロンプトを隠し持ったプルリクエストを作成し、そのプルリクエストを用いて、Copilot で解析する開発者のセッションを侵害する可能性を手にする。
Copilot はリクエストを発行したユーザーの権限で動作するため、被害者の非公開リポジトリのデータへのアクセスと操作が、注入されたプロンプトから AI に対して命じられることになる。
URL 辞書を用いたセキュリティ回避
攻撃者にとっての大きな障壁は、GitHub の厳格な Content Security Policy (CSP) である。これは、AI による外部ドメインへのデータ漏洩を防ぐ仕組みである。
GitHub はサードパーティ・サイトの画像を安全にレンダリングするために、Camo と呼ばれるプロキシ・サービスを利用している。Camo は外部の画像 URL を署名付きの “camo.githubusercontent.com” リンクへ書き換え、GitHub により生成された有効な署名を持つ URL のみを処理するという仕様を持つ。
その結果として、攻撃者が単に <img> タグを挿入して自身のサーバへデータを送信する行為は阻止される。この制限を回避するため、研究者は独創的な手法を考案した。
彼らは、有効な Camo URL の辞書を、すべての文字と記号ごとに事前に生成している。このセキュリティ・レポートによると、各 URL は彼らが管理するサーバ上の 1×1 の透明ピクセルを指していた。
最終的に挿入されたプロンプトは Copilot に対して、被害者の非公開リポジトリ内の機密情報 (AWS キーやゼロデイ脆弱性の説明など) を検索するよう指示するものだ。
その後に Copilot は、事前に生成された Camo URL 辞書を用いて、この情報を一連の目に見えない画像として描画した。被害者のブラウザが、これらの画像をレンダリングすると、攻撃者のサーバへ向けた一連のリクエストが送信され、機密データが 1 文字ずつ漏洩した。
この PoC エクスプロイトが実証したのは、プライベートリポジトリからのコードの流出の成功である。この脆弱性の開示を受けて、GitHub は 2025年8月14日に脆弱性を修正し、Copilot Chat 機能内の画像レンダリングによる攻撃ベクターを無効化した。
GitHub Copilot Chat の脆弱性ですが、その原因は、AI 側におけるコンテキストへの過剰な信頼と、レンダリング経路の不備にあると感じます。非表示コメントをプロンプトとして取り込んでしまう点や、Copilot が利用者権限で秘密情報にアクセスできる点、そして、Camo 経由の画像レンダリングを巧妙に利用して CSP を回避できた点が重なり、結果的に非公開リポジトリの情報が漏えいするという構図です。よろしければ、Prompt Injection で検索も、ご参照ください。


You must be logged in to post a comment.