HTTP リクエスト・スマグリングの新手法:HTTP/1.1 悪用への対策は?

New HTTP Smuggling Attack Technique Let Hackers Inject Malicious Requests

2025/08/25 CyberSecurityNews — フロントエンド・プロキシ・サーバとバックエンド・アプリケーション・サーバの間における解析動作の不一致を悪用する、高度な HTTP リクエスト・スマグリング攻撃の手法が新たに発見された。この攻撃は、不正なチャンク転送エンコーディング・エクステンションを利用して、既存のセキュリティ制御を回避し、不正な二次リクエストを Web アプリケーションに挿入するものだ。

主なポイント
  • 不正な HTTP チャンク・エンコーディングを悪用し、フロントエンドとバックエンドの解析に不一致を生じさせる。
  • 隠された二次リクエストを挿入することで、セキュリティ制御を回避する。
  • パッチの適用および、HTTP/2 プロトコルへの移行が推奨される。

この攻撃は、HTTP/1.1 プロトコル実装における根本的な脆弱性を標的とし、曖昧なリクエスト形式に対して、異なるサーバが不一致と解釈することを悪用するものだ。これらの解析不一致を悪用する攻撃者は、Web Application Firewall (WAF)/Content Delivery Networks (CDN)/ロードバランサなどを回避し、機密性の高いバックエンド・リソースへの不正アクセスを取得するという。

HTTP スマグリングの脆弱性

Imperva によると、この攻撃のメカニズムは、HTTP/1.1 のチャンク転送エンコーディング機能に起因するようだ。この機能により、Transfer-Encoding: chunked ヘッダーを悪用し、メッセージ本文のセグメント単位での送信が可能となる。RFC 9112 仕様によると、各チャンクには 16進数でサイズを示すヘッダーと、セミコロンで始まるオプションのチャンク・エクステンションが含まれる。

Transfer-Encoding: chunked header
Transfer-Encoding: chunked header

研究者たちが発見したのは、適切な拡張名を持たずにセミコロンのみを取り込んだ、不正なヘッダーを送信する攻撃者が、チャンク・エクステンションの解析を操作できることだ。それにより、フロントエンド・システムとバックエンド・サーバの間で、不正な構文解釈の矛盾が生じる。

攻撃シーケンスは、以下の通りである。攻撃者は、拡張名を持たずにセミコロンで終わる、チャンク・サイズ行を送信する。フロントエンド・パーサは、このシーケンス全体を単一のリクエストとして処理する一方で、バックエンド・パーサはセミコロンの後の改行を、チャンク・ヘッダー終了の指標として解釈する。

smuggled request
スマグリングされたリクエスト

これにより攻撃者は、長さゼロのチャンクの後にセカンダリ HTTP リクエストを埋め込むことが可能となり、それらを正当な別々のリクエストとしてバックエンド・システムが処理するため、フロントエンドのセキュリティ検証を効果的に回避できる。

この脆弱性は、HTTP/1.1 固有の設計上の弱点に起因する。特に、テキスト・ベース解析への依存/Content-Length ヘッダー/Transfer-Encoding 仕様/区切り文字などによる、複数のメッセージ境界表現方法に問題がある。

多くのサーバ実装においては、RFC への厳格な準拠による互換性が優先されるため、不正リクエスト解析が甘くなり、悪用可能な不一致が生じる可能性がある。

セキュリティ専門家たちが強調するのは、影響を受けるシステム全体に包括的なパッチを適用し、最新のソフトウェア・バージョンを維持している組織は、この攻撃ベクターに対する完全な保護を受けている点である。

しかし、最も効果的な長期的緩和策は、リクエスト・スマグリング攻撃を可能にする曖昧な解析シナリオを排除する、バイナリ・フレーミング・メカニズムを採用する HTTP/2 への移行である。

それが示すのは、プロトコル・レベルのセキュリティ対策の重要性である。既存の保護対策が行われる一方で、高度なバイパス手法を可能にしている、HTTP/1.1 の根本的な脆弱性が改めて浮き彫りされている。