コンテキストウィンドウ操作

コンテキストウィンドウは、大規模言語モデルのデプロイメントにおいて最も重要でありながら最も理解されていないセキュリティ境界の1つです。これは、LLMが単一の推論呼び出し中にアクセスできる情報を定義し、攻撃者が意図的に悪用できる有限のリソースです。

コンテキストウィンドウとは何か?

大規模言語モデルはテキストをトークンとして処理します(トークンあたり約3/4の単語)。コンテキストウィンドウは、モデルが一度に処理できるトークンの最大数を定義します。最新のモデルは4Kから100万トークン以上の範囲ですが、すべてに制限があります。

コンテキストウィンドウ内で、LLMは以下を処理します:

  • システムプロンプト: チャットボットの役割と制約を確立する開発者定義の指示
  • 会話履歴: 現在のセッションでの以前のターン
  • 取得されたコンテンツ: RAGまたは検索によって返されたドキュメント、データベース結果、およびツール出力
  • ユーザー入力: 現在のユーザーメッセージ

これらすべてはモデルに対して統一されたストリームとして表示されます。モデルには、異なるソースからの指示を異なる方法で扱う固有のメカニズムはなく、コンテキストの特定の部分への注意は均一ではありません。

コンテキストウィンドウ攻撃技術

コンテキストスタッフィング / コンテキストフラッディング

攻撃者は非常に大きな入力(多くの場合、長いドキュメント、コードブロック、またはテキストダンプ)を送信して、以前のコンテンツ(特にシステムプロンプト)をモデルの現在位置から遠ざけます。

研究により、LLMは「中間で迷子になる」動作を示すことが実証されています:長いコンテキストの最初と最後のコンテンツにより多くの注意を払い、中間の情報にはあまり注意を払いません。コンテキストをフラッディングすることで、攻撃者は悪意のあるペイロード(通常は最後)を戦略的に配置し、以前の安全指示を注意の低い中間ゾーンに漂わせることができます。

実用例: チャットボットのシステムプロンプトは、競合製品について議論できないことを確立しています。攻撃者は50,000トークンのドキュメントを送信し、その後に競合他社について尋ねるプロンプトを続けます。システムプロンプトの指示は事実上希釈されています。

コンテキストオーバーフロー / 切り捨て悪用

コンテキストがいっぱいになると、LLMまたはそのインフラストラクチャは何を削除するかを決定する必要があります。切り捨てが最新性を優先する場合(最も古いコンテンツを最初に削除)、攻撃者はコンテキストをオーバーフローさせてシステムプロンプトを完全に削除できます。これにより、モデルはユーザー提供のコンテキストのみで動作することになります。

攻撃シーケンス:

  1. 多くのターンで会話を確立する
  2. コンテキスト消費を最大化するために長い応答を生成する
  3. システムプロンプトのコンテンツが切り捨てられるまで続ける
  4. 競合するシステムプロンプトなしで悪意のある指示を発行する

取得されたコンテンツによるコンテキストポイズニング

RAGシステムでは、取得されたドキュメントが大量のコンテキストスペースを消費します。RAGポイズニング を通じて取得されるものに影響を与えることができる攻撃者は、正当な情報を締め出しながら、自分の目標に役立つコンテンツでコンテキストを選択的に埋めることができます。

位置的インジェクション

研究により、コンテキスト内の特定の位置にある指示が不均衡な影響力を持つことが特定されています。コンテキストの組み立てを理解している攻撃者は、ペイロードに対して高注意位置に着地するように設計された入力を作成できます。

多数ショットインジェクション

非常に長いコンテキスト(数十万トークン)をサポートするモデルでは、攻撃者は実際の悪意のあるリクエストの前に、モデルがポリシー違反の出力を生成することを示す数百の「デモンストレーション」例を埋め込むことができます。これらのデモンストレーションによって条件付けられたモデルは、従う可能性が大幅に高くなります。

Logo

ビジネスを成長させる準備はできましたか?

今日から無料トライアルを開始し、数日で結果を確認しましょう。

コンテキストウィンドウ操作に対する防御

重要な指示を固定する

セキュリティ上重要なすべての指示をシステムプロンプトの最初にのみ配置しないでください。主要な制約をシステムプロンプトの最後に繰り返し、長い会話の重要なポイントで簡潔なリマインダーを注入することを検討してください。

コンテキストサイズの制限

ユースケースに適した最大入力長の制限を実装します。カスタマーサービスチャットボットが100,000トークンの入力を処理する必要があることはめったにありません。これを制限することで、フラッディング攻撃のリスクが軽減されます。

コンテキスト監視

コンテキストのサイズと構成をログに記録し、監視します。異常に大きな入力、急速なコンテキスト成長、または予期しないコンテキスト構成は、潜在的な攻撃の指標です。

長い会話の要約

長時間実行される会話の場合、生の会話履歴ではなく、主要な事実と制約を保持するコンテキスト要約を実装します。これにより、会話の連続性を維持しながらオーバーフロー攻撃に抵抗します。

敵対的コンテキストテスト

AIペネトレーションテスト エンゲージメントにコンテキスト操作シナリオを含めます。長いコンテキスト全体で安全動作が保持されるかどうか、およびコンテキストフラッディング後もシステムプロンプトが効果的であるかどうかをテストします。

よくある質問

LLMにおけるコンテキストウィンドウとは何ですか?

コンテキストウィンドウとは、大規模言語モデルが一度に処理できるテキストの量(トークンで測定)です。これには、システムプロンプト、会話履歴、取得されたドキュメント、ツールの出力が含まれます。モデルがセッション中に「知っている」すべてのものは、このウィンドウ内に収まる必要があります。

攻撃者はコンテキストウィンドウをどのように悪用できますか?

攻撃者は、無関係なコンテンツでコンテキストをフラッディングして、初期の指示(安全ガードレールを含む)をモデルの効果的な注意の範囲外に押し出したり、長いコンテキストに埋め込まれてフィルターに見落とされる悪意のあるペイロードを注入したり、コンテキストの切り捨て動作を悪用して、正当な指示が残らない一方で悪意のあるコンテンツが生き残るようにしたりできます。

コンテキストウィンドウ操作からどのように保護しますか?

防御策には以下が含まれます:重要な指示をコンテキストの複数の位置に配置する(最初だけではなく)、コンテキストサイズの制限を実装する、異常に大きなコンテキストペイロードを監視する、長い会話にコンテキスト要約を使用する、セキュリティ評価でコンテキスト操作シナリオをテストすることです。

コンテキストベースの攻撃に対してチャットボットをテストする

コンテキストウィンドウ操作は過小評価されている攻撃面です。当社のペネトレーションテストには、コンテキストオーバーフローと戦略的ポイズニングのシナリオが含まれています。

詳しく見る

LLMセキュリティ
LLMセキュリティ

LLMセキュリティ

LLMセキュリティは、プロンプトインジェクション、ジェイルブレイク、データ流出、RAGポイズニング、モデル悪用などのAI固有の脅威から大規模言語モデルのデプロイメントを保護するために使用される実践、技術、制御を包含します。...

1 分で読める
LLM Security AI Security +3
OWASP LLM Top 10
OWASP LLM Top 10

OWASP LLM Top 10

OWASP LLM Top 10は、大規模言語モデル上に構築されたアプリケーションにおける10の最も重要なセキュリティおよび安全性リスクの業界標準リストであり、プロンプトインジェクション、安全でない出力処理、トレーニングデータポイズニング、モデルサービス拒否、およびその他6つのカテゴリをカバーしています。...

1 分で読める
OWASP LLM Top 10 AI Security +3
AIエージェントのためのコンテキストエンジニアリング:LLMに最適な情報を与える技術を極める
AIエージェントのためのコンテキストエンジニアリング:LLMに最適な情報を与える技術を極める

AIエージェントのためのコンテキストエンジニアリング:LLMに最適な情報を与える技術を極める

AIエージェントのためのコンテキストを設計する方法を学びましょう。ツールフィードバックの管理、トークン使用の最適化、オフロード・圧縮・分離といった戦略の実装により、大規模運用でも安定して動作するプロダクション品質のエージェントを構築します。...

1 分で読める
AI Agents LLM +3