HTTP Request Smuggling
HTTP request smuggling is a web attack that exploits differences in how two or more servers (such as a front-end proxy and a back-end server) interpret where one HTTP request ends and the next one begins. By crafting a specially formed request, an attacker can cause the front-end and back-end to disagree on request boundaries, effectively "smuggling" a hidden request past security controls. This can lead to bypassing access controls, poisoning web caches, hijacking other users' requests, or enabling further attacks like cross-site scripting.
HTTP Request Smuggling is a class of vulnerabilities arising from inconsistencies in how chained HTTP processors (typically a front-end proxy or load balancer and a back-end origin server) parse request boundaries. In the classic HTTP/1.1 variant, the attack exploits ambiguity between the Content-Length and Transfer-Encoding headers: when two intermediaries disagree on which header delimits the message body, an attacker can craft a request such that the front-end forwards bytes that the back-end interprets as the beginning of a subsequent, attacker-controlled request. Common variants include CL.TE (front-end uses Content-Length, back-end uses Transfer-Encoding), TE.CL (the reverse), and TE.TE (both use Transfer-Encoding but can be manipulated via header obfuscation to process it differently). Successful exploitation may result in security control bypass, web cache poisoning, session hijacking of co-located users, credential theft, or chaining with other attack classes such as XSS. While HTTP/2's binary framing eliminates the specific Content-Length versus Transfer-Encoding ambiguity of HTTP/1.1, request smuggling vulnerabilities have been demonstrated in HTTP/2 environments as well, particularly where HTTP/2-to-HTTP/1.1 downgrading occurs or through implementation-specific flaws in HTTP/2 parsers themselves. Mitigations typically include normalizing request parsing across all layers, rejecting ambiguous requests, disabling HTTP/1.0 and connection reuse where feasible, and ensuring consistent protocol handling end-to-end, though no single measure fully eliminates the risk across all deployment configurations.
Why it matters
HTTP Request Smuggling poses a significant threat because it undermines the fundamental trust model of layered web architectures. Modern web applications almost universally rely on chains of HTTP processors, including load balancers, reverse proxies, CDNs, and web application firewalls, all sitting in front of back-end origin servers. When an attacker can cause these components to disagree on where one request ends and the next begins, the consequences cascade: security controls enforced at the front-end layer can be bypassed entirely, allowing smuggled requests to reach the back-end as if they were legitimate. This means that access controls, authentication checks, and WAF rules may all be rendered ineffective against a well-crafted smuggling payload.
The impact extends beyond a single attacker's session. Because smuggled requests can be prepended to other users' legitimate requests on shared persistent connections, exploitation can result in session hijacking, credential theft, and the ability to serve poisoned content from web caches to a broad population of users. Cache poisoning, in particular, can amplify the attack's reach dramatically, turning a single smuggled request into a persistent threat affecting every visitor who receives the poisoned cached response. The attack can also be chained with other vulnerability classes such as cross-site scripting (XSS) or open redirects, increasing overall severity.
The risk is not confined to legacy HTTP/1.1 deployments. While HTTP/2's binary framing removes the specific Content-Length versus Transfer-Encoding ambiguity that defines the classic HRS variants, request smuggling vulnerabilities have been demonstrated in HTTP/2 environments as well, particularly in scenarios involving HTTP/2-to-HTTP/1.1 downgrading and through implementation-specific flaws in HTTP/2 parsers themselves. This means that organizations cannot assume migration to HTTP/2 alone is sufficient to eliminate the attack surface.
Who it's relevant to
Inside HRS
Common questions
Answers to the questions practitioners most commonly ask about HRS.