暗号化された指示でCopilot CLIを欺き、開発者の機密情報を流出させる手法

研究者らは、GitHub Copilot CLIに機密性の高いローカルファイルを読み取らせ、その内容を外部のエンドポイントに送信させることに成功しました。

GitHub Copilot CLIは、悪意あるWebページを1つ開かせるだけで、開発者のマシンから機密ファイルを読み取り、その内容を攻撃者に送信させられる可能性があります。

Adversa AIのセキュリティ研究者らによると、この新たな攻撃手法は「Cryptographic Context Injection(CCI)」と名付けられました。悪意ある指示を暗号化したコンテンツの中に隠す手口です。Copilot CLIが自身のコード実行環境でそのコンテンツを復号すると、指示は信頼できるコンテキストとして扱われます。その結果、エージェントの次の動作に影響を与えることができます。

Adversaの研究者らは実証実験で、Copilotに機密情報を含む「.env.prod」ファイルを読み取らせ、その内容を攻撃者が管理するエンドポイントに送信させました。研究者はブログ記事で、「一連の攻撃は28秒で完了しました。確認は一切求められず、通信先のホストを示す記録も、ファイルの内容がマシンの外に出たことを示す記録も、トランスクリプトには残っていません」と述べています。

Adversaによると、この攻撃はワンクリックで必ず成立する攻撃ではありません。Copilot CLIがオートパイロットモードで動作していることに加え、復号された指示を実行するモデルが使われている必要があります。GitHubはこの発見を事実として確認しましたが、脆弱性とは見なさない立場です。その理由として、ユーザー自身が攻撃者の管理するコンテンツの取得をCopilotに明示的に指示し、しかも自律的に動作するための全権限を与えていた点を挙げています。

Adversaは「GitHubからは、将来的に機能を厳格化する可能性はあるものの、現時点で発表できる内容はないと伝えられました。この報告は、GitHubのバグ報奨金プログラムの対象外とも判断されました」と述べています。研究者らはこの判断に異議を唱えています。同じ指示を平文で提示した場合、Copilotは拒否します。ところが、実行環境内で暗号化と復号を経た指示は受け入れてしまいます。研究者らは、GitHubの判断はこの違いを説明していないと主張しています。

GitHubは、CSOからのコメント要請に対し、すぐには回答しませんでした。

暗号化が攻撃を可能にする

研究者らの説明では、攻撃はユーザーがCopilot CLIを起動し、あるURLの取得を依頼するところから始まる可能性があります。そのページには暗号化された指示が置かれています。エージェントは、2つの鍵候補を使ってこれを復号するよう求められます。

2つの鍵のうち、1つは正規の鍵です。もう1つはテンプレートで、ローカルマシン上のファイルを読み取らなければ完成させられません。攻撃の流れでは、エージェントは2つの鍵を準備しようとして、標的となるファイルを読み取り、その内容をテンプレートに埋め込みます。

このファイルの読み取りこそが、実際の情報窃取にあたります。

再構成された鍵では復号に失敗しますが、攻撃者にとっては狙いどおりです。その後、Copilotは正規の鍵を使います。復号された指示は、別のWebリクエストを送信するよう命じます。このリクエストには、先ほど収集したファイルの内容が載せられ、攻撃者のエンドポイントに届けられます。

攻撃の成否はモデル次第

ただし、Copilotで選択するモデルによって結果は変わります。

研究者らによると、Microsoftのmai-code-1.1-flashモデルは、試行の50%で一連の攻撃を最後まで実行しました。一方、Copilot経由で提供される2種類のGPT-5.6モデルは、同じペイロードを一貫して拒否しました。Adversaによると、モデル選択を「Auto」に設定した場合、一部のセッションでは脆弱なモデルが割り当てられました。ユーザーがモデルを選んだわけでも、ワークフローをどのモデルが処理しているかを確認できたわけでもありません。

GitHubはこれを欠陥と認めず、根本的な挙動も修正しない姿勢です。Adversaは防御側に対し、暗号化されたペイロードをめぐる不審な一連の動作に注意するよう勧めています。具体的には、信頼できないWebコンテンツがエージェントに取り込まれ、コードが実行され、ローカルファイルが読み取られ、その後エージェントが無関係な外部接続を行うという流れです。

翻訳元: https://www.csoonline.com/article/4231763/encrypted-instructions-trick-copilot-cli-to-spill-dev-secrets.html

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