HTTP Request Smuggling
HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.
How It Works
HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries. When a reverse proxy or load balancer forwards requests to a back-end server, both must agree on where one request ends and the next begins. This boundary is defined by either Content-Length (specifying exact body bytes) or Transfer-Encoding: chunked (indicating variable-length chunks). When servers interpret these headers differently, an attacker can craft a malicious request that appears as one request to the front-end but becomes two requests to the back-end.
The classic CL.TE variant works when the front-end prioritizes Content-Length while the back-end honors Transfer-Encoding. An attacker sends a request with both headers where the Content-Length value is smaller than the actual body. The front-end forwards the entire request, believing it ends earlier than it actually does. The back-end processes the declared content length as one request, then interprets the remaining bytes as the start of a new request—which gets prepended to the next legitimate user's request that arrives.
The TE.CL variant reverses this: the front-end reads chunked encoding while the back-end uses Content-Length. TE.TE attacks exploit even subtler differences—both servers support chunked encoding, but one can be tricked through obfuscation like extra spaces, mixed-case headers, or duplicate Transfer-Encoding directives. The attacker's smuggled request fragment poisons the request stream, affecting whatever user request follows.
Impact
- Authentication bypass — smuggled requests inherit the authenticated session of the subsequent victim request
- Request hijacking — capture sensitive data (credentials, tokens, API keys) from other users' requests by smuggling a prefix that logs or reflects their data
- Web cache poisoning — inject malicious content that gets cached and served to all users accessing that resource
- Cross-site scripting — smuggle requests that inject JavaScript payloads into responses served to other users
- Access control circumvention — route requests to restricted endpoints by bypassing front-end security filters
Real-World Examples
Security researchers discovered request smuggling vulnerabilities in major CDN providers and reverse proxies throughout 2019-2020, affecting services that process billions of requests daily. Attackers successfully bypassed WAF protections by smuggling malicious payloads that the security layer never inspected, since the WAF and back-end disagreed on request boundaries.
E-commerce platforms running vulnerable configurations experienced account takeover attacks where smuggled requests captured session tokens from subsequent legitimate user requests, granting attackers full account access without credential theft.
Content delivery networks suffered cache poisoning incidents where attackers smuggled requests causing the CDN to cache malicious JavaScript, which was then served to thousands of users requesting the same resource.
Mitigation
- Deploy HTTP/2 end-to-end — eliminates ambiguity since HTTP/2 uses binary framing with explicit length prefixes
- Reject ambiguous requests — drop any request containing both Content-Length and Transfer-Encoding headers
- Normalize forwarded requests — ensure the front-end rewrites requests to use only one length mechanism before forwarding
- Disable back-end connection reuse — configure each back-end request to use a fresh connection (reduces performance but prevents smuggling)
- Use identical HTTP parsing — deploy the same server software for both front-end and back-end tiers
Recent CVEs (369)
An exploitable vulnerability exists in the REST parser of video-core's HTTP server of the Samsung SmartThings Hub STH-ETH-250 - Firmware version 0.20.17. Rated high severity (CVSS 8.6), this vulnerability is remotely exploitable, no authentication required, low attack complexity. Public exploit code available and no vendor patch available.
An exploitable vulnerability exists in the REST parser of video-core's HTTP server of the Samsung SmartThings Hub STH-ETH-250 - Firmware version 0.20.17. Rated critical severity (CVSS 10.0), this vulnerability is remotely exploitable, no authentication required, low attack complexity. Public exploit code available and no vendor patch available.
HPE has identified a remote HOST header attack vulnerability in HPE CentralView Fraud Risk Management earlier than version CV 6.1. Rated medium severity (CVSS 6.1), this vulnerability is remotely exploitable, no authentication required, low attack complexity. No vendor patch available.
It was found that Keycloak would accept a HOST header URL in the admin console and use it to determine web resource locations. Rated medium severity (CVSS 5.4), this vulnerability is remotely exploitable, low attack complexity. This HTTP Request/Response Smuggling vulnerability could allow attackers to manipulate HTTP request interpretation between frontend and backend servers.
An active network attacker (MiTM) can achieve remote code execution on a machine that runs IKARUS Anti Virus 2.16.7. Rated high severity (CVSS 7.4), this vulnerability is no authentication required. Public exploit code available and no vendor patch available.
The net/http library in net/http/transfer.go in Go before 1.4.3 does not properly parse HTTP headers, which allows remote attackers to conduct HTTP request smuggling attacks via a request with two. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable, no authentication required, low attack complexity. This HTTP Request/Response Smuggling vulnerability could allow attackers to manipulate HTTP request interpretation between frontend and backend servers.
The net/http library in net/textproto/reader.go in Go before 1.4.3 does not properly parse HTTP header keys, which allows remote attackers to conduct HTTP request smuggling attacks via a space. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable, no authentication required, low attack complexity. Epss exploitation probability 11.9%.
AeroAdmin 4.1 uses an insecure protocol (HTTP) to perform software updates. Rated high severity (CVSS 8.1), this vulnerability is remotely exploitable, no authentication required. Public exploit code available and no vendor patch available.
ASP.NET Core Kestrel request smuggling allows a low-privileged network attacker (PR:L, no user interaction) to desynchronize HTTP request framing between Kestrel and an upstream proxy or CDN, potentially leading to credential theft, cache poisoning, access-control bypass, and other downstream compromise; the vector scores 9.9 with scope change and high confidentiality/integrity impact. Affected deployments include ASP.NET Core/Kestrel applications and Alpine's dotnet8-runtime before 8.0.21-r0, with CPE data also associating Visual Studio 2022. Publicly available exploit code exists, EPSS is 1.68% (82nd percentile), and no CISA KEV confirmation was provided.
Quick Facts
- Typical Severity
- HIGH
- Category
- web
- Total CVEs
- 369