迅速なインジェクション攻撃を回避するためのベストプラクティス - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

迅速なインジェクション攻撃を回避するためのベストプラクティス

以下のガードレールとベストプラクティスは、実証モデルとして Anthropic Claude を搭載した RAG アプリケーションでテストされました。提案は Claude ファミリーのモデルに非常に適用可能ですが、モデル固有の変更 (XML タグの削除や異なるダイアログ属性タグの使用など) を保留中の他の非 Claude LLMs にも転送できます。

<thinking> タグと <answer> タグを使用する

基本的な RAG テンプレートに便利な追加は、 <thinking>および <answer> タグです。 <thinking> タグを使用すると、モデルは作業を表示し、関連する抜粋を表示できます。 <answer> タグには、ユーザーに返されるレスポンスが含まれます。経験的に、これらの 2 つのタグを使用すると、複数の情報源を結合する必要がある複雑で微妙な質問にモデルが答えるときの精度が向上します。

ガードレールを使用する

LLM 搭載アプリケーションを保護するには、前述の一般的な攻撃を認識し、防御するのに役立つ特定のガードレールが必要です。このガイドでセキュリティガードレールを設計したときのアプローチは、テンプレートに導入されたトークンの数を最小限に抑えて最大の利点を生み出すことでした。ほとんどのモデルベンダーは入力トークンで課金されるため、トークンが少ないガードレールはコスト効率に優れています。さらに、過剰に設計されたテンプレートは精度を低下させることが証明されています。

ソルテッドシーケンスタグの 1 つのペアで指示をラップする

一部の LLMs は、会話履歴や取得されたドキュメントなどの特定のリソースに LLM をガイドするのに役立つように、情報が XML タグでラップされるテンプレート構造に従います。タグスプーフィング攻撃は、悪意のある指示を一般的なタグにラップし、その指示が元のテンプレートの一部であるとモデルを確信させることで、この構造を利用しようとします。ソルテッドタグは、セッション固有の英数字シーケンスを 形式の各 XML タグに追加することで、タグスプーフィングを停止します<tagname-abcde12345>。追加の命令は、これらのタグ内にある命令のみを考慮するように LLM に指示します。

このアプローチの 1 つの問題は、モデルが予期的または予期せず回答にタグを使用する場合、ソルトされたシーケンスも返されたタグに追加されることです。これで、ユーザーはこのセッション固有のシーケンスを知っているので、タグスプーフィングを実行できます。これは、LLM にソルトタグ付き命令を考慮するように指示する指示があるため、おそらく高い有効性で達成できます。このリスクを回避するには、テンプレートの 1 つのタグ付きセクションにすべての指示をラップし、ソルトされたシーケンス ( など) のみで構成されるタグを使用します<abcde12345>。その後、このタグ付けされたセッションの指示のみを考慮するようにモデルに指示できます。このアプローチにより、モデルがソルトシーケンスを公開できなくなり、テンプレートの指示を導入または強化しようとするタグスプーフィングやその他の攻撃に対する防御に役立ったことがわかりました。

特定の指示を提供することで攻撃を検出するように LLM に教える

また、一般的な攻撃パターンを説明する一連の手順を含めて、攻撃を検出する方法を LLM に教えます。手順では、ユーザー入力クエリに焦点を当てます。キー攻撃パターンの存在を特定し、パターンを検出した場合は「Prompt Attack Detected」を返すように LLM に指示します。これらの手順により、一般的な攻撃に対処するためのショートカットを LLM に付与できます。このショートカットは、テンプレートが <thinking><answer> タグを使用する場合に関連しています。LLM は通常、悪意のある指示を反復的かつ過度に詳細に解析し、最終的にコンプライアンスにつながる可能性があるためです (次のセクションの比較で説明)。