FINDING · DETECTION
Iran's censor injects an HTTP block page consistently but contains an implementation bug: it fails to parse the TE header when a CL header with an invalid (non-integer) value is present, causing it to pass subsequent traffic. 254 of the evaluated test vectors circumvented Iran's censor; the 'Wrapping' CL*/TE strategy (e.g., 'Content-Length: <len>\u00FF\x0aX: X') was especially effective, exploiting this graceful-degradation fault.
From 2024-niere-http-smuggling — Turning Attacks into Advantages: Evading HTTP Censorship with HTTP Request Smuggling · §5.3 (Wrapping strategy, Iran discussion) · 2024 · FOCI 2024 (Free and Open Communications on the Internet)
Implications
- Wrapping the CL header value with unparseable bytes (e.g., extended ASCII or injected headers) reliably disables Iran's TE-header parsing, allowing the smuggled censored request to pass — a stable circumvention primitive tied to a documented implementation bug.
- Iran's censor requires both CL and TE headers to trigger the bug; omitting the TE header causes the invalid CL to be silently ignored and the second request blocked, so both headers must be present.
Tags
Extracted by claude-sonnet-4-6 — review before relying.