Get a Demo

Let's Patch It!

Book a short call with one our specialists, we'll walk you through how Endor Patches work, and ask you a few questions about your environment (like your primary programming languages and repository management). We'll also send you an email right after you fill out the form, feel free to reply with any questions you have in advance!

CVE

EEF-CVE-2026-23941

Request smuggling via first-wins Content-Length parsing in inets httpd
Back to all
CVE

EEF-CVE-2026-23941

Request smuggling via first-wins Content-Length parsing in inets httpd

Summary

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/httpserver/httpdrequest.erl and program routines httpdrequest:parseheaders/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 until OTP 28.4.1, OTP 27.3.4.9 and OTP 26.2.5.18, corresponding to inets from 5.10 until 9.6.1, 9.3.2.3 and 9.1.0.5.

Workaround

  • 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.

Configuration

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).

Package Versions Affected

Package Version
patch Availability
No items found.

Automatically patch vulnerabilities without upgrading

Fix Without Upgrading
Detect compatible fix
Apply safe remediation
Fix with a single pull request

CVSS Version

Severity
Base Score
CVSS Version
Score Vector
C
H
U
7
-
4.0
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/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
C
H
U
0
-
C
H
U
-

Related Resources

No items found.

References

https://github.com/erlang/otp/security/advisories/GHSA-w4jc-9wpv-pqh7, https://cna.erlef.org/cves/CVE-2026-23941.html, https://www.erlang.org/doc/system/versions.html#order-of-versions, https://github.com/erlang/otp/commit/a4b46336fd25aa100ac602eb9a627aaead7eda18, https://github.com/erlang/otp/commit/a761d391d8d08316cbd7d4a86733ba932b73c45b, https://github.com/erlang/otp/commit/e775a332f623851385ab6ddb866d9b150612ddf6

Severity

0

CVSS Score
0
10

Basic Information

Ecosystem
Base CVSS
0
EPSS Probability
0.00026%
EPSS Percentile
0.07559%
Introduced Version
0
Fix Available
e775a332f623851385ab6ddb866d9b150612ddf6

Fix Critical Vulnerabilities Instantly

Secure your app without upgrading.
Fix Without Upgrading