製品・ソフトウェアに関する情報
Tinyproxy projectのTinyproxyにおけるHTTP リクエストスマグリングに関する脆弱性
Title Tinyproxy projectのTinyproxyにおけるHTTP リクエストスマグリングに関する脆弱性
Summary

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がリクエスト本文の検査、フィルタリング、またはセキュリティ強制に使用されている環境では、未読の本文が適切な検査を受けることなく転送される可能性があり、セキュリティ制御の回避を引き起こす恐れがあります。

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

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

Publication Date April 7, 2026, midnight
Registration Date May 1, 2026, 10:48 a.m.
Last Update May 1, 2026, 10:48 a.m.
CVSS3.0 : 重要
Score 7.5
Vector CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
CVSS2.0 : 危険
Score 7.8
Vector AV:N/AC:L/Au:N/C:N/I:N/A:C
Affected System
Tinyproxy project
Tinyproxy 1.11.3 およびそれ以前
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
その他
Change Log
No Changed Details Date of change
1 [2026年05月01日]
  掲載
May 1, 2026, 10:48 a.m.

NVD Vulnerability Information
CVE-2026-31842
Summary

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.

Publication Date April 7, 2026, 9:16 p.m.
Registration Date April 15, 2026, 11:28 a.m.
Last Update April 7, 2026, 10:20 p.m.
Related information, measures and tools
Common Vulnerabilities List