Vulnerability Details CVE-2026-58227
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.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.004
EPSS Ranking 27.7%
CVSS Severity
CVSS v3 Score 7.5
Products affected by CVE-2026-58227
-
cpe:2.3:a:erlang:erlang/otp:23.2
-
cpe:2.3:a:erlang:erlang/otp:23.2.1
-
cpe:2.3:a:erlang:erlang/otp:23.2.2
-
cpe:2.3:a:erlang:erlang/otp:23.2.3
-
cpe:2.3:a:erlang:erlang/otp:23.2.4
-
cpe:2.3:a:erlang:erlang/otp:23.2.5
-
cpe:2.3:a:erlang:erlang/otp:23.2.6
-
cpe:2.3:a:erlang:erlang/otp:23.2.7
-
cpe:2.3:a:erlang:erlang/otp:23.2.7.1
-
cpe:2.3:a:erlang:erlang/otp:23.2.7.2
-
cpe:2.3:a:erlang:erlang/otp:23.2.7.3
-
cpe:2.3:a:erlang:erlang/otp:23.2.7.4
-
cpe:2.3:a:erlang:erlang/otp:23.2.7.5
-
cpe:2.3:a:erlang:erlang/otp:23.3
-
cpe:2.3:a:erlang:erlang/otp:23.3.1
-
cpe:2.3:a:erlang:erlang/otp:23.3.2
-
cpe:2.3:a:erlang:erlang/otp:23.3.3
-
cpe:2.3:a:erlang:erlang/otp:23.3.4
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.1
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.10
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.11
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.12
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.13
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.14
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.15
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.16
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.17
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.18
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.19
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.2
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.20
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.3
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.4
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.5
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.6
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.7
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.8
-
cpe:2.3:a:erlang:erlang/otp:23.3.4.9
-
cpe:2.3:a:erlang:erlang/otp:24.0
-
cpe:2.3:a:erlang:erlang/otp:24.0.1
-
cpe:2.3:a:erlang:erlang/otp:24.0.2
-
cpe:2.3:a:erlang:erlang/otp:24.0.3
-
cpe:2.3:a:erlang:erlang/otp:24.0.4
-
cpe:2.3:a:erlang:erlang/otp:24.0.5
-
cpe:2.3:a:erlang:erlang/otp:24.0.6
-
cpe:2.3:a:erlang:erlang/otp:24.1
-
cpe:2.3:a:erlang:erlang/otp:24.1.1
-
cpe:2.3:a:erlang:erlang/otp:24.1.2
-
cpe:2.3:a:erlang:erlang/otp:24.1.3
-
cpe:2.3:a:erlang:erlang/otp:24.1.4
-
cpe:2.3:a:erlang:erlang/otp:24.1.5
-
cpe:2.3:a:erlang:erlang/otp:24.1.6
-
cpe:2.3:a:erlang:erlang/otp:24.1.7
-
cpe:2.3:a:erlang:erlang/otp:24.2
-
cpe:2.3:a:erlang:erlang/otp:24.2.1
-
cpe:2.3:a:erlang:erlang/otp:24.2.2
-
cpe:2.3:a:erlang:erlang/otp:24.3
-
cpe:2.3:a:erlang:erlang/otp:24.3.1
-
cpe:2.3:a:erlang:erlang/otp:24.3.2
-
cpe:2.3:a:erlang:erlang/otp:24.3.3
-
cpe:2.3:a:erlang:erlang/otp:24.3.4
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.1
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.10
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.11
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.12
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.13
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.14
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.15
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.16
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.17
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.2
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.3
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.4
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.5
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.6
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.7
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.8
-
cpe:2.3:a:erlang:erlang/otp:24.3.4.9
-
cpe:2.3:a:erlang:erlang/otp:25.0
-
cpe:2.3:a:erlang:erlang/otp:25.0.1
-
cpe:2.3:a:erlang:erlang/otp:25.0.2
-
cpe:2.3:a:erlang:erlang/otp:25.0.3
-
cpe:2.3:a:erlang:erlang/otp:25.0.4
-
cpe:2.3:a:erlang:erlang/otp:25.1
-
cpe:2.3:a:erlang:erlang/otp:25.1.1
-
cpe:2.3:a:erlang:erlang/otp:25.1.2
-
cpe:2.3:a:erlang:erlang/otp:25.1.2.1
-
cpe:2.3:a:erlang:erlang/otp:25.2
-
cpe:2.3:a:erlang:erlang/otp:25.2.1
-
cpe:2.3:a:erlang:erlang/otp:25.2.2
-
cpe:2.3:a:erlang:erlang/otp:25.2.3
-
cpe:2.3:a:erlang:erlang/otp:25.3
-
cpe:2.3:a:erlang:erlang/otp:25.3.1
-
cpe:2.3:a:erlang:erlang/otp:25.3.2
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.1
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.10
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.11
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.12
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.13
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.14
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.15
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.16
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.17
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.18
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.19
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.2
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.20
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.21
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.3
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.4
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.5
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.6
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.7
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.8
-
cpe:2.3:a:erlang:erlang/otp:25.3.2.9
-
cpe:2.3:a:erlang:erlang/otp:26.0
-
cpe:2.3:a:erlang:erlang/otp:26.0.1
-
cpe:2.3:a:erlang:erlang/otp:26.0.2
-
cpe:2.3:a:erlang:erlang/otp:26.1
-
cpe:2.3:a:erlang:erlang/otp:26.1.1
-
cpe:2.3:a:erlang:erlang/otp:26.1.2
-
cpe:2.3:a:erlang:erlang/otp:26.2
-
cpe:2.3:a:erlang:erlang/otp:26.2.1
-
cpe:2.3:a:erlang:erlang/otp:26.2.2
-
cpe:2.3:a:erlang:erlang/otp:26.2.3
-
cpe:2.3:a:erlang:erlang/otp:26.2.4
-
cpe:2.3:a:erlang:erlang/otp:26.2.5
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.1
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.10
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.11
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.12
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.13
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.14
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.15
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.16
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.17
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.18
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.19
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.2
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.20
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.21
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.3
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.4
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.5
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.6
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.7
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.8
-
cpe:2.3:a:erlang:erlang/otp:26.2.5.9
-
cpe:2.3:a:erlang:erlang/otp:27.0
-
cpe:2.3:a:erlang:erlang/otp:27.0.1
-
cpe:2.3:a:erlang:erlang/otp:27.1
-
cpe:2.3:a:erlang:erlang/otp:27.1.1
-
cpe:2.3:a:erlang:erlang/otp:27.1.2
-
cpe:2.3:a:erlang:erlang/otp:27.1.3
-
cpe:2.3:a:erlang:erlang/otp:27.2
-
cpe:2.3:a:erlang:erlang/otp:27.2.1
-
cpe:2.3:a:erlang:erlang/otp:27.2.2
-
cpe:2.3:a:erlang:erlang/otp:27.2.3
-
cpe:2.3:a:erlang:erlang/otp:27.2.4
-
cpe:2.3:a:erlang:erlang/otp:27.3
-
cpe:2.3:a:erlang:erlang/otp:27.3.1
-
cpe:2.3:a:erlang:erlang/otp:27.3.2
-
cpe:2.3:a:erlang:erlang/otp:27.3.3
-
cpe:2.3:a:erlang:erlang/otp:27.3.4
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.1
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.10
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.11
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.12
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.13
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.14
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.2
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.3
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.4
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.5
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.6
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.7
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.8
-
cpe:2.3:a:erlang:erlang/otp:27.3.4.9
-
cpe:2.3:a:erlang:erlang/otp:29.0
-
cpe:2.3:a:erlang:erlang/otp:29.0.1
-
cpe:2.3:a:erlang:erlang/otp:29.0.2
-
cpe:2.3:a:erlang:erlang/otp:29.0.3
-
cpe:2.3:a:erlang:erlang/ssl:10.2
-
cpe:2.3:a:erlang:erlang/ssl:10.2.1
-
cpe:2.3:a:erlang:erlang/ssl:10.2.2
-
cpe:2.3:a:erlang:erlang/ssl:10.2.3
-
cpe:2.3:a:erlang:erlang/ssl:10.2.4
-
cpe:2.3:a:erlang:erlang/ssl:10.2.4.1
-
cpe:2.3:a:erlang:erlang/ssl:10.2.4.2
-
cpe:2.3:a:erlang:erlang/ssl:10.2.4.3
-
cpe:2.3:a:erlang:erlang/ssl:10.2.4.4
-
cpe:2.3:a:erlang:erlang/ssl:10.3
-
cpe:2.3:a:erlang:erlang/ssl:10.3.1
-
cpe:2.3:a:erlang:erlang/ssl:10.3.1.1
-
cpe:2.3:a:erlang:erlang/ssl:10.3.1.2
-
cpe:2.3:a:erlang:erlang/ssl:10.3.1.3
-
cpe:2.3:a:erlang:erlang/ssl:10.3.1.4
-
cpe:2.3:a:erlang:erlang/ssl:10.3.1.5
-
cpe:2.3:a:erlang:erlang/ssl:10.4
-
cpe:2.3:a:erlang:erlang/ssl:10.4.1
-
cpe:2.3:a:erlang:erlang/ssl:10.4.2
-
cpe:2.3:a:erlang:erlang/ssl:10.5
-
cpe:2.3:a:erlang:erlang/ssl:10.5.1
-
cpe:2.3:a:erlang:erlang/ssl:10.5.2
-
cpe:2.3:a:erlang:erlang/ssl:10.5.3
-
cpe:2.3:a:erlang:erlang/ssl:10.6
-
cpe:2.3:a:erlang:erlang/ssl:10.6.1
-
cpe:2.3:a:erlang:erlang/ssl:10.7
-
cpe:2.3:a:erlang:erlang/ssl:10.7.1
-
cpe:2.3:a:erlang:erlang/ssl:10.7.2
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3.1
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3.2
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3.3
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3.4
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3.5
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3.6
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3.7
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3.8
-
cpe:2.3:a:erlang:erlang/ssl:10.7.3.9
-
cpe:2.3:a:erlang:erlang/ssl:10.8
-
cpe:2.3:a:erlang:erlang/ssl:10.8.1
-
cpe:2.3:a:erlang:erlang/ssl:10.8.2
-
cpe:2.3:a:erlang:erlang/ssl:10.8.3
-
cpe:2.3:a:erlang:erlang/ssl:10.8.4
-
cpe:2.3:a:erlang:erlang/ssl:10.8.5
-
cpe:2.3:a:erlang:erlang/ssl:10.8.6
-
cpe:2.3:a:erlang:erlang/ssl:10.8.7
-
cpe:2.3:a:erlang:erlang/ssl:10.9
-
cpe:2.3:a:erlang:erlang/ssl:10.9.1
-
cpe:2.3:a:erlang:erlang/ssl:10.9.1.1
-
cpe:2.3:a:erlang:erlang/ssl:10.9.1.2
-
cpe:2.3:a:erlang:erlang/ssl:10.9.1.3
-
cpe:2.3:a:erlang:erlang/ssl:10.9.1.4
-
cpe:2.3:a:erlang:erlang/ssl:10.9.1.5
-
cpe:2.3:a:erlang:erlang/ssl:10.9.1.6
-
cpe:2.3:a:erlang:erlang/ssl:10.9.1.7
-
cpe:2.3:a:erlang:erlang/ssl:11.0
-
cpe:2.3:a:erlang:erlang/ssl:11.0.1
-
cpe:2.3:a:erlang:erlang/ssl:11.0.2
-
cpe:2.3:a:erlang:erlang/ssl:11.0.3
-
cpe:2.3:a:erlang:erlang/ssl:11.1
-
cpe:2.3:a:erlang:erlang/ssl:11.1.1
-
cpe:2.3:a:erlang:erlang/ssl:11.1.2
-
cpe:2.3:a:erlang:erlang/ssl:11.1.3
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.1
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.10
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.11
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.2
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.3
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.4
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.5
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.6
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.7
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.8
-
cpe:2.3:a:erlang:erlang/ssl:11.1.4.9
-
cpe:2.3:a:erlang:erlang/ssl:11.2
-
cpe:2.3:a:erlang:erlang/ssl:11.2.1
-
cpe:2.3:a:erlang:erlang/ssl:11.2.10
-
cpe:2.3:a:erlang:erlang/ssl:11.2.11
-
cpe:2.3:a:erlang:erlang/ssl:11.2.12
-
cpe:2.3:a:erlang:erlang/ssl:11.2.12.1
-
cpe:2.3:a:erlang:erlang/ssl:11.2.12.10
-
cpe:2.3:a:erlang:erlang/ssl:11.2.12.2
-
cpe:2.3:a:erlang:erlang/ssl:11.2.12.3
-
cpe:2.3:a:erlang:erlang/ssl:11.2.12.4
-
cpe:2.3:a:erlang:erlang/ssl:11.2.12.5
-
cpe:2.3:a:erlang:erlang/ssl:11.2.12.7
-
cpe:2.3:a:erlang:erlang/ssl:11.2.12.9
-
cpe:2.3:a:erlang:erlang/ssl:11.2.2
-
cpe:2.3:a:erlang:erlang/ssl:11.2.3
-
cpe:2.3:a:erlang:erlang/ssl:11.2.4
-
cpe:2.3:a:erlang:erlang/ssl:11.2.5
-
cpe:2.3:a:erlang:erlang/ssl:11.2.6
-
cpe:2.3:a:erlang:erlang/ssl:11.2.7
-
cpe:2.3:a:erlang:erlang/ssl:11.2.8
-
cpe:2.3:a:erlang:erlang/ssl:11.2.9
-
cpe:2.3:a:erlang:erlang/ssl:11.3
-
cpe:2.3:a:erlang:erlang/ssl:11.3.1
-
cpe:2.3:a:erlang:erlang/ssl:11.3.2
-
cpe:2.3:a:erlang:erlang/ssl:11.4
-
cpe:2.3:a:erlang:erlang/ssl:11.4.1
-
cpe:2.3:a:erlang:erlang/ssl:11.4.2
-
cpe:2.3:a:erlang:erlang/ssl:11.5
-
cpe:2.3:a:erlang:erlang/ssl:11.5.1
-
cpe:2.3:a:erlang:erlang/ssl:11.5.2
-
cpe:2.3:a:erlang:erlang/ssl:11.5.3
-
cpe:2.3:a:erlang:erlang/ssl:11.5.4
-
cpe:2.3:a:erlang:erlang/ssl:11.6
-
cpe:2.3:a:erlang:erlang/ssl:11.6.0.2
-
cpe:2.3:a:erlang:erlang/ssl:11.6.0.3
-
cpe:2.3:a:erlang:erlang/ssl:11.7
-
cpe:2.3:a:erlang:erlang/ssl:11.7.2
-
cpe:2.3:a:erlang:erlang/ssl:11.7.3