Tinyproxy
CVE-2026-54387
CRITICAL
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable proxy, no auth or user interaction, low complexity; smuggling crosses a trust boundary into the backend so Scope:Changed, with high confidentiality/integrity impact and no availability hit.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Tinyproxy through 1.11.3, fixed in commit ff45d3b, fails to reconcile conflicting Content-Length and Transfer-Encoding: chunked headers, forwarding both verbatim to the backend while using Content-Length to determine how many request body bytes to consume. Remote attackers can desynchronize the proxy and backend parser state, allowing injection of arbitrary HTTP requests to the backend to enable cache poisoning, access control bypass, and request hijacking.
AnalysisAI
HTTP request smuggling in Tinyproxy through 1.11.3 lets remote unauthenticated attackers desynchronize the proxy and backend by sending requests carrying both Content-Length and Transfer-Encoding: chunked headers. Tinyproxy forwards both headers verbatim while parsing the body using Content-Length, producing a classic CL.TE desync that enables cache poisoning, access control bypass, and request hijacking against the backend. No public exploit identified at time of analysis, though VulnCheck has published an advisory and the upstream issue/PR describe the bug in detail.
Technical ContextAI
Tinyproxy is a small, widely-deployed lightweight HTTP/HTTPS forward proxy commonly used in embedded devices, container egress gateways, and constrained Linux environments (CPE cpe:2.3:a:tinyproxy:tinyproxy:*). The root cause is CWE-444 (Inconsistent Interpretation of HTTP Requests / HTTP Request Smuggling): RFC 7230 requires intermediaries that see both Content-Length and Transfer-Encoding to either reject the message or strip Content-Length, but Tinyproxy's request handling in src/reqs.c did neither - it forwarded both framing headers to the backend while internally consuming bytes according to Content-Length. The upstream fix (commit ff45d3b, PR #610) now refuses duplicate Content-Length headers in add_header_to_connection and, in process_client_headers, removes Content-Length whenever Transfer-Encoding: chunked is also present, aligning Tinyproxy's framing decision with that of the backend.
RemediationAI
Upstream fix available (PR #610 / commit ff45d3b); released patched version not independently confirmed, so operators should either build Tinyproxy from a tree containing commit ff45d3bf0e61d0f8ed97ab379d3047f04eb67521 or wait for and install a distribution package that backports it (track https://github.com/tinyproxy/tinyproxy/pull/610 and the VulnCheck advisory). As a temporary compensating control, place a smuggling-aware reverse proxy or WAF in front of Tinyproxy and configure it to reject requests that carry both Content-Length and Transfer-Encoding headers - accepting the operational cost that some legacy clients sending both headers will be blocked. Where Tinyproxy is used purely as an outbound forward proxy from trusted clients, restrict its listening interface to localhost or a management VLAN via the Listen and Allow directives in tinyproxy.conf so untrusted networks cannot reach it; this breaks any intentional public-proxy use case. Avoid relying on the backend alone to detect the desync, since the whole class of CL.TE attacks exists precisely because front and back disagree.
Potential leak of left-over heap data if custom error page templates containing special non-standard variables are used.
Tinyproxy through 1.11.2 contains an integer overflow vulnerability in the strip_return_port() function within src/reqs.
HTTP request smuggling in Tinyproxy through 1.11.3 allows remote unauthenticated attackers to desynchronize the proxy an
Authentication bypass in Tinyproxy through 1.11.3 lets unauthenticated remote attackers reach the internal statistics pa
Remote denial of service in tinyproxy versions through 1.11.3 allows unauthenticated attackers to exhaust all proxy work
HTTP request smuggling and denial of service in Tinyproxy through 1.11.3 allows unauthenticated remote attackers to caus
main.c in Tinyproxy 1.8.4 and earlier creates a /run/tinyproxy/tinyproxy.pid file after dropping privileges to a non-roo
Tinyproxy 1.8.3 and earlier allows remote attackers to cause a denial of service (CPU and memory consumption) via (1) a
Same weakness CWE-444 – HTTP Request/Response Smuggling
View allSame technique Authentication Bypass
View allVendor StatusVendor
SUSE
Severity: Critical| Product | Status |
|---|---|
| openSUSE Tumbleweed | Fixed |
Share
External POC / Exploit Code
Leaving vuln.today