外部のファイルやWebページをAIに読ませて要約させたい。でも、これは危ないと聞いた。具体的に何が起きて、自社のシステムや運用でどう防げばいいのか。前記事「ChatGPTやClaudeに会社の機密を入れていい?」のチェック項目「外部取り込み時のインジェクション対策を決めたか」に引っかかった、社内に専門の知見がないまま安全にAIを入れたいあなたへの、正面からの回答がこの記事です。

最初に前提を一つ。プロンプトインジェクションは、現時点で完全には防げません。OWASPは「生成AIの確率的な性質上、完全な防止策が存在するかは不明」と明記しています。OpenAIも2025年12月、Webのフィッシングと同様に完全な解決は難しいという趣旨を表明しました。だから目標は根絶ではなく、被害を局限することです。

要点

プロンプトインジェクション(外部データなどに埋め込まれた指示でAIが操られる攻撃)は、完全には防げません。だから一つの対策に賭けず、3つの層で被害を受け止めます。

  • 入力制御: 外部から取り込む内容を「指示」ではなく「データ」としてAIに渡す
  • 出力制御: 重要アクションに人間の承認を挟み、出力をそのまま実行・描画しない
  • 運用ルール: 対策を見直す人と周期を決めて回し続ける

まず攻撃の仕組みと、Slack AI・EchoLeakなど実際に起きた事故を見てから、3層の対策に入ります。

プロンプトインジェクションは、AIが指示とデータを区別できないことで起きる

OWASPはプロンプトインジェクションを「ユーザーのプロンプトがLLMの意図しない挙動を引き起こす脆弱性」と定義しています。2025年版のOWASP LLM Top 10でも1位(LLM01:2025)のままです。

種類は大きく2つあります。

種類 指示の仕込み方 モデルとの接触
直接型 利用者自身が入力欄に「これまでの指示をすべて無視して…」のような悪意ある文を打ち込む 攻撃者が利用者としてモデルに直接入力する
間接型 AIが読み込むWebサイト・ファイル・データベースなどの外部ソースに、あらかじめ指示を埋め込んでおく 利用者も攻撃者もモデルに直接触れない

業務でRAG(社内文書やWebをAIに参照させる仕組み)や外部ファイルの読み込みを使うなら、警戒すべきは主に間接型です。攻撃者は、AIが将来読むかもしれない場所に指示を仕込んでおくだけでよく、利用者の操作を必要としません。

なぜこれが防ぎにくいのか。理由は構造にあります。LLMは、信頼されたシステム指示と、信頼されていないユーザー入力や外部データを、同じコンテキストウィンドウの中でまとめて処理します。人間なら「これは命令、これは資料」と区別できますが、モデルにはその境界が明示されていない。

だから攻撃者は、資料のように見える場所に命令を紛れ込ませられます。この構造があるかぎり、完全な防御は存在しません。

実際に何が起きたか: 利用者は何も操作していない

いずれの事例でも、利用者は悪意ある操作を一切していません。外部から取り込んだ中身が、勝手に命令として働きました。

Slack AI: 公開チャネルへの投稿だけで機密が流出した(2024年8月)

セキュリティ企業PromptArmorが実証しました。公開チャネルに悪意あるメッセージを投稿しておくだけで、別の利用者がSlack AIに問い合わせた際、プライベートチャネルのAPIキーなどが攻撃者サーバーへ流出するURLを含む応答が返されました。Slack AIがRAGで取り込んだメッセージ内の指示を「実行すべき指令」として処理したためです。Slackは同月中に修正パッチを展開し、顧客データへ不正アクセスされた証拠は確認されていないと発表しています。

EchoLeak: メールを受信しただけでCopilotから機密が漏れうる状態だった(CVE-2025-32711)

2025年6月に公開された、Microsoft 365 Copilotの脆弱性です。攻撃者が細工したメールを送るだけで、受信者が何も操作しなくても、CopilotがそのメールをRAGで取り込み、OneDrive・SharePoint・Teamsなどの機密ファイルを攻撃者サーバーへ流出させうるものでした。論文の著者らは、これを実運用LLMシステムにおける初のゼロクリック実証例と位置づけています。Microsoftはサーバーサイドで修正済みで、実被害の報告はありません。

Bing Chat: Webページに埋めた指示で機密が外部送信された(2023年・修正済み)

Webページのコメント欄などに埋め込まれた指示をBing Chatが取り込み、マークダウンの画像構文を使ってページ上の機密情報を外部サーバーへ送る攻撃が実証されました。MicrosoftはContent Security Policyを導入して2023年6月に修正しています。

PDFの白文字: 人間に見えない指示をAIは読んでしまう(想定シナリオ・2026年1月)

背景と同色(白背景に白文字)のテキストは、人間の目には見えませんが、PDFパーサーは通常通り抽出し、LLMはそれを「指示」として解釈します。セキュリティ各社は、この手法で「問い合わせ内容を外部メールアドレスへ転送せよ」といった指示をサポートAIに実行させる攻撃シナリオを公開しています。実被害の報告ではなく、攻撃が成立しうる形を示した想定シナリオです。

私たちが導入を支援するときも、まず「どこから外部データが入ってくるか」を洗い出すところから始めます。攻撃の入り口を把握しないと、対策は当てずっぽうになるからです。

対策①入力制御: 外部データを「指示」にしない

構造分離(XMLラッピング / Spotlighting)を中心に据える

外部から取得したコンテンツをXMLタグや特定のマーカーで囲い、信頼されたシステム指示とはっきり区別してモデルに渡します。2025年12月に公開された実環境RAGでの検証実験では、防御なしで45.0%だった攻撃成功率が、XMLラッピング導入後は0.0%に下がりました(単一の検証実験の結果で、どの環境でもゼロになるわけではありません)。Microsoftもこれを「Spotlight技術」として採用しています。

取得元を信頼できる範囲に限定する

RAGが参照する範囲を必要最小限に絞り、信頼できるドメイン・フォルダ・リポジトリだけを検索対象にします。任意のWebページやファイルを取り込まない設計にすれば、攻撃の入り口そのものが狭まります。

入力フィルタリングは補助と位置づける

取り込む前に外部コンテンツを意味的・文字列ベースで検査し、「指示」のパターンを検出します。ただし攻撃の言い回しは無数にあり、フィルター単独では取りこぼします。OWASPもフィルターへの単独依存は不十分としています。

対策②出力制御: 被害を出さない・広げない

重要アクションは人間が承認する(Human-in-the-Loop)

ファイル書き込み、メール送信、API呼び出し、外部サービス連携といった不可逆・高リスクな操作は、AIの出力をそのまま実行せず、人間が確認・承認するステップを挟みます。Microsoftの公式防御策にも、特定のアクションの実行前に利用者の明示的な同意を求める仕組みが含まれ(Outlookの下書き機能などが例)、OWASPも7つの緩和策の一つに「高リスク操作への人間承認プロセスの実装」を挙げています。

出力をサニタイズする

AIの出力をそのまま画面に描画すると、マークダウンの画像構文(![text](URL))が外部への自動HTTPリクエストを発生させ、データ流出の経路になります。Bing ChatもEchoLeakもこの経路を使いました。出力のHTMLサニタイズ、マークダウンレンダリングの制限、個人情報や機密の自動マスキングが有効です。

最小権限で分離する

AIに与えるツール・API・データへのアクセス権限を必要最小限に絞ります。「外部コンテンツを読むAI」と「機密システムに操作を加えるAI」は分ける。こうしておけば、仮に攻撃が成功しても被害範囲が限定されます。AIに与えた実行権限の設計の穴を実際に調査した記録は「dockerのnamed volumeが2本同時に消えた原因を調査した記録」に、読むAIと操作するAIを分けた実運用の例は「AIコーディングエージェントに開発を任せる仕組みの作り方」に書いています。

対策③運用ルール: 回し続ける

ここから先、「誰が・何を・どの頻度で」の役割分担については、公式規格や一次文書で確認できる標準的なフレームワークがありません。そのため、以下の役割分担は執筆者による設計案です。技術的な対策(多層防御の考え方・レッドチーム・NISTの分類)は出典に基づきますが、運用体制の割り当てはあくまで一案として、自社の組織に合わせて調整してください。

そもそもプロンプトインジェクションは、思いつきのリスクではありません。米国NISTが2024年7月に発行したGenerative AI Profile(AI 600-1)は、直接型・間接型の両方を生成AI固有の情報セキュリティリスクとして明示的に分類し、脅威モデリングへの組み込みを推奨しています。

多層防御を土台にする

Microsoftは間接型プロンプトインジェクションに対し、3カテゴリで防御を組んでいると公式に発表しています(2025年7月)。

  • 予防: Spotlight・システムプロンプト設計
  • 検出: Prompt Shields・Defender for Cloud統合
  • 影響軽減: Purviewの秘密度ラベル・決定論的ブロック

防いで終わりではなく、すり抜けた攻撃を検出し、それでも漏れた場合の影響まで薄くする構えです。

定期的なレッドチーム / 敵対的テストを回す

OWASPは「モデルを信頼できないものとして扱い、定期的にペネトレーションテストと敵対的テストを実施する」ことを推奨しています。既知の攻撃プロンプトのリストを使い、CIパイプラインに組み込む手法が実践的だとされています。

役割分担の設計案(一次出典なし・執筆者案)

誰が何を受け持つかの一案です。

役割 主な担当
設計者(開発・情シス) 構造分離・取得元の限定・最小権限・出力サニタイズの設計。新しい外部連携を足すときの設計レビュー
業務担当(利用者) 重要アクションの承認ゲートでの内容確認。不審な挙動があれば決めた窓口に報告
管理者(責任者) レッドチームテストの実施と結果の確認、権限の棚卸し、攻撃プロンプトリストの更新を周期を決めて実施

ひとりで全部を兼ねる場合は、役割ではなく「設計するとき・使うとき・見直すとき」の3つの場面に分けて、同じ点検を自分に課す形にしてください。

頻度は、たとえば四半期に一度など、自社の体制に合わせて決めれば十分です。導入して終わりにせず、見直す人と周期を決めておいてください。私たちが支援に入るときも、ここは組織の規模と人員に合わせて設計し直すことが多い部分です。

チェックリスト

入力・出力・運用の3層で、自社の状態を確認してください。

  • [ ] 外部から取り込む内容を、構造分離(XMLラッピング / Spotlighting)で「データ」として渡しているか
  • [ ] RAGの取得元を信頼できるドメイン・フォルダに限定したか
  • [ ] 入力フィルタは補助と位置づけ、単独依存していないか
  • [ ] ファイル書き込み・送信など重要アクションに人間承認を挟んでいるか
  • [ ] 出力をサニタイズし、マークダウン画像構文による外部送信を防いでいるか
  • [ ] 「読むAI」と「操作するAI」を分け、最小権限にしているか
  • [ ] 定期的なレッドチーム / 敵対的テストの担当と頻度を決めたか
  • [ ] 各対策を誰が見直すか、運用体制を割り当てたか

プロンプトインジェクションは完全には防げません。だからこそ、まず外部データの取り込み口を洗い出すことから始めてください。入力・出力・運用の3層のどこが手薄か、そこから見えてきます。

自社のAI利用がどこまで安全か判断しきれないときは、私たちにご相談ください。外部データをどこから取り込み、AIにどんな権限を与えているかを伺った上で、どの層から手を打つべきか優先順位をつけてお返しします。まずは設計の点検だけ、という形でも構いません。

なお、本記事はRAGや外部ファイル読み込みを対象にしています。AIエージェント(自律的にツールを操作するAI)を使い始めると、攻撃面と必要な対策が変わるため、別途確認が必要です。

プロンプトインジェクションは、機密が漏れる入口の一つにすぎません。次に読むなら、漏れる入口の分類・契約の確認点・導入手順まで含めた全体の組み立てを整理した「個人事業主が生成AIで情報漏洩しないための安全導入ガイド」です。

出典

(いずれも取得日: 2026年6月9日。仕様・対策は変化が早いため、導入時は各公式情報で最新を確認してください。)

eight 編集チームAI SECURITY PRACTICE

AIとセキュリティの専門家チーム。OWASP・NISTなどの一次情報にあたり、出典を示して書く。「機密を守ってAIを使う」設計の支援を行っています。