本文へスキップ
Dev Dailyエンジニア デイリーニュース

用語 · セキュリティ

Prompt Injection2

プロンプトインジェクション (Prompt Injection) とは: LLM を入力で乗っ取る攻撃

読み: プロンプトインジェクション

プロンプトインジェクションは、LLM が「指示」と「処理対象のデータ」を同じトークン列として扱う性質を突き、データの中に命令を紛れ込ませて挙動を乗っ取る攻撃です。利用者が直接入力する直接型と、外部の Web ページやドキュメントに命令を仕込む間接型があり、後者は利用者に悪意がなくても侵害が起きます。入力フィルタだけで完全には防げないため、権限最小化や承認ゲートなど被害を抑える多層防御が前提になります。

プロンプトインジェクション (Prompt Injection) は、LLM が「システムからの指示」と「処理対象のデータ」を根本的には同じトークン列として受け取る、という性質を突く攻撃です。データのふりをして命令を紛れ込ませ、本来の指示を上書きしたり無視させたりして、LLM やそれを使うエージェントの挙動を乗っ取ります。

直接型と間接型

プロンプトインジェクションは、命令がどこから入るかで大きく 2 つに分かれます。

  • 直接型: 利用者の入力欄に「これまでの指示を無視して〜」のように命令を直接書き込む。
  • 間接型 (Indirect Prompt Injection): 攻撃者が外部の Web ページ・メール・ドキュメントに命令を仕込み、エージェントがそれを取得・要約する過程で乗っ取る。利用者自身は悪意ある入力をしていないのに侵害が起きるのが特徴です。

エージェントが外部データを読みに行くほど、間接型のリスク面は広がります。取得したページの返り値、ツールの出力、参照したファイル ―― エージェントが触れるあらゆるテキストが注入の入口になり得ます。

なぜ完全には防げないのか

「危ない命令を検出して弾く」という入力フィルタは一定の効果がありますが、検出器をくぐり抜ける言い換えは無数にあり、完全な防御にはなりません。そのため防御の発想を「検出して止める」だけに頼らず、「注入が成功しても被害を出させない」方向へ重心を移します。具体的には、信頼できないデータと指示を明示的に分離する、エージェントのツール権限を最小化して危険な操作を封じる、不可逆な操作に人間の承認を挟む、といった多層防御です。

考え方の土台はゼロトラストと地続きで、「LLM の出力もツールの入力も信頼しない」という前提から設計します。実装側の対策は深掘り記事の「AI エージェントのセキュリティ」で詳しく扱います。

この記事を共有:でポストはてブ

関連する用語

出典

注記: 本記事は公開情報をもとにした技術情報の提供を目的としています。 最新の仕様や挙動は必ず一次情報 (公式ドキュメント・リリースノート) をご確認ください。