Summary
CVE-2026-73812 is an HTTP request smuggling vulnerability (CWE-444: Inconsistent Interpretation of HTTP Requests) in the inets httpd HTTP server module of Erlang/OTP. The httpd server accepts requests that simultaneously contain both Transfer-Encoding: chunked and Content-Length headers without rejecting them or closing the connection, in violation of RFC 9112 §6.1. When httpd sits behind a reverse proxy that determines message boundaries differently (e.g., by prioritizing Content-Length), this framing disagreement can be abused for a CL.TE-style desync attack. The issue carries a CVSS score of 8.3 (High) and is remotely exploitable over the network without authentication.
Technical details
- Root cause: The
check_header/3function ininets‘shttpdvalidates and rejects duplicateContent-Lengthheaders (addressed in a prior CVE) but does not detect or reject the co-presence ofTransfer-EncodingandContent-Lengthheaders in the same request, a condition RFC 9112 §6.1/§6.3 flags as a probable smuggling attempt. - Trigger conditions:
handle_body/3frames the request body according to chunked encoding wheneverTransfer-Encodingis present, silently discarding theContent-Lengthvalue rather than rejecting the malformed request or closing the connection. - Attack vector: Network-based, unauthenticated. Exploitation requires
httpdto be deployed behind a front-end proxy/load balancer that resolves message boundaries usingContent-Length(a classic CL.TE mismatch), allowing an attacker-crafted request to be interpreted differently by the front-end and back-end. - Impact: Attackers can smuggle a hidden second request past the front-end proxy, potentially bypassing proxy-enforced access controls or authentication, poisoning responses delivered to other users, or injecting requests attributed to other sessions. Per the CVSS vector, integrity impact is High and confidentiality impact is Low, with no direct availability impact.
Affected software
- Erlang/OTP:
OTP 17.0up to (but not including)OTP 27.3.4.17 - Erlang/OTP:
OTP 28.0up to (but not including)OTP 28.5.0.6 - Erlang/OTP:
OTP 29.0up to (but not including)OTP 29.0.6 inetsapplication:5.10up to (but not including)9.3.2.7;9.4up to (but not including)9.6.2.3;9.7up to (but not including)9.7.2- Whether versions of OTP prior to 17.0 (inets prior to 5.10) are affected is unconfirmed by the vendor.
Severity
- CVSS Score: 8.3 (High)
- CVSS Vector (v4.0):
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
Mitigation and recommended actions
- Immediate: Upgrade to the patched Erlang/OTP releases:
OTP 27.3.4.17,OTP 28.5.0.6, orOTP 29.0.6(correspondinginetsversions9.3.2.7,9.6.2.3, or9.7.2). - If patching is not immediately possible:
- Avoid placing
inetshttpdbehind a reverse proxy that resolves request framing viaContent-LengthwhilehttpdprioritizesTransfer-Encoding; if a proxy tier cannot be removed, configure it to reject any inbound request containing bothTransfer-EncodingandContent-Lengthheaders. - Where supported, configure front-end proxies to normalize requests by stripping
Content-LengthwheneverTransfer-Encoding: chunkedis present, before forwarding tohttpd. - Where feasible, run
httpdwithout a front-end reverse proxy to eliminate the desync vector entirely.
- Avoid placing

