Impact
A TLS peer can cause excessive CPU and memory consumption on a remote BEAM node by sending a crafted certificate chain during the TLS handshake. Each certificate declares multiple certificate policies, causing the policy tree to grow as M^K nodes (M policies per cert, K chain depth). This pins schedulers and exhausts memory without any authentication.
Any application using ssl for TLS that performs certificate path validation is vulnerable, including public_key:pkix_path_validation/3 called directly. Same vulnerability class as CVE-2023-0464 (OpenSSL).
Workarounds
No configuration-level workaround exists. Partial mitigations:
- Connection timeouts to limit handshake duration
- OS-level resource limits (cgroups, ulimit)
- Rate-limiting incoming TLS connections
Affected/Unaffected Versions
Introduced in OTP 26.2 (public_key-1.15, ssl-11.1). The policy tree grows unconditionally during path validation — no option enables or disables it. All OTP versions from 26.2 onward are affected (26.2.x, 27.x, 28.x, 29.x).
The cert_policy_opts option added in ssl-11.1.2 (OTP 27.0) controls only the final policy enforcement check, not tree construction.
A version larger than or equal to one of the listed patched versions is unaffected. See the OTP version scheme.
Credits
Thanks to Lukas Backström at Erlang Solutions for finding and responsibly disclosing this vulnerability to the Erlang/OTP project.
Impact
A TLS peer can cause excessive CPU and memory consumption on a remote BEAM node by sending a crafted certificate chain during the TLS handshake. Each certificate declares multiple certificate policies, causing the policy tree to grow as M^K nodes (M policies per cert, K chain depth). This pins schedulers and exhausts memory without any authentication.
Any application using
sslfor TLS that performs certificate path validation is vulnerable, includingpublic_key:pkix_path_validation/3called directly. Same vulnerability class as CVE-2023-0464 (OpenSSL).Workarounds
No configuration-level workaround exists. Partial mitigations:
Affected/Unaffected Versions
Introduced in OTP 26.2 (
public_key-1.15,ssl-11.1). The policy tree grows unconditionally during path validation — no option enables or disables it. All OTP versions from 26.2 onward are affected (26.2.x, 27.x, 28.x, 29.x).The
cert_policy_optsoption added inssl-11.1.2(OTP 27.0) controls only the final policy enforcement check, not tree construction.A version larger than or equal to one of the listed patched versions is unaffected. See the OTP version scheme.
Credits
Thanks to Lukas Backström at Erlang Solutions for finding and responsibly disclosing this vulnerability to the Erlang/OTP project.