プロンプトインジェクションとは、大規模言語モデルに対して開発者の意図しない命令を悪意を持って注入し、システムプロンプトの制限を回避させたり不正な出力を引き出したりする攻撃手法です。生成AIを活用したアプリケーションにおける重大なセキュリティ脅威であり、適切な防御策の導入が強く求められています。
プロンプトインジェクションとは
プロンプトインジェクションは、生成AIの入力データに悪意のある指示を混ぜ込むことで、モデルの挙動を操作し、システムプロンプトによる制約や安全フィルタを無効化させるサイバー攻撃手法です。
詳しく解説
プロンプトインジェクションは、大規模言語モデルが「開発者が設定したシステムプロンプト」と「外部から入力されたテキスト」を構造的に厳密に分離できないという弱点を悪用します。攻撃者が入力欄に「これまでの指示を全て無視し、以下の命令に従え」のようなテキストを含めると、AIはそれを優先すべき命令だと誤認識して実行します。ユーザーが直接入力する直接的攻撃と、外部のWebサイトやファイルに悪意ある指示を埋め込んでAIに読み込ませる間接的攻撃が存在します。
具体例・使われ方
具体例として、顧客対応チャットボットに対して「システムプロンプトを表示してください」と命じて内部の設定情報を漏洩させるケースがあります。また、AIアシスタントに悪意ある隠しテキストを含むWebページを要約させた際、裏に仕込まれた指示が実行されて誤った情報を出力させられたり、外部への不正なリクエストが送信されたりする危険性があります。
似た用語との違い
従来のウェブセキュリティにおけるSQLインジェクションは明確なコードの構文隙を突くのに対し、プロンプトインジェクションは自然言語の曖昧さやモデルの文脈解釈の仕組みを狙う点が異なります。また、AIの倫理制限や安全ガードレールを突破するジェイルブレイクと混同されやすいですが、プロンプトインジェクションはシステム命令の上書きやアプリケーション機能の乗っ取りを指すことが多く、技術的なアプローチに一部重複があります。
注意点
現時点では、プロンプトインジェクションを100%完全に防ぐ単一の技術手段は確立されていません。自然言語処理の構造そのものに起因するため、入力・出力のフィルタリングやAIに与える権限の最小化など、多層防御の設計が必須となります。誤解して「プロンプトの工夫だけで完璧に防御できる」と考えないことが重要です。