CVE-2026-59251
CBL Mariner vulnerability analysis and mitigation

Overview

CVE-2026-59251 is a Denial of Service vulnerability in Erlang/OTP's public_key library caused by unbounded certificate policy tree growth during X.509 path validation. A remote unauthenticated attacker can crash the entire BEAM virtual machine by presenting a crafted certificate chain during a TLS handshake. Affected versions include Erlang/OTP 26.2 through 29.x (before 29.0.4, 28.5.0.4, and 27.3.4.15) and public_key library versions 1.15 through 1.21.x (before 1.21.4, 1.20.3.4, and 1.17.1.5). The vulnerability was published on July 27, 2026, and credited to Lukas Backström at Erlang Solutions for responsible disclosure. It carries a CVSS v3.1 score of 7.5 (High) and a CVSS v4.0 score of 8.7 (High) (GitHub Advisory, Red Hat).

Technical details

The root cause is CWE-770 (Allocation of Resources Without Limits or Throttling) in lib/public_key/src/pubkey_policy_tree.erl. During RFC 5280 certificate policy processing in public_key:pkix_path_validation/3, the functions pubkey_policy_tree:add_leaves/2 and pubkey_policy_tree:add_leaf_siblings/2 extend the policy tree per policy per certificate without any upper bound, causing exponential growth of M^K nodes (M = policies per certificate, K = chain depth). A modest chain with many policies per certificate is sufficient to pin all BEAM schedulers and exhaust node memory, taking down the entire VM. This is the same vulnerability class as CVE-2023-0464 (OpenSSL's X509_verify_cert policy tree DoS). The fix introduces a monotonic node counter capped at 1,000 nodes, rejecting chains that exceed this limit with {bad_cert, policy_tree_exceeded} (GitHub Commit, GitHub Advisory).

Impact

Successful exploitation causes complete denial of service of the affected Erlang/OTP node — BEAM schedulers are pinned and memory is exhausted, crashing the entire VM and all applications running on it. There is no confidentiality or integrity impact; the vulnerability is purely an availability issue. Any application using Erlang's ssl library for TLS that performs certificate path validation is vulnerable, including both TLS servers performing mutual-TLS client authentication and TLS clients validating server certificates, making the attack surface very broad (GitHub Advisory, Red Hat Bugzilla).

Exploitability

No public proof-of-concept exploit code is known to exist, and there is no evidence of in-the-wild exploitation as of the time of disclosure. The EPSS score is approximately 0.26%, reflecting low current exploitation probability. The vulnerability is automatable (no user interaction required) and requires no authentication — any attacker who can initiate or respond to a TLS handshake with the target can trigger the DoS. It has not been added to the CISA KEV catalog. No specific threat actor attribution has been reported (GitHub Advisory, Red Hat).

Exploitation steps

  1. Identify target: Locate services running Erlang/OTP 26.2–29.x that perform TLS certificate path validation — this includes any TLS server with mutual-TLS enabled or any Erlang TLS client connecting to an attacker-controlled server.
  2. Craft malicious certificate chain: Generate a chain of X.509 certificates where each certificate contains a large number of certificate policy OIDs (e.g., 10+ policies per certificate) across multiple chain depths (e.g., 5+ certificates). The policy tree will grow as M^K nodes.
  3. Initiate TLS handshake: Present the crafted certificate chain to the target during the TLS handshake — either by connecting to a mutual-TLS server and sending the chain as the client certificate, or by acting as a malicious TLS server that a vulnerable Erlang client connects to.
  4. Trigger resource exhaustion: The pubkey_policy_tree:add_leaves/2 and pubkey_policy_tree:add_leaf_siblings/2 functions process the chain without bounds, causing exponential memory and CPU consumption that pins BEAM schedulers and exhausts node memory.
  5. VM crash: The entire Erlang/OTP VM crashes, taking down all hosted applications (GitHub Advisory, Red Hat Bugzilla).

Indicators of compromise

  • Logs: Erlang/OTP crash dumps (erl_crash.dump) indicating memory exhaustion or scheduler overload; BEAM VM exit with out-of-memory errors during TLS handshake processing.
  • Process/System: Sudden spike in CPU usage (all cores pinned) on the Erlang node process; rapid memory growth of the BEAM VM process immediately preceding a crash; OS-level OOM killer events targeting the Erlang process.
  • Network: Unusual TLS handshake attempts from external IPs that do not complete successfully; repeated connection attempts presenting large or unusual client certificates to mutual-TLS endpoints.
  • Application: Services hosted on the Erlang/OTP node becoming unresponsive or crashing unexpectedly; {bad_cert, policy_tree_exceeded} errors in application logs (only on patched versions that have the fix applied).

Mitigation and workarounds

Upgrade to one of the patched Erlang/OTP versions: 29.0.4, 28.5.0.4, or 27.3.4.15 (corresponding to public_key library versions 1.21.4, 1.20.3.4, or 1.17.1.5 respectively). No configuration-level workaround exists to disable the vulnerable code path, as the policy tree grows unconditionally during path validation regardless of cert_policy_opts settings. Partial mitigations for environments that cannot immediately patch include: implementing TLS connection timeouts to limit handshake duration, applying OS-level resource limits (cgroups, ulimit) on the Erlang process, and rate-limiting incoming TLS connections at the network perimeter (GitHub Advisory, Red Hat).

Community reactions

Red Hat tracked the vulnerability as high severity in their Bugzilla system and published a CVE advisory. Microsoft also acknowledged the vulnerability through their Security Response Center. Security news outlet SecurityOnline.info covered the vulnerability as part of broader Erlang/OTP vulnerability reporting. The vulnerability was noted to be in the same class as OpenSSL's CVE-2023-0464, drawing comparisons to a well-known prior DoS issue in the X.509 policy tree processing space (Red Hat, SecurityOnline).

Additional resources


SourceThis report was generated using AI

Related CBL Mariner vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-68454HIGH8.8
  • Linux Kernel logoLinux Kernel
  • linux-gcp
NoYesAug 13, 2026
CVE-2026-73500HIGH8.7
  • etcd logoetcd
  • kots
NoYesAug 12, 2026
CVE-2026-72817MEDIUM6.9
  • CBL Mariner logoCBL Mariner
  • gh
NoYesAug 14, 2026
CVE-2026-72816MEDIUM6.9
  • CBL Mariner logoCBL Mariner
  • golang-github-go-chi-chi
NoYesAug 14, 2026
CVE-2026-68450LOW1.9
  • Linux Kernel logoLinux Kernel
  • linux-aws-6.14
NoYesAug 12, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management