AIエージェント

HTTPヘッダーはプロンプトインジェクション攻撃の新たなベクター

調査により、30のサイトがHTTPレスポンスヘッダーを用いてAIエージェントに指示を注入し、標準的なページレベルの防御を回避していたことが明らかになりました。

机の上で拡大鏡とともに光るHTTPヘッダーを表示するガラスの立方体。
この記事用に生成されたイラスト

英語の原文から自動翻訳されました。

Signals Corpsの研究者たちは2億1,700万件のWebレスポンスを分析し、サーバーがAIエージェントとの通信にHTTPヘッダーを利用するケースが増加していることを発見しました。これらのヘッダーの多くは単にドキュメントファイルへの参照を示すものですが、少数ながら重要な割合で直接的なインジェクション試行が含まれています。この発見は、多くの開発者が可視化されたページコンテンツのみが大規模言語モデルにとってリスクになると考えているため、現在のセキュリティプラクティスにおける盲点を浮き彫りにしています。

何が起きたのか

研究チームは2026年9月のCommon Crawlデータセットの10%(217,097,223件のページレスポンス)をスキャンしました。彼らは特にAIシステム向けテキストを含むHTTPレスポンスヘッダーを探しました。スキャンの結果、そのようなヘッダーを送信した7,959のサイトが特定されました。その大部分である7,271のサイトは、llms.txt ファイルやModel Context Protocol (MCP) サーバーなどのリソースへエージェントを誘導するためのポインターとしてこれらのヘッダーを使用していました。最も一般的なヘッダーは x-llms-txt で、6,989のサイトで確認されました。

しかし、30のサイトは単純なポインターを超え、プロンプトインジェクションを試みました。これらのうち24件は X-AI という名前のヘッダーを使用していました。ほとんどは悪ふざけでしたが、一部にはシェルやデータベースアクセスなど十分な権限があればエージェントのアクションを引き起こす可能性のある指示が含まれていました。さらに、139のサイトはクライアントをAIボットとして分類するヘッダーを含んでおり、サーバーが人間と自動トラフィックを積極的に区別していることを示しています。一部のサイトでは X-AI-Makes-Us-Dumber のような名前を持つヘッダーを使ってAIスクレイピングに対する抗議を行っていました。

本研究では、主要なAIコーディングエージェントがこれらのヘッダーをどのように処理するかについてもテストしました。2026年10月のテストでは、Claude Code上で実行されているClaude Opus、Sonnet、Haikuはデフォルトではテストヘッダーに基づいて行動しませんでした。しかし、ユーザーのプロンプトがエージェントに対してサイトの指示に従うよう明示的に命じた場合、9回の試行のうち7回で従いました。これは、リスクがエージェントのシステムプロンプトにおいてユーザーがどの程度の権限を付与しているかに大きく依存することを示唆しています。

仕組み

間接的プロンプトインジェクションは、AIエージェントがWebページなど第三者によって制御されるコンテンツを読み取り、そのコンテンツ内の隠された指示を自身の指令の一部として扱う場合に発生します。HTTPレスポンスヘッダーは、ブラウザが人間のユーザーに表示しないため、特にステルス性の高いベクターです。HTTPレスポンスはステータスライン、ヘッダーブロック、ボディで構成されます。人間はボディしか見ませんが、エージェントのフェッチツールはヘッダーをモデルのコンテキストウィンドウに直接渡す可能性があります。

ヘッダーがモデルに到達するかどうかは、エージェントが使用するフェッチツールに完全に依存します。LangChain requestsツールのような一部のツールはレスポンスボディのみを返し、この攻撃ベクターを実質的にブロックします。一方、curl -i を実行するシェルツールなどはすべてのレスポンスヘッダーをモデルに渡します。Gemini CLIは experimental.directWebFetch が設定されている場合、エラーレスポンスでJSON形式ですべてのヘッダーを送信し、信頼できないコンテンツラッパーをバイパスします。MCP参照フェッチサーバーは、非HTMLページの Content-Type 値やrobots.txtエラーを除き、ヘッダーをほぼ通過させません。

主要な詳細

  • スキャンされた2億1,700万件のうち、7,959のサイトがAIエージェント向けのHTTPヘッダーを送信しました。
  • 30のサイトに実際のプロンプトインジェクション試行が含まれており、主に X-AI ヘッダーで見られました。
  • 7,271のサイトが、llms.txt などの外部リソースへエージェントを誘導するためにヘッダーを使用しました。
  • Claude Codeのようなエージェントは、プロンプトがサイトコンテンツに高い権限を与える場合、騙される可能性があります。
  • curl -i のようなシェルベースのフェッチツールはすべてのヘッダーをモデルに公開するため、リスクを増大させます。
  • ボディのみを返すフェッチツールは、処理前にメタデータを破棄することでヘッダーベースのインジェクションを防ぎます。

なぜ重要なのか

AIエージェントを開発するソフトウェアエンジニアにとって、この研究は可視化されたページコンテンツの保護だけでは不十分であることを明らかにしています。もしエージェントがHTTPヘッダーをコンテキストに含めるフェッチツールを使用している場合、メタデータに隠された指示に対して脆弱になります。これは、シェルコマンドの実行やデータベースへのアクセスなど、権限が昇格されたエージェントにとって特に重要です。攻撃者はヘッダーに悪意のある指示を組み込むことができ、エージェントはユーザーがコマンドの出所を見ることなくそれを実行してしまう可能性があります。

ポインターヘッダーの普及は、エージェントがWebをナビゲートする方法も変えます。エージェントがヘッダー内で提供されたリンクに従うとき、それはサーバーの方向性を信頼することになります。もしその先が敵対者によって制御されるMCPサーバーやスキルファイルをホストしている場合、エージェントは侵害された環境へ誘導される可能性があります。開発者はエージェントが使用しているフェッチツールを監査し、それらのツールが言語モデルにどのようなデータを正確に渡しているかを理解する必要があります。ヘッダーを信頼できない入力として扱うことは、現在AIセキュリティ衛生上の必要な部分となっています。

できること

  • エージェントのフェッチツールを監査し、HTTPヘッダーをモデルに渡すかどうかを確認してください。
  • 厳密に必要な場合を除き、Gemini CLIの experimental.directWebFetch のような実験的機能を無効にしてください。
  • エージェントが curl -i や同様のコマンドを実行できないように、シェル権限を制限してください。
  • ヘッダーやリダイレクト先を含め、外部ソースから取得したコンテンツはすべて信頼できないものとして扱ってください。
  • システムプロンプトを更新し、HTTPメタデータ内にある指示を無視するようエージェントに明示的に指示してください。
  • 成功した間接的プロンプトインジェクションを示唆する予期しないツール呼び出しについて、エージェントログを監視してください。

Bytechapストアのツール

続きを読む

すべての記事