CVE-2026-73812
moderateHTTP Request Smuggling (CL.TE Desync) in Erlang/OTP inets httpd
Erlang/OTP's inets httpd server fails to reject requests carrying both a Transfer-Encoding header and a Content-Length header, and its body handler (handle_body/3) frames the body using chunked encoding while silently discarding the Content-Length value, even though check_header/3 already rejects duplicate Content-Length headers (per CVE-2026-23941). When such requests pass through a front-end proxy, load balancer, or WAF that prefers Content-Length, the front-end and httpd disagree on where the request body ends, producing a classic CL.TE front-end/back-end desync (CWE-444). An attacker who triggers this desync can smuggle requests past the front-end, potentially bypassing access controls, poisoning caches, or hijacking other users' requests on the connection, which is reflected in the CVSS 4.0 score of 8.3 with high integrity impact (VI:H) and no privileges or user interaction required. Affected users are deployments running inets httpd within Erlang/OTP 17.0 and later in the specified ranges, particularly as a back-end behind a CL-preferring front-end. No public proof-of-concept, in-the-wild exploitation, or CISA KEV listing is known, and EPSS currently assigns a 0.3% probability of exploitation within 30 days.
What to do: Upgrade Erlang/OTP to at least OTP 27.3.4.17, OTP 28.5.0.6, or OTP 29.0.6 (inets 9.3.2.7, 9.6.2.3, and 9.7.2 respectively), matching your release line. Until patched, mitigate by having front-end proxies, load balancers, or WAFs reject or normalize requests containing both Transfer-Encoding and Content-Length headers. Audit whether inets httpd is used as a back-end behind CL-preferring proxies, caches, or access-control front-ends, since desync there could allow smuggled requests to bypass controls or poison caches.
| Ericsson (Erlang/OTP) inets (httpd) | OTP 17.0 to before OTP 27.3.4.17 (inets 5.10 to before 9.3.2.7) |
| Ericsson (Erlang/OTP) inets (httpd) | OTP 28.0 to before OTP 28.5.0.6 (inets 9.4 to before 9.6.2.3) |
| Ericsson (Erlang/OTP) inets (httpd) | OTP 29.0 to before OTP 29.0.6 (inets 9.7 to before 9.7.2) |
| Ericsson (Erlang/OTP) inets (httpd) | OTP before OTP 17.0 / inets before 5.10: affected status unknown |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
httpd function check_header/3 rejects duplicate Content-Length (per CVE-2026-23941) but never checks for the TE+CL co-presence that RFC 9112 §6.3 identifies as a probable smuggling attempt. handle_body/3 frames by chunked and silently discards Content-Length. A CL-preferring front-end paired with chunked-preferring inets creates a classic CL.TE front-end/back-end desync. This issue affects OTP from OTP 17.0 before OTP 27.3.4.17, from OTP 28.0 before OTP 28.5.0.6, and from OTP 29.0 before OTP 29.0.6, corresponding to inets from 5.10 before 9.3.2.7, from 9.4 before 9.6.2.3, and from 9.7 before 9.7.2. Whether OTP before OTP 17.0, corresponding to inets before 5.10, is affected is unknown.
- Weakness
- CWE-444
- Vector
- CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.