Skip to main content
AI戦略

プロンプトインジェクション対策:AI機能を作るプロダクトチームのためのセキュリティチェックリスト

プロンプトインジェクションがフィルタだけでは防げない理由、危険なAI機能を見分ける方法、被害を封じ込める6つの設計パターン、開発チーム向けチェックリストを解説します。

著者:Jayson Hao7 分で読めます
プロンプトインジェクション対策:AI機能を作るプロダクトチームのためのセキュリティチェックリストをテーマにした紙と金属のエディトリアル作品
エディトリアル・フィールドノートITL / № 36

この記事のポイント

  • 英国NCSC(2025年12月)は、現在のLLMは指示とデータの間にセキュリティ境界を設けておらず、SQLインジェクションのように根本解決できない可能性があると指摘しています。
  • 「機密データへのアクセス」「信頼できないコンテンツ」「外部への送信手段」の3つがそろう機能は高リスクです。どれか1つを外せば、最も深刻な攻撃は成立しにくくなります。
  • フィルタは攻撃を減らしますが止めはしません。Anthropicの2025年のブラウザエージェント検証では、対策により攻撃成功率は23.6%から11.2%に下がりましたが、ゼロにはなっていません。
  • 本当の防御はコード側に置きます。ツール権限の最小化、重要な操作への人による承認、入出力とツール呼び出しの完全なログです。

プロンプトインジェクションとは?間接型との違い

OWASPは、プロンプトによってモデルの挙動や出力が意図しない形で変えられてしまう脆弱性をプロンプトインジェクションと定義しています。直接型は、チャットボットに入力するユーザー自身が指示を上書きしようとするものです。間接型は、モデルがWebページ、メール、PDF、問い合わせチケットなどの外部コンテンツを読み込み、その中に仕込まれた文章によって動作が変わるものです。OWASPによれば、仕込まれた文章は人の目に見える必要すらなく、モデルが読み取れれば成立します。

プロダクトチームが見落としがちなのは間接型です。NCSCは、採用担当者がAIで履歴書を選考する例を挙げています。応募者が自分の履歴書に指示を隠しておけば、システムはそれを採用担当者からの指示であるかのように処理してしまいます。ユーザー以外の第三者が書いたコンテンツを要約・分類したり、それに基づいて動作したりする機能は、すべてこのリスクを抱えています。

フィルタだけではプロンプトインジェクションを防げない理由

SQLインジェクションは、コードとデータを別の経路で扱うパラメータ化クエリによって根本的に解決されました。英国国家サイバーセキュリティセンター(NCSC)は2025年12月、この比較は危険だと指摘しました。現在の大規模言語モデルはプロンプト内の指示とデータの間にセキュリティ境界を設けておらず、同じ方法で完全に緩和することはできない可能性があるというのです。NCSCはモデルを「本質的に混乱させられる代理人(confusable deputy)」と表現し、目標は攻撃の可能性と影響を減らすことだと結論づけています。残るリスクを許容できないシステムなら、そもそもLLMに向いた用途ではないかもしれない、とも述べています。

OWASPも別の観点から同じ結論に達しています。モデルの出力は確率的なため、完全な防止策が存在するかどうかは不明だとしています。公開された検証結果を見ると、その意味がよくわかります。Anthropicが2025年8月にブラウザエージェント「Claude in Chrome」を対象に29の攻撃シナリオ・123件のテストを行ったところ、新しい対策なしでは23.6%の攻撃が成功しました。サイト単位の権限、操作前の確認、システムプロンプトの改善、分類器を導入すると11.2%まで下がりました。大きな改善ですが保証にはほど遠く、だからこそ最も重要な防御はモデルの外側に置く必要があります。

「致命的な三要素」:危険なAI機能を見分ける簡易テスト

開発者のSimon Willison氏が2025年6月に提唱した「lethal trifecta(致命的な三要素)」は、機能のリスクを素早く判定するのに役立ちます。AIエージェントが「機密データへのアクセス」「信頼できないコンテンツへの接触」「外部と通信する手段」の3つをすべて持つと、データ窃取の危険にさらされます。攻撃者が信頼できないコンテンツに指示を仕込み、モデルが機密データを読み、外部への通信経路でそれを持ち出すという流れです。NCSCのブログも関連する原則を支持しています。ある相手からの入力を処理するとき、モデルの権限はその相手のレベルまで下げるべきだというものです。

機能レビューでは、AI機能ごとにこの3項目を「はい/いいえ」で整理します。3つとも「はい」の機能は公開前に設計を見直します。多くの場合、外部への経路を取り除く(任意のURLへのアクセス、メール送信、出力内での外部画像の表示を禁止する)か、信頼できないコンテンツを読む部分が機密データに一切触れないよう機能を分割します。

プロンプトインジェクションを封じ込める6つの設計パターン

IBM、Invariant Labs、チューリッヒ工科大学、Google、Microsoftなどの研究者による2025年6月の論文「Design Patterns for Securing LLM Agents against Prompt Injections」は、中心となる原則を明快に示しています。エージェントが信頼できない入力を取り込んだ後は、その入力が重要な操作を引き起こすことが不可能になるよう制約しなければならない、というものです。論文は6つのパターンを提案しており、それぞれ柔軟性の一部と引き換えにこの保証を得ます。

  • Action-Selector:モデルは依頼を決められた操作のどれかに割り当てるだけで、結果を受け取りません。問い合わせの振り分けや定型ワークフローの起動に向いています。
  • Plan-Then-Execute:信頼できないデータを読む前に実行計画を確定させるため、ツールの出力が新しい操作を追加できません。渡されるデータが汚染される可能性は残りますが、何を実行するかは選べなくなります。
  • LLM Map-Reduce:信頼できない文書を1件ずつ隔離したモデル呼び出しで処理し、「はい/いいえ」や数値のような制約された結果だけを返してから集約します。大量の履歴書、レビュー、請求書の選別に有効です。
  • Dual LLM:権限を持つモデルは計画とツール呼び出しを行いますが、信頼できない文章は見ません。ツールを持たない隔離モデルがそれを読み、権限側は結果を中身を解釈しない値として扱います。
  • Code-Then-Execute:モデルが最初にプログラムを書き、データがツール間をどう流れるかはモデルではなくそのプログラムが決めます。
  • Context-Minimization:役目を終えたコンテンツは、ユーザー自身のプロンプトも含めてコンテキストから取り除き、注入された指示が後の応答に影響しないようにします。

プロダクトチーム向けプロンプトインジェクション対策チェックリスト

当社がAI機能を設計する際に使っているチェックリストです。OWASPの7つの緩和策、NCSCの助言、致命的な三要素の考え方を組み合わせ、モデルに依存しない対策から順に並べています。

  • アプリケーション専用の認証情報を最小限のスコープで発行し、特権的な処理はモデルのツールとして開放せずコード側で実行する。
  • 支払い、メッセージ送信、データの削除や共有、権限変更など、重要な操作には人の承認を必須にする。
  • すべてのツール呼び出しを、エンドユーザー本人の権限で認可する。モデルが拒否することはアクセス制御の代わりにならない。
  • 期待する出力形式を定義し、後続処理で使う前に通常のプログラムで検証する。
  • 信頼できないコンテンツはタグで囲むなどして「データである」と明示する。ただしこれは減速帯であり、壁ではないと理解しておく。
  • 入出力のフィルタリングを追加するが、既知の攻撃フレーズの拒否リストに頼らない。NCSCが指摘するように、攻撃者は言い換えを無限に作れる。
  • 目立たない持ち出し経路をふさぐ。モデル出力から生成されるリンクや画像の表示、モデルが選んだURLへのアクセスなど。

プロンプトインジェクションのテストと監視の方法

OWASPは、モデルを信頼できないユーザーとみなし、信頼境界とアクセス制御が保たれているかを確かめる敵対的テストを定期的に行うよう推奨しています。自社で扱うデータ形式から小さな攻撃テスト集を作りましょう。隠し指示を含む問い合わせチケット、白地に白文字を埋め込んだPDF、システムプロンプトの開示を求める商品レビューなどです。プロンプト、モデル、ツールを変更するたびにCIで実行し、一度の合格を目指すのではなく成功率の推移を追います。

日本のチームには、IPAが2025年4月に改訂したAIセーフティ・インスティテュート(AISI)の「AIセーフティに関するレッドチーミング手法ガイド」が参考になります。RAGを実装したAIシステムに実際にレッドチーミングを行った手順と成果物の例が示されており、テスト計画のひな形として使えます。監視については、NCSCが不審な動きに気づけるだけのログを残すよう勧めており、モデルの入出力全体、ツールの使用、API呼び出しを含めることも挙げています。失敗したツール呼び出しにはアラートを設定しましょう。攻撃者による探りの最初の兆候である場合があるためです。

AIツールやガードレール製品を導入する際にベンダーへ確認すること

NCSCの購入者への助言は率直です。プロンプトインジェクションを「止められる」と主張するベンダーには注意し、リスクをどう減らすのかを説明できるベンダーを選ぶべきだとしています。Willison氏も、検知率を売りにするガードレール製品について同様の指摘をしています。Webアプリケーションセキュリティの世界では、95%は明らかに「不合格」の水準だというのです。

  • AIが人の確認なしに実行できる操作はどれか。それぞれ個別に無効化できるか。
  • AIはエンドユーザー本人の権限で動くのか、共有のサービスアカウントで動くのか。
  • モデルが選んだ送信先(回答内のリンクや画像を含む)へデータを送れる仕組みはあるか。
  • 何をログに記録し、どれだけ保存し、自社のセキュリティツールへ出力できるか。
  • 直近の敵対的テストの結果と、その範囲はどうだったか。

著者

Jayson Hao

Innovation Trigger Lab創業者。トロント大学コンピュータサイエンス(AI/ML)出身。RAG、AIチャットボット、Web・モバイルプロダクトの設計と本番導入に携わっています。

プロフィールを見る

よくある質問

プロンプトインジェクションは完全に防げますか?

現在のモデルでは防げません。OWASPは完全な防止策があるかは不明とし、英国NCSCは完全には緩和できない可能性があるとしています。注入が成功しても重大な被害が出ない設計にすることが重要です。

プロンプトインジェクションとジェイルブレイクの違いは何ですか?

OWASPは、入力によってモデルに安全上のルールを完全に無視させるジェイルブレイクを、プロンプトインジェクションの一形態として扱っています。プロンプトインジェクションは、文書やWebページに隠された間接攻撃も含む、より広い概念です。

システムプロンプトを工夫すれば防げますか?

多少の効果はありますが、セキュリティ対策にはなりません。OWASPはモデルの振る舞いの制約を7つの緩和策の1つとしており、NCSCはLLMに依存しない決定論的な防御に重点を置くよう勧めています。

RAGを使ったチャットボットもプロンプトインジェクションの対象になりますか?

対象になります。検索対象の文書に間接的な指示が含まれ得るためです。さらにツール呼び出し、機密データの参照、回答内でのリンクや画像の表示ができる場合、リスクは大きく高まります。

出典・参考資料

  1. 1.
  2. 2.
  3. 3.
  4. 4.
  5. 5.
    Claude in Chromeの試験提供Anthropic, 2025年8月25日
  6. 6.
    AIセーフティに関するレッドチーミング手法ガイドを改訂しましたIPA (Information-technology Promotion Agency, Japan), 2025年4月2日