Platform

Platform overview How it works Authorization testing Evidence & reports Private scanning Integrations

Solutions

Security agencies Product teams Regulated industries Partner programme

Learn

Blog Knowledge hub Compare

Resources

Pricing Documentation Help centre FAQ Security & data What we haven’t proved

Company

About Contact Careers Sign in to the platform Start a $199 pilot →

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.

Illustration explaining HTTP request smuggling

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.

Cyberlop mark

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.