Apache ZooKeeper
CVE-2026-115448
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach ZooKeeper client port (2181)
-
DeliveryCreate deeply nested znode chain
-
ExploitTrigger data-tree snapshot serialization
-
ExecutionRecursion exhausts JVM stack, kills snapshot thread
-
PersistRestart replays log, crashes on startup snapshot
-
ImpactPersistent outage spreads across ensemble
Vulnerability Assessment
| Exploitation Conditions | Exploitation requires a client that is permitted to create znodes. By default this is unauthenticated and remote because ZooKeeper's root ACL is open (world-creatable), so default deployments are exploitable by any client that can reach the client port (2181). The concrete prerequisite is the ability to create a chain of nested znodes deep enough to overflow the JVM stack during snapshot serialization; individual records stay within jute.maxbuffer, so that limit does not prevent it. The primary limiting factor is the vendor-stated workaround: deployments that use ACLs and authentication to restrict znode creation remove the unauthenticated path, so an attacker would then need authorization to create znodes. Network reachability of the client port is also required, so clusters that firewall the client port to trusted clients reduce exposure. Updating to 3.8.8 or 3.9.7 (or 3.10.0) is the only complete fix per the vendor. |
| Impact | Signals point to a credible availability threat whose urgency is tempered by the lack of exploitation evidence. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) with VA:H describes a network-reachable, low-complexity, availability-only flaw requiring no authentication against a default deployment, which is consistent with the description: the default root ACL is open, so any client that can reach the client port can create znodes. However, the vuln.today Decision label is 'awaiting_data', and no EPSS score, no CISA KEV listing, and no public exploit were supplied - so there is no evidence of active or probable near-term exploitation to corroborate the high base score. The PR:N rating is honest only for default-open-ACL deployments; in environments that already enforce ACLs and authentication on znode creation the attacker must be authorized, effectively raising the privilege requirement. The severity driver is impact rather than likelihood: the DoS is persistent (the server rebuilds the deep tree from its transaction log and crashes again on the startup snapshot) and can propagate to followers across the ensemble via the shared log, so successful exploitation is hard to recover from and can entail data loss. Net: a genuinely serious availability/integrity-of-service issue worth prioritising for patching, but currently a high-CVSS issue without demonstrated exploitation rather than a confirmed emergency - the 'awaiting_data' label should be revisited if EPSS/KEV data later appears. |
| Exploit ScenarioDerived | An attacker who can reach a ZooKeeper client port (2181) on a cluster using the default open root ACL creates a long chain of nested znodes, each a child of the last, staying under jute.maxbuffer per record. When the server next serializes its data tree to a snapshot, the one-stack-frame-per-level recursion exhausts the JVM stack and kills the snapshot thread; on restart the server rebuilds the deep tree from its transaction log and crashes again during the startup snapshot, and the same log can carry the condition to followers. No public exploit code was identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Client-created deeply nested znode chains in Apache ZooKeeper 3.8.0 through 3.8.7 and 3.9.0 through 3.9.6 can exhaust the JVM stack while the server serializes its data tree to a snapshot, killing the snapshot thread and, because the same deep tree is rebuilt from the transaction log on restart, leaving the server unable to return to service. Scoring is CVSS 4.0 8.7 (AV:N/AC:L/PR:N/UI:N/VA:H) and an assessed CVSS 3.1 vector of AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, an availability-only impact; default deployments are exposed because the root ACL is open, so any client that can reach the client port and create znodes can trigger it, while deployments requiring authentication and ACLs for znode creation remove the unauthenticated path. No public exploit identified at time of analysis and there is no KEV listing; the vendor has released fixes in 3.8.8, 3.9.7 and 3.10.0.
RemediationAI
Upgrade to Apache ZooKeeper 3.8.8 or 3.9.7 (3.10.0 is also listed as a fix version); the vendor states that updating is the only complete fix. If an upgrade cannot be scheduled immediately, the vendor-stated workaround is to use ACLs and authentication to restrict znode creation rather than relying on the default open root ACL; this removes the unauthenticated path but requires every client to authenticate and can break applications or tooling that depend on world-creatable znodes, so ACL changes must be planned alongside client configuration. Because the client port must be reachable to trigger the flaw, limiting network access to port 2181 to trusted clients reduces exposure, at the cost of blocking legitimate external clients. Advisory: https://issues.apache.org/jira/browse/ZOOKEEPER-5097 and https://seclists.org/oss-sec/2026/q4/488.
Affected ProductsAI
Apache ZooKeeper releases 3.8.0 through 3.8.7 and 3.9.0 through 3.9.6 are affected according to the vendor description, with fixes published in 3.8.8, 3.9.7 and 3.10.0 (JIRA ZOOKEEPER-5097 lists all three as fix versions). The advisory header also lists 3.8.8 and 3.9.7 among affected versions, but the description states those releases fix the issue and the JIRA records them as fix versions, so they should be treated as fixed rather than vulnerable. No CPE identifiers were provided in the source data. Vendor advisory: https://issues.apache.org/jira/browse/ZOOKEEPER-5097 and the project site https://zookeeper.apache.org/; the oss-security post is at https://seclists.org/oss-sec/2026/q4/488.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
ZooKeeper keeps its namespace as an in-memory hierarchical tree of znodes and persists state through periodic snapshots plus a transaction log. The snapshot serializer walks the tree recursively, consuming one stack frame per znode level with no depth bound; jute.maxbuffer caps the size of individual records but places no limit on tree depth or cumulative serialized size, so a client permitted to create znodes can build a chain deep enough that snapshot serialization throws StackOverflowError and terminates the snapshot thread. The deep chain is also recorded in the transaction log, so a restart replays the log, rebuilds the same deep tree and fails again while taking the startup snapshot, making the denial of service persistent and potentially forcing recovery that entails data loss; the replicated log reaches leader and followers alike, so the condition can propagate across an ensemble. No CWE identifier was supplied in the source data; the root cause class described is uncontrolled recursion depth leading to stack exhaustion. Upstream JIRA ZOOKEEPER-5097, titled "Make DataTree snapshot serialization iterative" (fix versions 3.10.0, 3.8.8, 3.9.7; label pull-request-available), is the tracking issue, and the same JIRA text also describes related hardening of snapshot deserialization entry points (file load, AdminServer restore, and Learner.syncWithLeader), which was scoped as an improvement rather than the vulnerability itself.
Know when Atlassian gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
Default open root ACL allows unauthenticated remote znode creation (AV:N/AC:L/PR:N/UI:N); impact is availability-only persistent DoS (A:H) with no confidentiality or integrity loss.
Description PRE-NVD
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
Attack Technique
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Atlassian has been made aware of an issue reported by a handful of customers where external attackers may have exploited
The HipChat for JIRA plugin before 6.30.0 for Atlassian JIRA allows remote authenticated users to execute arbitrary Java
Atlassian Confluence before 5.8.17 allows remote authenticated users to read configuration files via the decoratorName p
Atlassian JIRA before 5.0.1; Confluence before 3.5.16, 4.0 before 4.0.7, and 4.1 before 4.1.10; FishEye and Crucible bef
File upload logic in Apache Struts is flawed. Rated critical severity (CVSS 9.5), this vulnerability is remotely exploit
Directory traversal vulnerability in the Issue Collector plugin in Atlassian JIRA before 6.0.4 allows remote attackers t
All versions of Confluence Data Center and Server are affected by this unexploited vulnerability. Rated critical severit
There is a command injection vulnerability using environment variables in Bitbucket Server and Data Center. Rated critic
In affected versions of Confluence Server and Data Center, an OGNL injection vulnerability exists that would allow an un
Atlassian Crowd and Crowd Data Center had the pdkinstall development plugin incorrectly enabled in release builds. Rated
The IconUriServlet of the Atlassian OAuth Plugin from version 1.3.0 before version 1.9.12 and from version 2.0.0 before
This High severity RCE (Remote Code Execution) vulnerability was introduced in version 5.2 of Confluence Data Center and
CVE.org
GitHub PoC
Exploit-DB