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


生成AIのセキュリティリスクとして、プロンプトインジェクションが脅威として恐れられています。
名前からして、生成AIのプロンプトの脆弱性を狙ったものだと推測できますが、プロンプトインジェクション攻撃とはいったいどのようなものなのでしょうか?

プロンプトインジェクション攻撃は、ChatGPTなどの生成AIに対して入力するプロンプトを悪用して、不正アクセスを行ったり、有害な回答が出力されるように誘導したり、AIに予期しない動作をさせたりします。
インジェクションという言葉から、セキュリティ関係者ならSQLインジェクションを連想すると思われますが、ある意味これの発展系がプロンプトインジェクションであるともいえます。
SQLインジェクションは、Webページの検索などの入力域を使って攻撃者の入力した値が、SQLクエリとして認識され、データベースのデータを不正に読み取ったり、変更、削除する攻撃ですが、こちらはサニタイズによるセキュリティ対策を施すことである程度防御が可能です。
しかしながら、厄介なのは、プロンプトインジェクション攻撃の場合、クロスサイトスクリプティングやSQLインジェクションの攻撃対策として有効なサニタイズが、自然言語で入力できるプロンプトのため非常に困難であるというということが問題となります。
サニタイズは、サイバー攻撃につながるような"<"や、"&"などの特殊文字をhtmlのソースコードとしては意味を持たないようにエスケープ処理などによってコード変換して無害化することを指します。 生成AIの場合、自然言語、たとえば日本語のテキスト文で削除や変更などの指示が行えてしまうため、単なる特殊コードの変換では対処できず、加えてどんな形で指示を出すかは表現方法が多すぎてパターンを限定できません。残念ながら、AIに善悪の判断は難しいため、どんな内容が悪意ある指示なのか判別できずサニタイズを行うことは、ほぼ無理となります。
AIは、明らかに人に有害と思われる事項を回答不能にしているにもかかわらず、プロンプトインジェクション攻撃のジェイルブレイクと呼ばれている手法では、AIが答えられないことを無理やり答えさせていったり、AIに別人格を設定して答えさせるなどのプロンプトで、生成AIが作成するテキストの制限を巧妙に外すことを行います。

たとえばGPTモデルのセキュリティは、ユーザーを認証し、モデルのリソースへのアクセスを提供するために使用される認証トークンに大きく依存しておりますが、トークン・スマグリングと呼ばれる、アクセストークンを盗む手法では、攻撃者は GPTモデルのセキュリティ保護を回避し、不正アクセスによって出力内容を変更したり、個人情報を盗んだりすることが可能になるためとても危険です。

生成AIの中でも、自然言語処理を担う深層学習モデルのLLMを使った数多くのアプリやサービスに対しては、電子メールを介して悪意のあるプロンプトを送信したり、画像内に悪意のあるプロンプトを隠したうえで画像を入力した場合にそのプロンプトを発動させるなど、プロンプトインジェクション攻撃には多くの攻撃手法があります。

生成AIを提供しているメーカー側も、プロンプトインジェクション攻撃に対しては日々継続して対応を取り続けていますが、この攻撃が自然言語で指示ができるという生成AIの長所を逆手にとった攻撃であるが故に、その防御は極めて難しいことは間違いないです。


プロンプトインジェクション攻撃は、対処が困難


生成AI, エスケープ