Home / Knowledge hub / HTTP request smuggling
Knowledge hub
HTTP request smuggling
Sending requests that front and back servers read differently to slip one past checks.
What it means
HTTP request smuggling is a flaw that appears when two servers in a chain disagree about where one request ends and the next begins. A proxy or load balancer sees one request. The server behind it sees two, and the second was never inspected by the front end.
The disagreement usually comes from the two ways HTTP/1.1 can state a body's length: the Content-Length header and chunked Transfer-Encoding. If one server trusts the first and the other trusts the second, the leftover bytes become the start of someone else's request.
Why it matters
Whatever the front end enforces, such as sign-in checks, web application firewall rules or path restrictions, can be skipped by the smuggled request. It may also be glued onto the start of another visitor's request, which can expose their session or poison what a cache stores for others.
It is hard to see from the outside, because every individual request looks valid. Teams find out when a researcher reports it, or when strange responses reach the wrong customers. It is rare compared with common flaws, but the impact on a shared proxy can be large.
How it shows up
It shows up where there are two HTTP hops: a CDN, reverse proxy or load balancer in front of an application server, especially from different vendors or versions. Downgrading HTTP/2 from the client to HTTP/1.1 behind the proxy has also produced cases. RFC 9112 describes the risk and tells servers to treat messages with both headers as suspect.
Reduce it by using HTTP/2 end to end where possible, keeping proxy and server software updated, and rejecting ambiguous requests instead of guessing. Do not reuse back-end connections between different users if you can avoid it. Testing needs care, because probing can disturb real visitors, so it is best done on a copy first. See header injection for a related family.
Questions people ask
HTTP request smuggling, answered
Is request smuggling the same as request splitting?
They are cousins. Smuggling exploits a disagreement about request boundaries between two servers. Splitting, or CRLF injection, inserts line breaks into a value so that one response becomes two.
Both come from software treating message structure too loosely.
What do CL.TE and TE.CL mean?
They name which server trusts which header. In CL.TE the front end uses Content-Length and the back end uses Transfer-Encoding. TE.CL is the reverse.
The names are shorthand used by testers, not part of the standard.
Does HTTPS stop it?
No. HTTPS protects traffic in transit, and the flaw sits in how servers parse the messages once decrypted.
The mix of proxies and servers you run is what matters.
Can a WAF block it?
Sometimes, but the front-end device is the very part being fooled. A WAF that parses requests differently from your back end can still miss smuggled content.
Consistent parsing across the chain is the real fix.
Who is at risk?
Applications with more than one HTTP hop between the visitor and the code, using HTTP/1.1 on any link. That covers a large share of web apps.
A single server with no proxy in front has far less exposure.
Sources
Where this comes from
Related
Terms that sit next to this one
CRLF injection
Using carriage return and line feed characters to split a response or a log line.
HTTP header injection
Slipping line breaks into input so an attacker adds headers to your response.
WAF
A filter in front of your application that blocks known bad requests.
HTTP parameter pollution
Sending the same parameter twice so different layers read different values.
Session hijacking
Stealing the token that tells your application a browser is logged in.
Do your two servers agree?
We test web apps and their APIs for flaws like this and report only what we exploited, with the request and response. If we did not break it, we do not report it. Book a pilot on one app.
Or start with a $199 pilot on one application: thirty days, success criteria agreed before day one, credited against the annual if you convert.