THREAT BRIEFING · AI ASSISTANT × INDIRECT PROMPT INJECTION
SafeBreach Labs「Invitation Is All You Need」(2025年8月6日公開)および Ben Nassi・Stav Cohen・Or Yair による論文「Invitation Is All You Need! Promptware Attacks Against LLM-Powered Assistants in Production Are Practical and Dangerous」(arXiv、8月16日)に基づく図解解説。 ブログと論文の著者は同一で、論文は査読前のプレプリントである。
この事案は「誰かが被害に遭った事件」ではない。研究者が自分で仕掛けて自分で確認した実証である。そこを取り違えると、以下の数字はすべて過大に読める。
本記事が参照する文書は3本あるが、独立した当事者は2者しかない。この点を先に置く。
加えて、SafeBreach は侵害・攻撃シミュレーション製品を販売する事業者であり、脅威の重大性の見積もりに事業上の利害がある。 これは研究内容を否定する材料ではないが、数値を他社製品や他の脆弱性と横並びに比較する用途には使えないことを意味する。
著者らの主張は「Gemini に穴があった」ではない。プロンプトウェア(Promptware)は実務上の脅威として過小評価されているという主張であり、 Gemini はそれを示すための題材である。著者らは、業界が過小評価する理由を次のように書いている。
Additionally, some perceptions are influenced by an overestimation of the security of machine learning systems in production environments, the minimal occurrences of such attacks in the wild, and the fact that many academic findings in this field do not transfer to real systems.
本件の読みどころは、攻撃の派手さではなく「判定がどこまでを見ていたか」である。
利用者の画面には最後まで異常が出ない。ずれているのは、画面とモデルの文脈のあいだである。
Gemini にカレンダーを尋ねると、直近5件が表示され、それ以上は折りたたまれる。著者らはここに着目した。
Fortunately for us, the events that are contained inside this “Show more” button, even if not expanded, are still added to the chat's history and are therefore added to the context.
攻撃者は招待を大量に送る必要すらない。被害者の予定が既に5件以上あれば、後から届いた招待は自動的に折りたたみの側へ落ちる。 そこに置かれた指示は、利用者の目に触れないまま、モデルの読む範囲には確実に入る。
Gemini には、この種の動きを止めるための判定があったと研究者は見ている。それが外れた理由は、判定が見ている範囲にある。
どちらも、要求と実行が同じやり取りの中にあることを前提にしている。研究者が使ったのは、この前提を外す方法だった。 ただしその方法自体は本研究の発明ではない。著者は明確に既知技術として扱い、先行研究に帰属させている。
To bypass such limitations, we thought about using a known technique called Delayed Tool Invocation (recently also leveraged by Johann Rehberger).
情報を持ち出すための URL 組み立てについて、研究者は制御の適用範囲そのものを言い当てている。
We now understood that this mitigation would only be triggered if the URL was opened right after it was dynamically assembled.
そこで著者らは、あるやり取りで URL を組み立てて書き出しておき、別のやり取りでそれを開かせた。 メールの件名を宛先ドメインの後ろにつなげた URL が開かれ、件名がサーバ側に渡っている。
もうひとつ、判定の網とは別に効いたのが確認の欠落である。ブラウザは外部アプリを開く前に利用者へ確認を出す。Gemini は出さなかった。
Gemini, however, does not do that. When we open an HTTPS URI that redirects to an app using Gemini, Gemini blindly follows it and opens the URI no matter where it leads!
この事案は「新技術による突破」として語られやすい。一次情報を読むと、そうは書かれていない。
| 論点 | 一次情報が述べていること | したがって書けないこと |
|---|---|---|
| 遅延起動(時間差) | 事実 著者自身が「既知の手法」と明記し、Johann Rehberger の先行に帰属させている [1] | 「時間差という発想が新しい」——書けない |
| 折りたたみ表示の悪用 | 事実 展開しない予定も文脈に入る。著者はカレンダーのこの表示を「他のエージェントにはない特別なもの」と位置づけている [1] | ここは新規性を書いてよい。ただし「新しい注入経路ではなかった」とも書けない |
| 破られた防御の格 | 事実 論文は「研究時点で、上記の緩和策は無効だったか、そもそも展開されていなかった」と明記している [2] | 「Google のクラス単位の対策が破られた」——書けない |
| 推定された2つの制御 | 推定 原文はヘッジ付き。Google は存在を認めても否定してもいない [1] | 「Google は◯◯という対策を実装していた」と断定形で——書けない |
残るのは、次の形である。見えないまま履歴に残り続ける指示の置き場と、既知の遅延起動を組み合わせると、1回のやり取りの内側しか見ていない型の判定は外れうる。 派手さは落ちるが、こちらのほうが実務では効く。自社のエージェントに同じ形の判定を置いていないかという問いに、そのまま変換できるからである。
5つの脅威クラスにわたる14件。ただし、そのうち1件は本研究では実演されていない。
| 脅威クラス | シナリオ | 注記 |
|---|---|---|
| 短期文脈の汚染 | 有害コンテンツの生成 / 迷惑メッセージ / フィッシング | Gemini の定型応答と同じ語形を使うと追従されやすい(著者は「注意の上書き」と呼ぶ) |
| 長期記憶の汚染 | 偽情報の刷り込み | 未実証 本研究では実演していない。他者が先に示しているため、評価の網羅性のために項目として置いたと明記されている |
| ツールの悪用 | 予定の削除・追加 | 1回の呼び出しで複数のツールを連ねる |
| エージェントの自動起動 | 家電の操作(窓の開放 / ボイラー起動 / 照明) | 研究者自身の環境での実演 |
| アプリの自動起動 | ファイルのダウンロード / 位置の特定 / Zoom による映像配信 / ブラウザ経由の持ち出し(予定・メール) / ブラウザを使ったワーム | Android 限定 OS の権限に依存するため、このクラスは Android のみ。iOS では成立しない |
最も引用される数字だが、これは著者らが同じ論文の中で提案した独自の評価枠組みによる、著者ら自身の採点である。 枠組みも、採点対象のシナリオも、採点者も同じ側にある。攻撃者の熟練度・必要機材・機会の窓・利用者操作の頻度といった入力変数は、 この種の評価で一般的な語彙であり恣意的なものではない。正確な批判は「根拠がない」ではなく、自己適用であり外部検証を経ていないである。 したがって他社製品や他の脆弱性との横並び比較には使えない。
論文は緩和策を適用した場合の再評価も行っており、抄録は「リスクは Very Low-Medium まで下がりうる」と述べている。 ここは誤読が起きやすいので、2点を分けて置く。
Google は本件の手法を「理論的」と呼んだ。論文の表題は「本番環境で」と言っている。どちらの読みも成り立つ材料が揃っている。
Google が研究者へ提供した声明には、次の一節がある。
The paper detailed theoretical indirect prompt injection techniques affecting LLM-powered assistants and was shared with Google in the spirit of improving user security and safety.
時系列が近いために混同されやすいが、Google が2025年6月13日に公開した多層防御のブログ [3] は、本研究を名指ししていない。 3名の研究者への言及はあるが、多数の協力研究者を挙げた汎用的な謝辞の一部であり(Google は Ben Nassi の肩書きに所属機関ではなく研究領域名を当てている)、特定の発見を彼らに帰属させてもいない。 研究名の入った声明が用意されたのは、その13日後の6月26日である。
事実 時期が重なっている。 不明 6月のブログが本件への対応だったかどうか。一次情報からは決められない。
一次情報が明示的に「していない」「できない」と述べている事項。ここを落とすと、この事案は実際より大きく見える。
| 項目 | 一次情報の記述 |
|---|---|
| 野良での悪用 | 観測の報告はない。全編が著者自身による実演である |
| CVE | 付与されていない。3本の一次情報のいずれにも記載がない |
| 偽情報(長期記憶の汚染) | 本研究では実演していない。他者が先に示しているため、評価の網羅性のために項目として置いたと明記 |
| iOS | アプリの自動起動は OS の権限に依存するため Android 限定。Zoom による映像配信もこのクラスに属する |
| 放置していた場合 | 発火しない。被害者が Gemini に予定やメールを尋ねる操作が必要。ただしその操作は「今日の予定は?」という日常動作である |
| 攻撃者が知らなくてよいもの | メールアドレスは知っている必要がある。ただしこれは安心材料にならない |
| 招待の着弾 | カレンダー設定に依存する(全員から/既知の送信者のみ/メールで応答した場合のみ)。どれが既定値かは一次情報に記載がない |
| Google の対策の展開 | Google は「内部テストで検証のうえ開示に先立ち全利用者へ展開した」と述べている。独立した検証は存在せず、展開が完了していたかは確認できない |
| 推定された2つの制御 | Google は存在を確認も否認もしていない |
同じ「間接プロンプトインジェクション」でも、破れた場所が違う。そこが対策の当て所を分ける。
| 事案 | 指示の入り口 | 破れた場所 | 本件との差 |
|---|---|---|---|
| 本件 Gemini / カレンダー招待 |
共有リソース(招待のタイトル)。折りたたまれて見えない領域 | 1回のやり取りの内側しか見ていない判定。加えて、アプリ起動時の確認の欠落 | — |
| Comet Perplexity / Reddit のコメント |
閲覧中のページの本文 | 公開前監査でクラス単位に塞いだはずの穴が、別経路で再発 | あちらは「塞いだクラスの再発」。本件は塞いだ範囲がそもそも狭かった——しかも著者は研究時点で緩和策が効いていなかったと書いている |
| Gemini CLI Trail of Bits / 画像 |
入力の前処理(画像の縮小で初めて現れる文字) | 利用者が見た画像とモデルが読んだ画像の食い違い | あちらの持ち出しには自動承認という別条件が要った。本件はブラウザなら出る確認が出なかった。どちらも「確認をどこに置くか」の話 |
| EchoLeak M365 Copilot / メール1通 |
受信したメール | スコープ違反+実装漏れの合流 | あちらはゼロクリック。本件は利用者の操作が要るが、その操作は日常動作であり、実質的な差は見た目ほど大きくない |
自社が AI アシスタントを業務に入れているなら、確認すべきは「どんな文章を止めているか」ではなく「いつ、何の権限で、何が実行されるか」である。