Tinyproxy projectのTinyproxyにおけるHTTP リクエストスマグリングに関する脆弱性
タイトル Tinyproxy projectのTinyproxyにおけるHTTP リクエストスマグリングに関する脆弱性
概要

Tinyproxy 1.11.3までのバージョンには、src/reqs.cのTransfer-Encodingヘッダーに対する大文字小文字を区別する比較のためにHTTPリクエスト解析の非同期化に脆弱性があります。is_chunked_transfer()関数はstrcmp()を使用してヘッダー値と"chunked"を比較していますが、RFC 7230ではtransfer-coding名が大文字小文字を区別しないことが規定されています。Transfer-Encoding: Chunkedを指定したリクエストを送信すると、認証されていないリモート攻撃者はTinyproxyにリクエストの本文がないと誤認させることが可能です。この状態では、Tinyproxyはcontent_length.clientを-1に設定し、pull_client_data_chunked()をスキップし、リクエストヘッダーを上流に転送し、未読の本文データがバッファリングされたままrelay_connection()の生TCP転送に移行します。これにより、Tinyproxyとバックエンドサーバー間でリクエスト状態が不整合となります。RFC準拠のバックエンド(例えばNode.jsやNginx)はチャンク化された本文データの受信を待ち続けるため、接続が無期限にハングする原因となります。この挙動はバックエンドワーカーの枯渇によるアプリケーションレベルのサービス拒否攻撃を可能にします。さらに、Tinyproxyがリクエスト本文の検査、フィルタリング、またはセキュリティ強制に使用されている環境では、未読の本文が適切な検査を受けることなく転送される可能性があり、セキュリティ制御の回避を引き起こす恐れがあります。

想定される影響 当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 また、当該ソフトウェアが扱う情報について、書き換えは発生しません。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
対策

参考情報を参照して適切な対策を実施してください。

公表日 2026年4月7日0:00
登録日 2026年5月1日10:48
最終更新日 2026年5月1日10:48
CVSS3.0 : 重要
スコア 7.5
ベクター CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS2.0 : 危険
スコア 7.8
ベクター AV:N/AC:L/Au:N/C:N/I:N/A:C
影響を受けるシステム
Tinyproxy project
Tinyproxy 1.11.3 およびそれ以前
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
変更履歴
No 変更内容 変更日
1 [2026年05月01日]
  掲載
2026年5月1日10:48

NVD脆弱性情報
CVE-2026-31842
概要

Tinyproxy through 1.11.3 is vulnerable to HTTP request parsing desynchronization due to a case-sensitive comparison of the Transfer-Encoding header in src/reqs.c. The is_chunked_transfer() function uses strcmp() to compare the header value against "chunked", even though RFC 7230 specifies that transfer-coding names are case-insensitive. By sending a request with Transfer-Encoding: Chunked, an unauthenticated remote attacker can cause Tinyproxy to misinterpret the request as having no body. In this state, Tinyproxy sets content_length.client to -1, skips pull_client_data_chunked(), forwards request headers upstream, and transitions into relay_connection() raw TCP forwarding while unread body data remains buffered. This leads to inconsistent request state between Tinyproxy and backend servers. RFC-compliant backends (e.g., Node.js, Nginx) will continue waiting for chunked body data, causing connections to hang indefinitely. This behavior enables application-level denial of service through backend worker exhaustion. Additionally, in deployments where Tinyproxy is used for request-body inspection, filtering, or security enforcement, the unread body may be forwarded without proper inspection, resulting in potential security control bypass.

公表日 2026年4月7日21:16
登録日 2026年4月15日11:28
最終更新日 2026年4月7日22:20
関連情報、対策とツール
共通脆弱性一覧