Description
The Erlang/OTP ssl application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In ssl_certificate:handle_incomplete_chain/5, the received chain is passed to ssl_certificate:build_certificate_chain/5, which walks issuer relationships via ssl_certificate:do_certificate_chain/7 with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound.

An unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS Certificate handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages.

This issue affects OTP from OTP 23.2 before OTP 29.0.4, OTP 28.5.0.4 and OTP 27.3.4.15, corresponding to ssl from 10.2 before 11.7.4, 11.6.0.4 and 11.2.12.11.
Published: 2026-07-27
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The Erlang/OTP ssl application fails to detect cycles when rebuilding an incomplete peer certificate chain in a TLS or DTLS handshake. When a peer supplies two mutually cross‑signed certificates in unordered form, the chain reconstruction logic recurses without a depth limit, overflowing the call stack and consuming unlimited memory. An unauthenticated attacker can send such a chain in a Certificate handshake message, exhausting memory and crashing the BEAM node. The result is a denial of service for both servers and clients that process peer certificates. The flaw is classified as CWE‑674 (Uncontrolled Recursion).

Affected Systems

The vulnerability affects the Erlang/OTP platform, specifically the ssl application. It exists in OTP versions earlier than 29.0.4, 28.5.0.4, and 27.3.4.15, which correspond to ssl releases before 11.7.4, 11.6.0.4, and 11.2.12.11, respectively. Production deployments running any of those OTP releases are susceptible when the ssl module processes client or server certificate chains.

Risk and Exploitability

The flaw carries a CVSS score of 8.7, classifying it as high severity. Because the attack requires only a TCP connection and a partial TLS/DTLS handshake, no authentication or completed handshake is needed, making it easier for remote actors to trigger. The EPSS score of 0.0035 (< 1%) indicates a very low but nonzero probability of exploitation, and the vulnerability is not currently listed in CISA’s KEV catalog; nevertheless, the low EPSS does not diminish the danger posed by the simple attack steps. A remote attacker can repeatedly send crafted certificate chains to flood the BEAM node’s memory, causing widespread service disruption across any Erlang/OTP system that accepts certificates from untrusted peers.

Generated by OpenCVE AI on August 3, 2026 at 17:18 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Erlang/OTP to a release that includes the fix (OTP 29.0.4 or later, or 28.5.0.4/27.3.4.15 and newer).
  • Rebuild the BEAM runtime to ensure the updated ssl code is loaded.
  • After the upgrade, validate that the ssl module no longer reconstructs certificate chains from cross‑signed bytes; optionally, disallow peers presenting cross‑signed chains while the system continues to support normal certificate validation.

Generated by OpenCVE AI on August 3, 2026 at 17:18 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 27 Jul 2026 20:30:00 +0000

Type Values Removed Values Added
First Time appeared Erlang erlang/otp
Erlang otp
Vendors & Products Erlang erlang/otp
Erlang otp
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Mon, 27 Jul 2026 16:15:00 +0000

Type Values Removed Values Added
Description The Erlang/OTP ssl application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In ssl_certificate:handle_incomplete_chain/5, the received chain is passed to ssl_certificate:build_certificate_chain/5, which walks issuer relationships via ssl_certificate:do_certificate_chain/7 with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound. An unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS Certificate handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages. This issue affects OTP from 23.2 before 27.3.4.15, 28.5.0.4 and 29.0.4 corresponding to ssl from 10.2 before 11.2.12.11, 11.6.0.4 and 11.7.4. The Erlang/OTP ssl application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In ssl_certificate:handle_incomplete_chain/5, the received chain is passed to ssl_certificate:build_certificate_chain/5, which walks issuer relationships via ssl_certificate:do_certificate_chain/7 with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound. An unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS Certificate handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages. This issue affects OTP from OTP 23.2 before OTP 29.0.4, OTP 28.5.0.4 and OTP 27.3.4.15, corresponding to ssl from 10.2 before 11.7.4, 11.6.0.4 and 11.2.12.11.

Mon, 27 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Description The Erlang/OTP ssl application does not detect cycles when reconstructing an incomplete peer certificate chain during a TLS or DTLS handshake. In ssl_certificate:handle_incomplete_chain/5, the received chain is passed to ssl_certificate:build_certificate_chain/5, which walks issuer relationships via ssl_certificate:do_certificate_chain/7 with no cycle detection and no depth limit. When the peer supplies two mutually cross-signed certificates in unordered form (A issues B, B issues A), the issuer lookup alternates between the two certificates and the pair of functions recurses indefinitely, growing the call stack and chain accumulator without bound. An unauthenticated remote attacker can send a crafted certificate chain in a TLS or DTLS Certificate handshake message to exhaust available memory and crash the BEAM node. Only a TCP connection and a partial handshake are required; no authentication or completed handshake is needed, and both TLS/DTLS servers and clients are affected when processing peer certificate messages. This issue affects OTP from 23.2 before 27.3.4.15, 28.5.0.4 and 29.0.4 corresponding to ssl from 10.2 before 11.2.12.11, 11.6.0.4 and 11.7.4.
Title TLS/DTLS denial of service via unbounded recursion on cross-signed peer certificate chain
First Time appeared Erlang
Erlang erlang\/otp
Weaknesses CWE-674
CPEs cpe:2.3:a:erlang:erlang\/otp:*:*:*:*:*:*:*:*
Vendors & Products Erlang
Erlang erlang\/otp
References
Metrics cvssV4_0

{'score': 8.7, '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'}


Subscriptions

Erlang Erlang/otp Erlang\/otp Erlang\/ssl Otp
cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-07-28T09:53:23.614Z

Reserved: 2026-06-29T18:54:08.633Z

Link: CVE-2026-58227

cve-icon Vulnrichment

Updated: 2026-07-27T17:25:22.859Z

cve-icon NVD

Status : Analyzed

Published: 2026-07-27T16:17:56.953

Modified: 2026-08-10T15:50:11.453

Link: CVE-2026-58227

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-03T17:30:17Z

Weaknesses