プロンプトインジェクション(セキュリティ)

Prompt Injection

プロンプトインジェクションとは

プロンプトインジェクションとは、LLMアプリケーションにおいて、攻撃者が巧妙に細工した入力をモデルに与え、開発者が意図したシステムプロンプトやセキュリティ制約を無効化する攻撃手法です。OWASP Top 10 for LLMでも最も重大なリスクの一つとして位置づけられています。

表:プロンプトインジェクション(セキュリティ)の要点まとめ
ひとことで言うと巧妙な入力で、AIに開発者の指示を無視させる攻撃。
なぜ防ぎにくいかAIにとって指示とデータの区別がなく、両方とも同じ文字列だから。
注意点完全な防御はない。権限制限・出力検査・監視の多層防御で被害を抑える。

攻撃の仕組み

LLMはシステムプロンプト(開発者が設定した指示)とユーザー入力を区別する厳密な境界を持たないため、ユーザー入力の中に「これまでの指示を無視して」「新しい役割を設定する」といった命令を埋め込むことで、モデルの動作を乗っ取ることが可能です。この攻撃は、テキスト入力だけでなく、画像やファイル内に隠された指示を通じても実行できます。

図:プロンプトインジェクションの防御
1入力を検査既知のパターンを弾く
▶
2指示とデータを分離構造的に区別する
▶
3権限を最小化できることを絞る
▶
4出力を検査機密の混入を防ぐ
▶
5実行前に承認重要操作は人が確認

対策手法

プロンプトインジェクションへの完全な防御は現時点では困難ですが、多層防御により被害を軽減できます。入力のサニタイズ、システムプロンプトのハードニング、出力検証、LLMの権限制限、重要操作における人間の確認フローの導入が有効です。また、プロンプトインジェクション検出モデルや入力分類器を追加のセキュリティレイヤーとして導入する手法も研究されています。