プロンプトインジェクション攻撃とは
プロンプトインジェクション攻撃とは、攻撃者が大規模言語モデル(LLM)に悪意のある入力を送り、モデルを意図しない方法で応答または動作させようとする攻撃です。この入力には、モデルの安全性ガイドラインやシステム指示を無効化しようとするコマンドが含まれることがよくあります。攻撃者は、プロンプトを通じて悪意のある入力を直接送信する場合もあれば、モデルが取り込む資料にコマンドを埋め込んで間接的に送信する場合もあります。
プロンプトインジェクションの仕組み
プロンプトインジェクションは、LLMの動作設計を悪用する攻撃です。LLMは、開発者がタスクに関する指示を自然言語で与えられるように設計されています。一方、この機能には、指示とその他のユーザー入力が一緒に提示された場合に、両者を確実に区別できないという側面もあります。そのため、攻撃者はモデルが取り込むテキストに悪意のあるコマンドを埋め込むことができ、適切なガードレールがなければ、モデルがその指示に従う可能性があります。
直接プロンプトインジェクションと間接プロンプトインジェクション
攻撃者は、直接または間接プロンプトインジェクション攻撃を行う可能性があります。どちらの手法もモデルを操作するものですが、悪意のあるコマンドをモデルに送り込む方法が異なります。
直接プロンプトインジェクションでは、攻撃者がモデルへのプロンプトにコマンドを含めます。たとえば、AI搭載チャットボットや検索エンジンのユーザーインターフェースを使用し、自然言語でモデルにコマンドを入力することが考えられます。その入力を偽装するために、攻撃者はキャラクターのロールプレイ(安全規則の適用対象外となるペルソナを演じるようモデルに指示すること)を利用したり、仮想的なシナリオ(やり取りが現実世界に影響を及ぼさないように見せかけること)を提示したりする可能性があります。
この試みが成功すると、直ちに影響が生じます。プロンプトが送信されるとすぐに、攻撃者が意図した処理や出力が実行されます。
間接プロンプトインジェクションとは、AIモデルが取り込むコンテンツに、攻撃者がコマンドや内容を埋め込む手法です。そのコンテンツには、Webページ、アップロードされたPDF文書、メール、データベース内のファイルなどが含まれる可能性があります。攻撃者は、不可視のテキスト(白地に白文字)、HTMLコメント、メタデータなどにペイロードを隠すことができます。モデルやエージェントがそのコンテンツを取り込むと、正規の入力とコマンドを区別できず、コマンドを実行します。
直接プロンプトインジェクションとは異なり、間接攻撃の影響は遅れて発生し、特定の条件に左右されます。ユーザーまたは自律プロセスがモデルやエージェントによるデータの取り込みを開始するまで、影響は生じません。たとえば、攻撃者が検索拡張生成(RAG)に使用されるベクトルデータベース内のファイルを改変する可能性があります。ユーザーが検索プロセスを開始するプロンプトを入力するまで、コマンドは実行されません。
一般的な攻撃の種類
攻撃者は、その目的や標的とするAIシステムの種類に応じて、さまざまなプロンプトインジェクションの手法を使用する可能性があります。代表的な攻撃の種類は、次の3つです。
ジェイルブレイク:AIモデルに安全性ルールを無視させることを狙った攻撃です。攻撃者は、架空のシナリオを用いたり、既存のポリシーに制約されない役割を演じるようモデルに指示したりする場合があります。ジェイルブレイクでは通常、攻撃者がモデルのプロンプトに指示を直接入力します。その目的は、不正確な回答の生成から機密情報の開示まで多岐にわたります。
プロンプト漏洩: AIシステムが利用できる機密情報(開発者プロンプト、運用ロジック、知的財産、不適切に公開された認証情報など)を露出させようとする攻撃です。攻撃者はプロンプト内で、システム指示を出力するようモデルに命令したり、現在の会話より前に処理されたテキストを出力に含めるよう指示したりする可能性があります。
トークンスマグリング: AIアプリケーションの初期安全フィルターをすり抜けて、悪意のあるコマンドを送り込もうとする試みです。AIアプリケーションは多くの場合、入力に含まれるキーワードや意図をスキャンします。その後、入力をバックエンドシステムに渡します。バックエンドシステムはテキストをトークンに分割し、モデルに入力します。トークンスマグリングでは、攻撃者は安全フィルターを通過する一方で、モデルに到達するとコマンドとして解釈されるプロンプトを作成します。
企業のビジネスリスク
プロンプトインジェクション攻撃は、企業にさまざまな深刻なリスクをもたらします。特に、重要なプロセスへのAIシステムの統合が進むにつれて、そのリスクは高まります。考えられる4つのリスクを見てみましょう。
ツールまたはAPIの不正実行:攻撃者がモデルへのコマンド送信に成功すると、モデルだけでなく、モデルに接続されたAPIやシステムも操作できる可能性があります。たとえば、APIを介してデータベースのレコードを削除したり、顧客関係管理(CRM)システムの顧客情報を変更したり、金融取引を実行したりするおそれがあります。
機密データの流出:プロンプトインジェクションを使用する攻撃者は、企業の財務文書や個人を特定できる情報(PII)から、システムプロンプトやその他の知的財産に至るまで、さまざまな機密データをモデルに強制的に開示させる可能性があります。
フィッシングの自動化:攻撃者が使用するコマンドにより、モデルやエージェントが企業のメールアカウントから顧客や従業員にメールを自動送信する可能性があります。また、攻撃者がモデルを操作し、メッセージにフィッシングリンクを含める可能性もあります。
モデルハイジャック:適切なコマンドを使用することで、攻撃者はモデル本来の目的を完全に無効化し、その機能を乗っ取って別の目的に悪用できる可能性があります。たとえば、モデルを利用して偽情報を拡散したり、不正な返金を処理したり、ユーザーをだまして個人情報を提供させたりする可能性があります。
緩和策と多層防御
4つのベストプラクティスを採用することで、組織は攻撃を防止し、被害を軽減する多層防御アプローチを構築できます。
1. 入出力の両方にガードレールを実装する:組織は入力にAIガードレールを実装し、プロンプトインジェクションの兆候となり得るパターンを検出する必要があります。同時に、出力にもガードレールを適用することで、モデルやエージェントによる機密情報の出力、スパムの生成、他のシステムへの不正な呼び出しを防止できます。
2. カナリアトークンを使用する:カナリアトークンは、AIシステム内に埋め込まれた隠しマーカーで、プロンプトインジェクションやデータ漏えいを早期に警告します。開発者は、ユーザーには表示されないシステムプロンプトに、トークン(一意のデータ文字列)が含まれるよう設定できます。一方、セキュリティチームはモデルの出力をリアルタイムで監視します。モデルの出力にトークンが現れた場合、攻撃者がモデルにシステム指示を漏えいさせたことを意味します。
3. モデルとエージェントの権限を制限する:プロンプトインジェクションは、攻撃者がモデルやエージェントにさまざまな不正操作を強制できるため、特に危険です。組織は、モデルやエージェントが自動的に実行できる操作を制限することで、プロンプトインジェクションの影響を抑えられます。
4. 人間による関与を維持する:モデルとエージェントの権限を制限するだけでなく、重要なアクションや意思決定には人間が関与するよう徹底する必要があります。たとえば、特定のシステムとモデルとのやり取りには人間の承認を必須とする、またはエージェントによって実行された金融取引を人間が確認するといったポリシーを策定できます。
よくあるご質問
従来のWebアプリケーションファイアウォール(WAF)でプロンプトインジェクション攻撃を阻止できますか?
従来のWebアプリケーションファイアウォール(WAF)は、プロンプトインジェクション攻撃を確実に検出するようには設計されていません。WAFは攻撃の兆候となるコードを検出するように設計されていますが、プロンプトインジェクション攻撃では、WAFが脅威として認識しない自然言語のコマンドが使用されます。また、WAFは受信HTTPトラフィックとユーザーリクエストを対象としており、サードパーティのソースに埋め込まれたコマンドは対象としていないため、間接的なプロンプトインジェクションを防ぐことはできません。
検索拡張生成(RAG)パイプラインによってプロンプトインジェクションのリスクが高まる仕組み
検索拡張生成(RAG)パイプラインは、攻撃者が悪意のあるコマンドをモデルに送り込むための別の経路となります。攻撃者は、RAGシステムが使用するベクトルデータベース内のファイルにコマンドを埋め込むことができます。モデルがデータベースから情報を取得すると、そのコマンドを取り込み、実行する可能性があります。
プロンプトインジェクションとRAGデータポイズニングの違いは何ですか?
検索拡張生成(RAG)のデータポイズニングとは、データベースから情報を取得するモデルに不正確または有害な結果を出力させる目的で、推論前に虚偽の情報やバイアスをデータベースへ注入する行為です。プロンプトインジェクションでは、推論時に悪意のあるコマンドやコンテンツをモデルに入力し、権限のない操作を実行させます。
LLMをファインチューニングすれば、プロンプトインジェクション攻撃を防止できますか?
いいえ。大規模言語モデル(LLM)のファインチューニングだけでは、プロンプトインジェクション攻撃を完全に防ぐことはできません。ただし、脆弱性を悪用しにくくすることは可能です。たとえば、攻撃の兆候となり得る特定のパターンを認識するよう、開発者がモデルをトレーニングできます。しかし、モデルは自然言語による指示を受け付けるように設計されているため、プロンプトインジェクションの試みに対する脆弱性は残ります。
「カナリアトークン」とは何ですか。また、LLMの防御にどのように使用されますか?
カナリアトークンとは、開発者がシステムプロンプトに埋め込める一意のデータ文字列です。正規ユーザーがこの文字列を目にすることはありません。しかし、攻撃者がモデルにシステムプロンプトを出力させることに成功すると、モデルは意図せずカナリアトークンも出力します。モデルの出力を継続的に監視するチームは、このトークンを検出することで、侵害が発生していると判断できます。
企業は、推論時およびランタイムにAIシステムとアプリケーションをどのように保護すればよいのでしょうか?
推論時およびランタイムにAIシステムとアプリケーションを保護するには、インタラクションの発生時にプロンプト、応答、エージェントのアクション、ツールの使用状況を検査する制御が必要です。AIに特化したランタイムセキュリティは、プロンプトインジェクションのブロック、機密データの漏えい防止、ポリシーの適用に加え、モデルやエージェントがユーザー、データ、API、接続されたツールとどのようにやり取りするかの管理に役立ちます。
エンタープライズAIセキュリティを支えるF5の機能
F5 AI Guardrailsは、ランタイムポリシーの適用を支援し、プロンプトインジェクション、データ漏えい、有害な出力、安全でないエージェントのアクションなどのリスクから保護します。F5 AI Red Teamは、敵対的テストを使用して脆弱性や弱点を特定します。F5 AI Gatewayは、モデル、エージェント、ツールへのアクセスを管理するための一元的な制御ポイントを提供します。また、F5 Workforce AI Securityは、企業全体で承認済みおよび未承認のAI利用を可視化します。これらの機能は、F5 AI Security Platformの一部を構成します。アプリケーション、API、分散環境をより広範に保護するため、F5 Application Delivery and Security Platform (ADSP)は、WebアプリケーションとAPIの保護、ボット管理、DDoS緩和、アプリケーションデリバリーなどの機能を統合します。

