Description
Uncontrolled recursion in Apache ZooKeeper. The server serializes its data tree to a snapshot by recursing one stack frame per znode level, with no depth bound. A client permitted to create znodes (the default root ACL is open) can build a chain of nested znodes deep enough that taking a snapshot exhausts the JVM stack and kills the snapshot thread; sizes stay within jute.maxbuffer, so existing limits do not prevent it. This is a denial of service that becomes persistent: on restart the server rebuilds the deep tree from its transaction log and fails again while taking the startup snapshot, so it does not return to service, and recovery can entail data loss. The same log affects a leader and its followers, so it can spread across an ensemble.

This issue affects Apache ZooKeeper 3.8.0 through 3.8.7 and 3.9.0 through 3.9.6. Users are recommended to upgrade to 3.8.8 or 3.9.7, which fix the issue. As a workaround, use ACLs and authentication to restrict znode creation rather than relying on the default open root ACL.
Published: 2026-11-04
Score: 8.7 High
EPSS: n/a
KEV: No
Impact: Denial of Service (persistent)
Action: Apply Patch
AI Analysis

Impact

Apache ZooKeeper serializes its data tree into a snapshot by recursively descending a stack frame for each znode level, but the implementation does not limit the depth of recursion. A client that can create znodes – which is permitted by the default open ACL on the root znode – can construct an arbitrarily deep chain of nested znodes. When the server attempts to take a snapshot, the unchecked recursion exhausts the JVM stack and terminates the snapshot thread. Because the corrupted transaction log is subsequently replayed on restart, the problem persists, causing the server to remain unavailable and potentially leading to data loss. This flaw is classified as a denial‑of‑service vulnerability stemming from uncontrolled resource consumption (CWE‑770).

Affected Systems

The affected product is Apache ZooKeeper. Versions 3.8.0 through 3.8.7 and 3.9.0 through 3.9.6 contain the flaw. The vendor advises upgrading to 3.8.8 or 3.9.7, the first releases that include the fix. All ZooKeeper nodes in an ensemble that remain on older versions can be affected because the same transaction log is shared by leaders and followers.

Risk and Exploitability

A CVSS score of 8.7 indicates a high‑severity denial‑of‑service condition. The EPSS score is not available and the vulnerability is not listed in CISA’s KEV catalog, suggesting no confirmed exploits in the wild. Nonetheless, a threat actor who can connect to the ZooKeeper service and create znodes can easily exploit the issue. The impact unfolds locally on the server that performs the snapshot and then propagates to other ensemble members when the log is replayed, making mitigation time‑critical.

Generated by OpenCVE AI on November 4, 2026 at 12:42 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the vendor‑issued patch by upgrading ZooKeeper to version 3.8.8 or 3.9.7 on all nodes in the ensemble.
  • Limit znode creation by configuring ACLs and enabling authentication so that only authorized clients can add nodes under the root.
  • Deploy the update in a rolling fashion, updating one node at a time to keep the ensemble operational and minimize risk of simultaneous unavailability.

Generated by OpenCVE AI on November 4, 2026 at 12:42 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 04 Nov 2026 13:30:00 +0000

Type Values Removed Values Added
References

Wed, 04 Nov 2026 13:00:00 +0000

Type Values Removed Values Added
First Time appeared Apache
Apache zookeeper
Vendors & Products Apache
Apache zookeeper

Wed, 04 Nov 2026 11:00:00 +0000

Type Values Removed Values Added
Description Uncontrolled recursion in Apache ZooKeeper. The server serializes its data tree to a snapshot by recursing one stack frame per znode level, with no depth bound. A client permitted to create znodes (the default root ACL is open) can build a chain of nested znodes deep enough that taking a snapshot exhausts the JVM stack and kills the snapshot thread; sizes stay within jute.maxbuffer, so existing limits do not prevent it. This is a denial of service that becomes persistent: on restart the server rebuilds the deep tree from its transaction log and fails again while taking the startup snapshot, so it does not return to service, and recovery can entail data loss. The same log affects a leader and its followers, so it can spread across an ensemble. This issue affects Apache ZooKeeper 3.8.0 through 3.8.7 and 3.9.0 through 3.9.6. Users are recommended to upgrade to 3.8.8 or 3.9.7, which fix the issue. As a workaround, use ACLs and authentication to restrict znode creation rather than relying on the default open root ACL.
Title Apache ZooKeeper: Unbounded recursion in snapshot serialization allows a client to render the server unrecoverable
Weaknesses CWE-770
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

Apache Zookeeper
cve-icon MITRE

Status: PUBLISHED

Assigner: apache

Published:

Updated: 2026-11-04T12:11:31.455Z

Reserved: 2026-10-22T14:26:24.228Z

Link: CVE-2026-115448

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-11-04T11:17:14.017

Modified: 2026-11-04T13:17:25.743

Link: CVE-2026-115448

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-11-04T12:45:14Z

Weaknesses
  • CWE-770

    Allocation of Resources Without Limits or Throttling