Am I affected?

This record states its affected versions in a form that can't be compared automatically.

5.10 and up affected
9.6.1 not affected
9.3.2.3 not affected
9.1.0.5 not affected
every other version: unknown

Description

Inconsistent Interpretation of HTTP Requests ('HTTP Request Smuggling') vulnerability in Erlang OTP (inets httpd module) allows HTTP Request Smuggling.

This vulnerability is associated with program files lib/inets/src/http_server/httpd_request.erl and program routines httpd_request:parse_headers/7.

The server does not reject or normalize duplicate Content-Length headers. The earliest Content-Length in the request is used for body parsing while common reverse proxies (nginx, Apache httpd, Envoy) honor the last Content-Length value. This violates RFC 9112 Section 6.3 and allows front-end/back-end desynchronization, leaving attacker-controlled bytes queued as the start of the next request.

This issue affects OTP from OTP 17.0 before OTP 28.4.1, OTP 27.3.4.9 and OTP 26.2.5.18, corresponding to inets from 5.10 before 9.6.1, 9.3.2.3 and 9.1.0.5.

Weaknesses & attack patterns

Weakness

CWE-444 · Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') in catalog → MITRE ↗

Attack patterns

CAPEC-33 · HTTP Request Smuggling MITRE ↗

Affected — Erlang / inets Repository ↗

5.10 and up affected
9.6.1 not affected
9.3.2.3 not affected
9.1.0.5 not affected
every other version: unknown
default status unknown
cpe cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*
modules · source files · routines
modules httpd_request
source files src/http_server/httpd_request.erl
routines httpd_request:parse_headers/7

Affected — GitHub / erlang/otp Repository ↗

17.0 and up affected
28.4.1 not affected
27.3.4.9 not affected
26.2.5.18 not affected
84adefa and up affected
a4b4633 not affected
a761d39 not affected
e775a33 not affected
every other version: unknown
default status unknown
cpe cpe:2.3:a:erlang:erlang/otp:*:*:*:*:*:*:*:*
modules · source files · routines
modules httpd_request
source files lib/inets/src/http_server/httpd_request.erl
routines httpd_request:parse_headers/7

Workarounds

  • Configure frontend proxy to reject requests with duplicate Content-Length headers.
  • Disable HTTP keep-alive on httpd by adding {keep_alive, false} to httpd configuration. Note: This impacts performance for clients making multiple requests.
  • Deploy a Web Application Firewall (WAF) configured to reject requests with multiple Content-Length headers.

Configurations

The inets httpd server must be deployed behind a reverse proxy that honors a different Content-Length header than httpd (e.g., last vs. first). HTTP keep-alive must be enabled (the default).

References

Credits

Luigino Camastra / Aisle Research Finder
Konrad Pietrzak Remediation developer

CVSS breakdown

CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:H/SI:H/SA:L
« All CVEs