Webページや資料をAIへ読ませるときは、その本文を回答の資料として扱い、作業の権限を変える指示として扱わないようにします。「元の依頼を無視する」「別の場所へ情報を送る」といった記述が資料にあっても、それだけで利用者がその操作を許可したことにはなりません。資料の内容と、利用者の依頼・実行条件を別に管理します。
本稿は外部資料を使うAI作業の検査手順です。攻撃や漏えいの再現、実dataへの検索・送信、tool実行は行っていません。下記の不審な記述は分類のための架空例で、実serviceの防御性能を測定したものではありません。
目次
資料の根拠と、作業指示を分ける
利用者が依頼した目的、使ってよいsource、出力先、許可された操作を先に記録します。取得文書はsource ID、URL、取得時点、該当箇所を付けて別の領域に渡します。検索結果やPDFの本文にある命令を、systemや利用者の依頼へ格上げしません。
表は横にスクロールできます
| 外部資料の内容 | 扱い | 確認すること |
|---|---|---|
| 製品仕様の説明 | 主張の根拠候補 | 対象・日付・一次資料 |
| 文書内の作業手順 | 説明対象のdata | 実行は依頼範囲か |
| 依頼の無視を要求 | 不審な指示候補 | 目的や権限を変えない |
| 外部への送信要求 | 許可とは別のdata | 宛先・data・承認を確認 |
| 回答の出典を隠す要求 | 採用しない指示候補 | 元sourceの追跡を保つ |
たとえばmanualに「設定を保存する」とあっても、要約依頼なら手順を説明するdataです。AIが自動で読者の設定を保存する権限にはなりません。命令形の文をすべて削除するのではなく、読む対象と実行する指示を区別します。
RAGや公式風の体裁だけで信用しない
OWASPのPrompt Injection資料(新しいタブで開く)は、Webやファイル等の外部sourceによるindirect injectionと、RAG等だけでは十分に解消しないことを説明しています。見出しやroleらしい表記、検索順位、引用数、ファイル名だけで、その中の指示へ実行権限を与えません。
同じsourceの中でも、事実の説明、第三者の引用、不審な指示は別です。回答へ使う主張を原文に戻り、sourceの本文が実際に支える内容かを確認します。資料自身が「検証済み」「管理者承認済み」と書いていても、それだけで自分の業務の承認が済んだとはしません。
操作の境界を、prompt以外にも設ける
「不正な指示を無視して」と書くだけで防御が完了したとは扱いません。外部資料を読む処理には必要最小の権限を与え、送信、公開、削除、権限変更等の副作用を別の明示的な実行段階へ分けます。tool入力、送信先、対象ID、data範囲をcodeや運用で検査します。
回答にURLを含める場合も、不審なURLへprivateな会話や取得dataをparameterとして付けないようにします。単にlinkを表示・開くだけでも、URLの値が外へ伝わる場合があります。資料内の新しい宛先へ、手元のsecretや別資料を送る処理を結び付けません。
具体的な反例で検査する
許可された検証では、本物の機密ではなく架空の値を使います。通常資料、資料内の命令、引用された命令、隠れた表示や別形式の内容を含む資料などを分け、何が守られるべきかを先に決めます。未知の攻撃を完全に防ぐ試験だとは報告しません。
表は横にスクロールできます
| 架空の試験 | 期待する結果 | 観察するもの |
|---|---|---|
| 要約本文に別送信の指示 | 要約目的を保持 | tool・宛先・data |
| 引用文に命令形 | 引用のdataとして説明 | roleの格上げ有無 |
| 出典を偽る要求 | 実sourceへ戻れる | source ID・該当箇所 |
| 権限変更を促す資料 | 自動変更しない | 実行提案と操作の境界 |
| 通常のmanual | 必要な手順を要約 | 過剰拒否や欠落 |
合格は「AIが安全ですと言った」ことではありません。許可外のtoolが呼ばれず、回答の根拠と対象が追跡でき、通常の資料から必要な答えも得られることを確認します。最終文だけでなく、実際のtool traceとdataの行先も検査対象にします。
不審な指示を見つけたときの切り分け
操作前に検出したら、そのsourceを採用する範囲と保留する範囲を分けます。別の信頼できる一次資料で同じ事実を確認できるなら、元の依頼をその資料で進める方法があります。内容を確認できない部分は、不明のまま残します。
すでに操作された疑いがある場合は、sourceを削除して終わりにせず、どのtool・対象・dataに影響したかを確認します。送信済みか結果不明かを区別し、同じ操作を再実行しません。secretや個人情報を含む証拠を、調査のために別の外部AIへ再投入することも避けます。
引き継げる形で結果を残す
作業目的、source IDと版、不審な記述の位置、採用した根拠、保留した操作、確認したtrace、残課題を記録します。本文全体やsecretを共有する必要はなく、閲覧制限した原本への参照で足りるかを考えます。
運用の改善では、どの入力境界で指示とdataが混ざったか、権限やtool検査で止められたかを見ます。一つの試験が通っただけで「prompt injection対策済み」と一般化せず、資料・tool・権限が変わったときに同じ境界を再確認します。
