HTTPリクエストスマグリングとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > HTTPリクエストスマグリングの意味・解説 

HTTPリクエストスマグリング

(HTTP request smuggling から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2026/02/25 01:37 UTC 版)

HTTPリクエストスマグリング(英:HTTP request smuggling、略称:HRS)は、HTTPプロトコルにおけるセキュリティ脆弱性を利用した攻撃手法である。これは、HTTPプロキシサーバのチェーン内にある複数のHTTPサーバ実装間において、Content-LengthヘッダとTransfer-Encodingヘッダの解釈に不一致があることを利用する[1][2]。共通脆弱性タイプではCWE-444に分類される。

Transfer-Encodingヘッダは、HTTPリクエストのボディをどのように解釈するかという指示を定義するものであり、この攻撃において一般的かつ不可欠な指示はチャンク形式転送エンコードである[3]。Transfer-Encodingヘッダが存在する場合、Content-Lengthヘッダは省略されることになっている[3]。Content-Lengthヘッダも同様の役割を果たすが、構文が異なり、ヘッダ自体の値としてボディのサイズをバイト単位で指定する[4]。悪意のあるHTTPリクエストにこれら両方のヘッダが含まれている場合、フロントエンドサーバまたはバックエンドサーバがリクエストを誤って解釈することで、不正なクエリを防止するためのセキュリティ機能をバイパスしてしまう脆弱性が発生する[5]

種類

CL.TE

このタイプのHTTPリクエストスマグリングでは、フロントエンドがContent-Lengthヘッダを使用してリクエストを処理し、バックエンドがTransfer-Encodingヘッダを使用してリクエストを処理する[2]。攻撃は、リクエストの最初の部分で長さ0のチャンクを宣言することによって行われる[5]。フロントエンドサーバはこれを見てリクエストの最初の部分のみを読み取り、意図せず第2の部分をバックエンドサーバに渡してしまう[5]。バックエンドサーバに渡された第2の部分は、次のリクエストとして扱われて処理され、攻撃者の隠されたリクエストが実行される[5]

TE.CL

このタイプでは、フロントエンドがTransfer-Encodingヘッダを使用してリクエストを処理し、バックエンドがContent-Lengthヘッダを使用して処理する[2]。この攻撃では、攻撃者は悪意のあるリクエストを含む最初のチャンクの有効な長さを宣言し、その後に長さ0の第2のチャンクを宣言する[5]。フロントエンドサーバは長さ0の第2のチャンクを見ると、リクエストが完了したと判断してバックエンドサーバに転送する[5]。しかし、バックエンドサーバはContent-Lengthヘッダを使用して処理するため、最初のチャンクに残された悪意のあるリクエストは、次の一連のリクエストの開始点として扱われるまで未処理のまま残り、その後に実行される[2]

TE.TE

このタイプでは、フロントエンドとバックエンドの両方がTransfer-Encodingヘッダを使用してリクエストを処理するが、一報のサーバのみがヘッダを無視するように、非標準の空白形式や重複ヘッダなどを用いてヘッダを難読化する[2]。難読化の手法としては、「Transfer-Encoding: xchunked」のように不正な文字を追加したり、「Transfer-Encoding」と「: chunked」の間に異常な改行文字を入れたりする形がある[5]。フロントエンドまたはバックエンドのいずれかのサーバが依然としてこれらの難読化されたリクエストを処理する場合、攻撃の残りの部分はCL.TEまたはTE.CL攻撃と同様の仕組みとなる[5]

対策

最も確実な対策は、フロントエンドとバックエンドのサーバがHTTPリクエストを全く同じ方法で解釈することである。しかし、ロードバランサは異なるソフトウェアやプラットフォームで動作するバックエンドサーバをサポートしているため、これは通常、選択肢にはならない[5]。この攻撃のほとんどの変種は、リクエストの長さを決定するために異なる手法を用いるHTTP/2を使用することで防ぐことができる。別の回避策としては、フロントエンドサーバがバックエンドに渡す前にHTTPリクエストを正規化し、確実に同じ解釈がなされるようにすることである[2]Webアプリケーションファイアウォール(WAF)の設定も有効であり、多くのWAFは攻撃の試みを特定し、疑わしいリクエストをブロックまたはサニタイズする技術を備えている[5]

Grenfeldtら(2021年)の研究によれば、ほとんどのフロントエンドWebサーバ(プロキシサーバなど)は、バックエンドサーバに対する既知のHRS攻撃を実際に阻止するためのパース機能を提供していることがわかった[6]。Huangら(2022年)は、Flaskを使用して適切なパース機能を実装し、フロントエンドプログラムやWebサーバからのHRS攻撃を防ぐ手法を提案した[7]

脚注

  1. ^ CWE - CWE-444: Inconsistent Interpretation of HTTP Requests ('HTTP Request Smuggling') (4.0)”. cwe.mitre.org. 2026年2月25日閲覧。
  2. ^ a b c d e f What is HTTP request smuggling? Tutorial & Examples”. portswigger.net. 2026年2月25日閲覧。
  3. ^ a b Transfer-Encoding”. developer.mozilla.org. 2026年2月25日閲覧。
  4. ^ Content-Length”. developer.mozilla.org. 2026年2月25日閲覧。
  5. ^ a b c d e f g h i j HTTP Request Smuggling”. imperva.com. 2026年2月25日閲覧。
  6. ^ Attacking websites using HTTP request smuggling: empirical testing of servers and proxies. 2021 IEEE 25th international enterprise distributed object computing conference (EDOC). Australia: IEEE. 2021. pp. 173–181. doi:10.1109/EDOC52215.2021.00028. {{cite conference}}: |access-date=を指定する場合、|url=も指定してください。 (説明)
  7. ^ Huang Q; Chiu M; Chen Y; Sun H (2022). “Attacking websites: detecting and preventing HTTP request smuggling attacks”. Security and Communication Networks 2022: 1–14. doi:10.1155/2022/3121177. 



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語
  •  HTTPリクエストスマグリングのページへのリンク

辞書ショートカット

すべての辞書の索引

「HTTPリクエストスマグリング」の関連用語

HTTPリクエストスマグリングのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



HTTPリクエストスマグリングのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのHTTPリクエストスマグリング (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2026 GRAS Group, Inc.RSS