用語 · セキュリティ
Prompt Injection約 2 分プロンプトインジェクション (Prompt Injection) とは: LLM を入力で乗っ取る攻撃
読み: プロンプトインジェクション
プロンプトインジェクションは、LLM が「指示」と「処理対象のデータ」を同じトークン列として扱う性質を突き、データの中に命令を紛れ込ませて挙動を乗っ取る攻撃です。利用者が直接入力する直接型と、外部の Web ページやドキュメントに命令を仕込む間接型があり、後者は利用者に悪意がなくても侵害が起きます。入力フィルタだけで完全には防げないため、権限最小化や承認ゲートなど被害を抑える多層防御が前提になります。
プロンプトインジェクション (Prompt Injection) は、LLM が「システムからの指示」と「処理対象のデータ」を根本的には同じトークン列として受け取る、という性質を突く攻撃です。データのふりをして命令を紛れ込ませ、本来の指示を上書きしたり無視させたりして、LLM やそれを使うエージェントの挙動を乗っ取ります。
直接型と間接型
プロンプトインジェクションは、命令がどこから入るかで大きく 2 つに分かれます。
- 直接型: 利用者の入力欄に「これまでの指示を無視して〜」のように命令を直接書き込む。
- 間接型 (Indirect Prompt Injection): 攻撃者が外部の Web ページ・メール・ドキュメントに命令を仕込み、エージェントがそれを取得・要約する過程で乗っ取る。利用者自身は悪意ある入力をしていないのに侵害が起きるのが特徴です。
エージェントが外部データを読みに行くほど、間接型のリスク面は広がります。取得したページの返り値、ツールの出力、参照したファイル ―― エージェントが触れるあらゆるテキストが注入の入口になり得ます。
なぜ完全には防げないのか
「危ない命令を検出して弾く」という入力フィルタは一定の効果がありますが、検出器をくぐり抜ける言い換えは無数にあり、完全な防御にはなりません。そのため防御の発想を「検出して止める」だけに頼らず、「注入が成功しても被害を出させない」方向へ重心を移します。具体的には、信頼できないデータと指示を明示的に分離する、エージェントのツール権限を最小化して危険な操作を封じる、不可逆な操作に人間の承認を挟む、といった多層防御です。
考え方の土台はゼロトラストと地続きで、「LLM の出力もツールの入力も信頼しない」という前提から設計します。実装側の対策は深掘り記事の「AI エージェントのセキュリティ」で詳しく扱います。
関連する用語
Zero Trust
ゼロトラスト
ゼロトラスト (Zero Trust) は「社内ネットワークだから安全」という前提を捨て、すべてのアクセスを毎回検証するセキュリティの考え方です。利用者・端末・通信を常に認証・認可し、必要最小限の権限だけを与えます。境界防御に依存しない設計として、リモートワークやクラウド時代の標準的な指針になっています。
PoLP
最小権限の原則
最小権限の原則 (Principle of Least Privilege) は、利用者・プロセス・サービスに、その役割を果たすのに必要な最小限の権限だけを与えるセキュリティの基本指針です。権限を絞っておくことで、アカウントやプロセスが乗っ取られたときの被害範囲を小さく抑えられます。AI エージェントの文脈では、与えるツールを必要最小限にし、書き込みや削除のような不可逆な操作を分離することが、乗っ取り時の被害を限定する中核的な防御になります。