CVE-2026-70399
moderateUnauthenticated DoS via unbounded connections in Erlang/OTP inets httpd
Erlang/OTP's inets httpd web server fails to enforce its documented max_clients connection limit, allowing an unauthenticated remote attacker to exhaust server resources by opening and holding open a very large number of connections. The flaw is in the accept gate (httpd_manager:handle_new_connection/4), which looks up max_clients with the two-argument httpd_util:lookup/2; when the option is not explicitly configured this returns the atom undefined rather than the documented default of 150, and because Erlang term ordering places every integer before every atom, the Count =< Max guard always passes and no connection is ever rejected. Merely establishing the connections is sufficient - no valid HTTP request, authentication, or user interaction is required - and each held connection occupies a worker process and a socket, driving the node toward process, memory, and file descriptor exhaustion (availability impact only). Any deployment running inets httpd on the affected OTP versions that does not set max_clients explicitly is exposed, while servers that configure the option explicitly enforce it correctly and are unaffected. No public proof-of-concept, KEV listing, or known exploitation has been reported; EPSS estimates roughly a 0.5% probability of exploitation within 30 days.
What to do: Upgrade to OTP 27.3.4.17, 28.5.0.6, or 29.0.6 as applicable to your branch (corresponding to inets 9.3.2.7, 9.6.2.3, or 9.7.2). As an interim mitigation, explicitly set max_clients in the httpd server configuration, since a configured value is enforced correctly, and consider placing connection rate limits or a reverse proxy/firewall in front of exposed httpd instances. Audit which deployments actually start inets httpd and whether they are internet-reachable, as exposure requires the httpd service to be running.
| Ericsson Erlang/OTP | OTP 17.0 up to but excluding 27.3.4.17; OTP 28.0 up to but excluding 28.5.0.6; OTP 29.0 up to but excluding 29.0.6 |
| Ericsson Erlang/OTP inets application (httpd) | inets 5.10 up to but excluding 9.3.2.7; inets 9.4 up to but excluding 9.6.2.3; inets 9.7 up to but excluding 9.7.2 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Allocation of Resources Without Limits or Throttling vulnerability in Erlang/OTP inets httpd allows an unauthenticated remote attacker to cause denial of service by opening and holding open a large number of connections. The max_clients option is documented to default to 150, and the inets hardening guide presents that limit as the first layer of denial-of-service defence, but a server that does not set it explicitly accepts an unlimited number of simultaneous connections. Establishing the connections is sufficient; no valid request and no authentication are required. The accept gate in httpd_manager:handle_new_connection/4 reads the option with httpd_util:lookup/2, which returns undefined when the key is absent, rather than the three-argument form carrying the 150 default that the neighbouring get_ustate/2 uses. Erlang term ordering places every integer before every atom, so the Count =< Max guard holds for any connection count and the server never returns {reject, busy}. Each accepted connection occupies a worker process and a socket for as long as it is held, driving the node towards process, memory and file descriptor exhaustion. Servers that set max_clients explicitly are unaffected, because a configured value is applied as intended. 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.
- Weakness
- CWE-770
- 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/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
In the news0 stories
No ingested article mentions this CVE yet.