0 / 7 節読了

外部ページの内容が、端末の操作命令へ変わる

開発用AIにWebページを読ませることと、端末の認証情報を外へ送ることは、利用者にとって別の依頼だ。ところが、同じエージェントが外部の文章を読み、コードを実行し、ファイルを開き、ネットワークへ接続できると、その境界を越える一連の行動が成立することがある。

Adversa AIが10月6日に公表したCryptographic Context Injectionの検証は、GitHub Copilot CLIをその例として扱う。研究者の報告によると、autopilotで広い権限を与えたCLIが、外部ページに置かれた暗号化された指示を復号し、ローカルの秘密情報を外部へ送った。通常設定の全利用者で同じことが起きるという結果ではなく、権限とモデルに条件がある検証だ。

暗号化は、検査される場所をずらすために使われた

一般的なプロンプトインジェクションは、ページや文書の中に、作業の目的を変えさせる命令を紛れ込ませる。今回の手法は、命令をそのまま読める文章として置く代わりに、暗号文と復号に必要な材料を渡す。エージェントが実行環境で内容を解くと、外部由来の命令が自分の処理結果として現れる。

研究者は、同じ命令を平文で示した場合には拒否されたと説明する。問題は暗号そのものの強さではない。外部から入った内容が、処理を一段経た後に、信頼できる作業指示のように扱われたことにある。文字列の見た目だけを検査する方式では、復号後の内容と、その内容が導く行動を十分に追えない可能性がある。

報告では、復号の準備中にローカルの.env.prodを読み、その後に別の復号結果に従って外部へ送る流れが示された。機密情報の読み取りと送信は、一つの露骨な命令としてではなく、作業の途中に分かれて現れる。記事を読む際には、この順序が重要だ。ただし、ここでは攻撃の再現用命令や実行コードは掲載しない。

28秒と50%を、そのまま普遍的な危険度にしない

Adversa AIは、一連の処理が28秒だったこと、MAI-Code-1.1-Flashでは試行の50%で完了したこと、同じ指示を二つのGPT-5.6モデルは拒否したことを報告した。これは同社が試した条件下の観察である。試行回数が示されていないため、50%から統計的な確かさまで判断することはできない。

モデルが異なれば、同じツールと権限でも行動が変わる点は注目に値する。一方、一度拒否できたモデルなら今後のすべての攻撃も防げる、と読むこともできない。入力の形、履歴、設定、製品の更新などで条件は変わる。

同社は、モデルをAutoにした一部のセッションで、攻撃を実行したモデルが選ばれたとも説明している。自動選択を利用すると、品質と速度だけでなく、外部指示への抵抗力も選択先に依存する可能性がある。利用者の環境でどのモデルが選ばれ、その情報がどこに記録されるかを確認する価値がある。

GitHubの扱いは、研究者側の報告として読む

研究者は9月17日にGitHubのバグバウンティへ報告し、10月1日時点で、内容は検証されたものの脆弱性として扱われなかったと説明する。理由として、利用者が攻撃者のページを読むよう依頼し、Copilotへ自律実行の全権限を与えていたという回答を紹介している。

今回確認した範囲では、この個別判断を説明するGitHub自身の公開声明は確認できていない。したがって、判断の経緯はAdversa AIの説明として帰属を明示する必要がある。両社の見解が一致したかのように書くべきではない。

研究者が問題にするのは、利用者がWebページの調査を許可したことと、そこから読み取った別の命令に従って秘密情報を送ることの違いだ。一方、広い権限を設定した実行環境では、ファイルの読み取りも外向き通信も技術的には許されている場合がある。この差は、製品の権限モデルと、人が意図した目的の間にある。

既定の権限と、全権限の自律実行を区別する

GitHubのCopilot CLIの説明は、ツールの利用やアクセス範囲の管理を案内している。自律実行の公式資料も含め、実際に使う設定で確認すべきだ。autopilotという名称だけで、全権限を持つ状態と権限を絞った状態を同一視しないことが重要になる。

アクセスを許可する設定が用意されていることは、その設定で外部情報を何でも安全に扱えるという保証ではない。反対に、今回の検証を、既定状態の端末がページを見るだけで必ず侵害される事例として扱うのも不正確だ。成立条件を外してしまうと、利用者はどこを変えればよいか分からなくなる。

権限チェックがあっても、複雑なシェルや難読化された通信先まで常に完全に判定できるとは限らない。許可先の一覧だけで守るのか、実行環境そのものの通信を絞るのかという違いもある。設定の名前より、実際に何が拒否されるかを確認する必要がある。

行動のつながりを監査する

以下は編集部の実務上の考察だ。個々の入力を安全と判定しても、その後に「外部情報を取得する」「コードを動かす」「秘密を読む」「無関係な相手へ送る」という連鎖ができれば、被害につながる。一つのツール呼び出しだけを見るより、セッションを通した操作の関係を追う必要がある。

記録するなら、命令のひな形だけでなく、実行時に決まったファイルの場所と通信先を残したい。エージェントの最終要約が、すべての読み取りや送信を正しく説明するとは限らない。報告文と実行ログを独立して確認できることが、検知にも事後調査にも役立つ。

防御では、外部文書を読む処理から、本番の認証情報を触れられないようにする方法が考えられる。調査用の環境には機密を置かず、必要なデータだけを別工程で渡す。コード実行の権限も、作業の完了に必要な範囲へ狭める。自然言語で「秘密を送らない」と書くだけより、送れる経路と読める範囲を減らすほうが、モデルの誤りに耐えやすい。

日本の開発チームが見直せる運用

普段の作業ディレクトリに本番の.envやクラウドの認証情報が混在しているなら、AIを導入する前から整理する価値がある。外部の課題票、README、Webページを大量に読ませるセッションと、本番環境を操作するセッションも分けたい。便利さのために一つへまとめるほど、文書の一行が触れられる範囲は広がる。

自動選択するモデルの評価には、正しいコードを作れるかに加え、作業と無関係な外部命令を拒否するかを含める。その確認は実際の秘密を使わず、隔離した試験環境と模擬データで行えばよい。モデルを更新したときや、許可するツールを増やしたときも、同じ条件で比較できるようにする。

なおAdversa AIは、エージェント向けのセキュリティ製品を提供する事業者でもある。公開した研究の観察結果と、自社製品の有効性の宣伝は分けて読む必要がある。特定の製品を導入したことだけで解決とせず、社内の権限、記録、通信の制約に照らして評価したい。

今回の研究が示す核心は、暗号文の有無より、処理した外部情報をどの段階で命令として信頼するかだ。モデルの拒否する能力と、実行環境が止める能力を重ねることが、AIへ任せる範囲を広げる土台になる。

参考報道:イノベトピア。確認日:2026年10月17日。運営会社:RO合同会社の公式HP。

ポッドキャスト燎RYOU課 ポッドキャスト

ポッドキャストを聴く →
柴亮太
柴亮太の視点