Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend obs-fold HTTP request to reverse proxy
-
DeliveryProxy normalizes fold as header continuation
-
Exploithttpd silently promotes fold to new Transfer-Encoding header
-
ExecutionProxy and httpd disagree on request boundary
-
PersistAttacker-controlled data prepended to next victim request
-
ImpactSession hijack or response poisoning
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V4 - API and Web Service HTTP request consistency
|
| Exploitation Conditions | Exploitation requires two concurrent conditions: (1) the target must be running Erlang/OTP's inets httpd specifically - not Cowboy, Plug/Bandit, or other Erlang HTTP servers - on an affected OTP version (17.0 through 27.3.4.16 / 28.0 through 28.5.0.5 / 29.0 through 29.0.5); and (2) a reverse proxy, load balancer, or CDN must sit in front of httpd that does not itself reject obs-fold sequences before forwarding. If httpd is directly internet-exposed without a proxy, the smuggling vector does not apply (though header injection into the httpd parsing layer may still be possible). No authentication is required (PR:N in CVSS). No user interaction is required. Exploitation is limited by the relative infrequency of inets httpd in production-facing deployments, as most Erlang web applications use Cowboy or similar servers rather than the built-in inets httpd. |
| Impact | The CVSS 4.0 score of 8.3 (AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:L/SA:N) is consistent with real-world HTTP smuggling risk. AT:P (attack requirements present) is the key constraint: exploitation requires a reverse proxy in front of httpd that does not itself reject obs-fold. EPSS data is not provided in the input, and there is no CISA KEV listing, meaning active exploitation at scale is not confirmed. POC availability is unknown. The VI:H rating reflects that successful smuggling can inject arbitrary headers into other users' requests - a high-integrity impact. The CVSS 4.0 SI:L for subsequent systems appears conservative; in typical smuggling attacks the downstream impact on other users' sessions can be substantially higher. Despite no confirmed exploitation, the attack is unauthenticated, requires no user interaction, and the affected version range spans OTP 17.0 onward - a very long exposure window. Priority should be elevated for any Erlang httpd deployment behind a load balancer or reverse proxy (nginx, HAProxy, AWS ALB) that does not already strip or reject obs-fold sequences. |
| Exploit ScenarioDerived | An attacker sends a crafted HTTP/1.1 request to a reverse proxy with an obs-fold line - for example, a line starting with a space after a CRLF - embedding a Transfer-Encoding: chunked header as a folded continuation. The proxy interprets it as a single header field (correct RFC behavior) and forwards a normalized representation, while the unfixed Erlang httpd treats the folded line as a new, separate header, creating a discrepancy in request boundary parsing. This allows the attacker to prepend data to the next request processed by httpd on that connection, potentially hijacking another user's session or injecting arbitrary content into their response. No public POC has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
HTTP request smuggling in Erlang/OTP's built-in inets httpd server allows unauthenticated remote attackers to inject arbitrary HTTP headers and poison request pipelines in deployments fronted by a reverse proxy. The root cause is a longstanding absence of obs-fold support: any CRLF followed by a whitespace octet (SP or TAB) is silently parsed as a new header rather than a header continuation, causing proxy-backend disagreement on request boundaries. Affected versions span OTP 17.0 through the patched releases (27.3.4.17, 28.5.0.6, 29.0.6), with vendor patches now available via the Erlang GitHub security advisory. No public exploit code or CISA KEV listing exists at time of analysis.
RemediationAI
Upgrade to Erlang/OTP 27.3.4.17, 28.5.0.6, or 29.0.6 (corresponding to inets 9.3.2.7, 9.6.2.3, or 9.7.2 respectively) as identified in the GitHub security advisory at https://github.com/erlang/otp/security/advisories/GHSA-qh2f-33hj-37qf. Upstream fix commits are 220d618d, 273d8958, and e640d599. For deployments where an immediate OTP upgrade is not feasible, place a reverse proxy or WAF in front of httpd that is configured to reject (HTTP 400) requests containing obs-fold sequences (CRLF followed by SP or TAB in header lines) before forwarding; note this shifts the rejection logic upstream rather than eliminating the root cause. Alternatively, if httpd is not being used as a public-facing HTTP server but only for internal Erlang tooling (e.g., the OTP debugger or documentation server), restrict network access to trusted internal subnets to eliminate the network attack surface. Upgrading is strongly preferred over compensating controls given the breadth of affected versions.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The inets library (part of Erlang/OTP, cpe:2.3:a:erlang:otp) ships an HTTP/1.x server called httpd. RFC 2616 §2.2 and RFC 7230 §3.2.4 defined 'obs-fold' - obsolete header field folding where a CRLF followed by SP or TAB continued the previous header rather than starting a new one. RFC 9112 §5.2 now mandates that servers reject such sequences with HTTP 400. Erlang httpd never implemented obs-fold merging: every CRLF+octet pair unconditionally begins a new header. This creates a parsing discrepancy (CWE-444: Inconsistent Interpretation of HTTP Requests) when a reverse proxy correctly normalizes obs-fold lines before forwarding, while the backend httpd has already parsed the folded portion as a new, separate header. The fix (commit 220d618 and two siblings) adds an explicit match clause in httpd_request.erl that returns {error, {bad_request, 400, "obs-fold not supported"}} when a CRLF is followed by SP or TAB, aligning httpd with RFC 9112's requirement to reject rather than silently misparse.
Know when Otp gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:N/SI:L/SA:N
AC:H because smuggling requires a misconfigured reverse proxy in the path; S:C because other users' requests are affected beyond the vulnerable component.
Primary rating from Vendor (EEF).
CVSS VectorVendor: EEF
DescriptionCVE.org
httpd has never implemented obs-fold (RFC 2616 §2.2 / RFC 7230 §3.2.4 header continuation lines). Every CRLF followed by a non-CRLF octet unconditionally starts a new header. This missing feature became a security concern as the understanding of HTTP request smuggling attacks evolved.
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.
Technical POC Analysis
CWE-444 (Inconsistent Interpretation of HTTP Requests).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Erlang/OTP's HTTP server (versions prior to 27.3.4.17/28.5.0.6/29.0.6) contains a high-severity request smuggling vulnerability (CVSS 8.3) exploitable by unauthenticated attackers. Organizations running Erlang/OTP services behind reverse proxies face risk of security control bypass, request hijacking, and potential credential compromise if the vulnerability remains unpatched. This affects any Erlang/OTP deployment exposed to untrusted networks, making immediate assessment and patching critical.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
HTTP request smuggling exploits inconsistencies in how front-end and back-end servers parse HTTP message boundaries.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Incorrect access control in Yubico OTP functionality of the YubiKey hardware tokens along with the Yubico OTP validation
Erlang/OTP's ssl application in affected releases (OTP 22.2 through the fixed 27.3.4.18, 28.5.0.7 and 29.1.1) will compl
An on-path attacker can force an Erlang/OTP TLS 1.2 or DTLS client to accept an anonymous cipher suite not offered by th
Denial of service in Erlang/OTP erts (inet_drv SCTP handler) lets unauthenticated remote attackers crash the BEAM VM by
Unauthenticated denial of service in Erlang/OTP's inets httpd allows any remote attacker to exhaust a server's process p
Remote denial of service in Erlang/OTP's ssl application (dtls_packet_demux module) lets an unauthenticated attacker cra
Erlang/OTP's inets HTTP server (httpd) is vulnerable to a slow-body resource exhaustion attack exploitable by unauthenti
Uncontrolled recursion in the Erlang/OTP ssl application when processing a crafted TLS/DTLS certificate chain allows rem
Erlang/OTP's inets HTTP server (httpd) fails to enforce an administrator-configured request body-size limit when process
Remote code execution and denial of service are possible against Erlang/OTP nodes that run the megaco application with t
Remote unauthenticated attackers can exploit Erlang/OTP's built-in inets HTTP server across OTP versions 22.2 through 29
Request smuggling in Erlang OTP inets (versions 17.0 through 29.x) arises when the httpd server sits behind a Content-Le
EUVD-2026-69232
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB