Summary
CVE-2026-71380 is a Missing Release of Resource after Effective Lifetime (CWE-772) vulnerability in the httpd component of Erlang/OTP’s inets HTTP server. It allows an unauthenticated, remote attacker to cause a denial of service by sending a well-formed HTTP request with a large Content-Length header and then stalling before delivering the full request body, permanently parking a server worker. The issue carries a CVSS score of 8.7 (High) and affects a wide range of OTP releases.
Technical details
- Root cause:
httpd_request_handler:handle_info/2cancels the request timeout as soon as any parse step succeeds — including just parsing the headers — and the code path that re-arms the socket for more data ({active, once}) does not set a new timer. - Trigger conditions:
httpd_request:whole_body/2returns a "need more data" continuation whenever fewer bytes have arrived than the declaredContent-Length. If the client simply stops sending data after headers are parsed, the worker is left waiting indefinitely because no timer is active. - Missing safety net: A periodic byte-rate check (
minimum_bytes_per_second) exists to reclaim stalled connections, but it is disabled by default and must be explicitly configured. - Attack vector: Network, unauthenticated, low complexity — the attacker only needs to open a TCP connection, send valid headers with a large
Content-Length, and stop sending body data. - Impact: Each stalled connection permanently occupies one worker slot. Repeating this across enough connections exhausts all workers allowed by
max_clients, denying service to legitimate clients at negligible bandwidth/compute cost to the attacker (a Slowloris-style resource exhaustion attack).
Affected software
- Erlang/OTP from 17.0 before 27.3.4.17
- Erlang/OTP from 28.0 before 28.5.0.6
- Erlang/OTP from 29.0 before 29.0.6
- Corresponding
inetsapplication versions: 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 releases before 17.0 (inets before 5.10) are affected is unknown/unconfirmed by the vendor
- Only deployments running the
inetshttpdHTTP server module are affected
Severity
- CVSS v4.0 Base Score: 8.7 (High)
- CVSS v4.0 Vector:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Impact is limited to availability (no confidentiality or integrity impact)
Mitigation and recommended actions
- Immediate (patch): Upgrade Erlang/OTP to 27.3.4.17, 28.5.0.6, or 29.0.6 (or later), depending on your current release line.
- If patching is not immediately possible:
- Configure
minimum_bytes_per_secondin the httpd configuration (e.g.,{minimum_bytes_per_second, 200}) to enable the periodic byte-rate check that terminates stalled connections and reclaims parked workers. This check is off by default. - Place a reverse proxy (e.g., nginx) in front of
httpdand enforce a strict body-read timeout (e.g.,client_body_timeout) at the proxy layer. - Restrict network access to the httpd service to trusted clients/networks where feasible.
- Configure

