HTTP Request Smuggling is a vulnerability class that occurs when frontend and backend HTTP servers disagree on where one request ends and the next begins. It enables cache poisoning, request hijacking, authentication bypass, and credential theft β all from a single carefully-crafted request. James Kettle’s research (2019, with major follow-ups in 2021-2024) put smuggling on the offensive map. This module covers the variants, exploitation patterns, and defenses for 2026.
The fundamental issue
HTTP/1.1 has two ways to indicate the end of a request body:
Content-Length: 100β body is exactly 100 bytesTransfer-Encoding: chunkedβ body is a series of length-prefixed chunks ending with0\r\n\r\n
If a request has both, RFC 7230 says Transfer-Encoding wins. But many proxies and servers parse one and ignore the other β or have subtle bugs in chunked parsing. When the front-end and back-end disagree, an attacker can sneak a partial request past the front-end into the back-end’s queue.
The classic variants
CL.TE β front uses Content-Length, back uses Transfer-Encoding
POST / HTTP/1.1
Host: target.com
Content-Length: 13
Transfer-Encoding: chunked
0
SMUGGLED
Front-end sees CL=13, forwards 13 bytes (0\r\n\r\nSMUGGLED). Back-end sees TE=chunked, reads 0\r\n\r\n as end-of-body, leaves “SMUGGLED” prefixing the next request in the connection.
Continue reading with Pro tier (βΉ4,999/year)
You've read 29% of this module. Unlock the remaining deep-dive, quiz, and every other Advanced/Expert module.