Skip to main content

Erlang OTP inets CVE-2026-70399

| EUVDEUVD-2026-69223 HIGH
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-09-01 EEF
8.7
CVSS 4.0 · Vendor: EEF
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify exposed inets httpd TCP listen port
  2. Delivery
    Open flood of concurrent TCP connections
  3. Exploit
    Hold each connection open without sending HTTP request
  4. Execution
    Saturate Erlang worker process pool
  5. Persist
    Exhaust node memory and OS file descriptors
  6. Impact
    Service denial achieved

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The vulnerability requires only that the target system runs Erlang/OTP's inets httpd component and has not explicitly set the max_clients option in its httpd configuration block. Establishing a TCP connection to the httpd listen port is sufficient; no valid HTTP request body, no HTTP headers, no authentication credential, and no session state are required - the accept path is triggered before any application-layer parsing occurs. The single, concrete limiting condition is the absence of an explicit max_clients integer value in configuration: any server that has set this option - regardless of the value - is fully protected, because the correctly-typed integer takes the safe code path. The vulnerability has been present since OTP 17.0, so long-running deployments that were provisioned before hardening guidance existed are at elevated risk. Attack impact is limited to availability of the inets httpd process and the hosting Erlang node; there is no confidentiality or integrity exposure.

Impact

The CVSS 4.0 base score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VA:H) accurately captures the threat model: no authentication, no special network positioning, and no user interaction are required, with availability as the sole impact. No EPSS score was provided, preventing quantified exploitation-probability assessment, but the attack requires only a TCP connection loop achievable with commodity tooling, making empirical probability likely non-trivial. No CISA KEV listing or public proof-of-concept was identified at time of analysis, suggesting exploitation has not been widely observed. The critical limiting factor is that only servers lacking an explicit max_clients configuration are vulnerable; this is a misconfiguration by omission that has existed since OTP 17.0, meaning long-running deployments that predate the inets hardening guide are the primary risk population. Operators who have followed the hardening guide are fully protected by their existing configuration, so real-world exposure is narrower than the CVSS score alone implies. The risk-to-effort ratio for exploitation is high - a complete DoS requires no specialised knowledge - making this a genuine operational priority for affected deployments.

Exploit ScenarioDerived

An attacker opens a large number of concurrent TCP connections to a publicly exposed Erlang/OTP inets httpd server that has not explicitly configured max_clients, holding each connection open without transmitting any HTTP request. Because the connection-count guard unconditionally accepts every connection due to the Erlang term-ordering bug, the server spawns a worker process and allocates a socket per accepted connection until the Erlang node exhausts its process table, available memory, or operating-system file descriptor limit, rendering the service completely unresponsive to legitimate clients. No public exploit code has been identified at time of analysis, but the attack requires only a basic TCP connection-flooding script executable with standard tooling.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 01, 2026

Unauthenticated denial of service in Erlang/OTP's inets httpd allows any remote attacker to exhaust a server's process pool, memory, and file descriptors by holding open an unlimited number of TCP connections. The flaw affects all inets httpd deployments across OTP 17.x through 29.x that do not explicitly configure the max_clients option; when that option is absent, a type-comparison defect caused by Erlang's term-ordering rules makes the connection-count guard unconditionally pass, accepting connections without bound. Vendor patches are available in OTP 27.3.4.17, 28.5.0.6, and 29.0.6; no public exploit code or CISA KEV listing has been identified at time of analysis.

RemediationAI

Upgrade to OTP 27.3.4.17, OTP 28.5.0.6, or OTP 29.0.6 (corresponding to inets 9.3.2.7, 9.6.2.3, or 9.7.2 respectively) as the primary fix; upstream patch commits are available at https://github.com/erlang/otp/commit/d94a94c96eb4cccbd6f7d7da5975f0c035b69612, https://github.com/erlang/otp/commit/6746dc4e1df5257ad8ac91cbbd167cb8b0274ce7, and https://github.com/erlang/otp/commit/e0050fc00c500a4fa9ba1f594603c787ff6d20b2. As an immediate compensating control that does not require an upgrade, explicitly set max_clients in the inets httpd configuration - for example {max_clients, 150} - which completely eliminates the vulnerability because a configured integer value is applied correctly by the existing code path and bypasses the defective lookup branch. Network-layer controls such as rate-limiting concurrent TCP connections per source IP via a firewall or load balancer reduce exposure from single-source attacks but do not protect against distributed flooding. Operators on OTP releases below 17.0 are on unsupported trains; migration to a supported and patched release is the only reliable remediation path. The full security advisory is at https://github.com/erlang/otp/security/advisories/GHSA-pwvh-c689-f8q5.

Affected VersionsENISA

otp 17.0 <27.3.4.17
otp d9674f32811cd5bb02b0d6656053b5ee226bc74c <*
otp 28.0 <28.5.0.6
otp 9.4 <9.6.2.3
otp 9.7 <9.7.2
otp 5.10 <9.3.2.7
otp 29.0 <29.0.6

Affected Packages

euvd otp fix: 9.3.2.7, 9.6.2.3, 9.7.2, 27.3.4.17, 28.5.0.6, 29.0.6

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

Erlang/OTP's built-in inets application includes httpd, a lightweight HTTP server implemented in pure Erlang. The vulnerability is rooted in CWE-770 (Allocation of Resources Without Limits or Throttling) and is triggered by a defect in httpd_manager.erl's handle_new_connection function. The 2-argument form httpd_util:lookup(Db, max_clients) returns the Erlang atom 'undefined' when max_clients is absent from the configuration database, rather than the integer 150 documented as the default. Erlang's term-ordering specification places all integers before all atoms in comparisons, so the guard Count =< Max evaluates to true for any integer Count when Max is the atom 'undefined', making the server unconditionally accept every incoming connection. The 3-argument form httpd_util:lookup(Db, max_clients, 150) used in the adjacent get_ustate/2 function would have returned the correct default, exposing the inconsistency. The patch introduces an ?HTTP_MAX_CLIENTS macro (150) defined in http_internal.hrl and switches handle_new_connection to the 3-argument lookup form. Affected CPE strings (cpe:2.3:a:erlang:otp:*:*:*:*:*:*:*:*) cover the erlang:otp package across all three affected release trains.

Know when Erlang 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

Vendor (EEF) PRIMARY 8.7 HIGH
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
vuln.today AI 7.5 HIGH

Network-reachable with no authentication or user interaction; sole impact is availability via unbounded resource exhaustion, scope unchanged within the Erlang node.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Red Hat 7.5 HIGH

Primary rating from Vendor (EEF).

CVSS VectorVendor: EEF

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

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.

Technical POC Analysis

CWE-770 (Allocation of Resources Without Limits or Throttling), specifically a type-comparison defect that silently disables a documented default.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Erlang/OTP inets httpd contains an unauthenticated denial-of-service vulnerability (CVE-2026-70399, CVSS 8.7) that enables any remote attacker to exhaust server resources and take down web services through unlimited TCP connections. Organizations running Erlang/OTP versions 17.x-29.x with default configurations on internet-facing systems face immediate service availability risk. Patches are available in OTP 27.3.4.17, 28.5.0.6, and 29.0.6, requiring prioritized deployment.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.5%
Top 57% exploitable
Prevalence
Low
built-in OTP HTTP server; production deployments predominantly use Cowboy
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

45
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +44
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in Erlang

View all
CVE-2025-32433 CRITICAL POC
10.0 Apr 16

Erlang/OTP SSH server allows unauthenticated remote code execution by exploiting a flaw in SSH protocol message handling

CVE-2017-1000385 MEDIUM POC
5.9 Dec 12

The Erlang otp TLS server answers with different TLS alerts to different error types in the RSA PKCS #1 1.5 padding. Rat

CVE-2023-48795 MEDIUM POC
5.9 Dec 18

The SSH transport protocol with certain OpenSSH extensions, found in OpenSSH before 9.6 and other products, allows remot

CVE-2020-13802 CRITICAL POC
9.8 Sep 02

Rebar3 versions 3.0.0-beta.3 to 3.13.2 are vulnerable to OS command injection via URL parameter of dependency specificat

CVE-2014-1693 HIGH POC
7.5 Dec 08

Multiple CRLF injection vulnerabilities in the FTP module in Erlang/OTP R15B03 allow context-dependent attackers to inje

CVE-2021-29221 HIGH POC
7.0 Apr 09

A local privilege escalation vulnerability was discovered in Erlang/OTP prior to version 23.2.3. Rated high severity (CV

CVE-2016-10253 CRITICAL
9.8 Mar 18

An issue was discovered in Erlang/OTP 18.x. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitab

CVE-2022-37026 CRITICAL
9.8 Sep 21

In Erlang/OTP before 23.3.4.15, 24.x before 24.3.4.2, and 25.x before 25.0.2, there is a Client Authentication Bypass in

CVE-2026-89422 CRITICAL
9.3 Sep 22

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

CVE-2026-67404 CRITICAL
9.2 Sep 23

RabbitMQ brokers that use the OAuth2 plugin can silently fall back to disabled TLS certificate verification when no CA b

CVE-2026-67231 CRITICAL
9.1 Sep 23

TLS client-authentication bypass in the RabbitMQ trust-store plugin lets a remote unauthenticated attacker whose forged

CVE-2026-55953 CRITICAL
9.1 Jul 27

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

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Module for Server Applications 15 SP7 Affected
SUSE Linux Enterprise Module for Server Applications 15 SP7 Affected
SUSE Linux Enterprise Server 15 SP7 Affected
SUSE Linux Enterprise Server 15 SP7 Affected
SUSE Linux Enterprise Server 16.0 Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy