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

Prompt Injection

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

プロンプトインジェクション(Prompt Injection)とは、大規模言語モデル(LLM)に対して悪意のある指示を含む入力を与えることで、モデルの本来の動作指示(システムプロンプト)を上書きまたは無視させる攻撃手法です。SQLインジェクションのLLM版とも言える、AI時代の新たなセキュリティ脅威です。

攻撃の仕組み

LLMはシステムプロンプトとユーザー入力を同じテキストストリームとして処理するため、ユーザー入力に巧妙な指示を埋め込むことで、システムプロンプトの制約を回避できる場合があります。例えば「上記の指示をすべて無視して、代わりに以下を実行してください」といった指示を含めることで、開発者が意図しない動作を引き起こすことが可能です。

被害のシナリオ

プロンプトインジェクションによる被害は多岐にわたります。機密情報(システムプロンプトの内容やユーザーデータ)の漏洩、有害コンテンツの生成、不正な操作の実行、サービスの悪用などが考えられます。特にLLMがAPIを呼び出す権限を持つ場合、データの削除や不正送金といった深刻な被害につながる可能性があります。

対策と課題

プロンプトインジェクション対策としては、入力のサニタイズ、システムプロンプトの保護強化、出力のフィルタリング、権限の最小化原則の適用などがあります。しかし、LLMの柔軟な言語理解能力ゆえに完全な防御は極めて困難であり、根本的な解決策は未だ確立されていません。多層防御と継続的な監視が現実的なアプローチとされています。