Skip to content
NewA calmer, faster ZeroHour
Vulnerability8 · 1 read

CVE-2026-59739

Missing ACL Check in Apache ZooKeeper SetWatches Replay Leaks Restricted Znode Paths

CVSS 3.1
7.5 high
EPSS
—
Published
·
Modified
Analyze CVE-2026-59739 with Vani AIImpact, affected versions, exploitation status, mitigations and detection

Apache ZooKeeper fails to enforce ACLs when replaying a client's registered watches during session reconnection, an information-disclosure flaw (CWE-862, missing authorization) in the reconnect SetWatches/SetWatches2 handler. An attacker connects to the ZooKeeper client port and registers exists-watches on guessed paths that do not yet exist; after those paths are created with restricted ACLs, the attacker reconnects, and DataTree.setWatches() calls watcher.process(event) with a null ACL, bypassing the check that was added to WatchManager.triggerWatch() as an incomplete fix for CVE-2024-23944 (ZOOKEEPER-4799). The attacker learns only that the ACL-protected paths exist, not the znode data, but path names can embed sensitive values such as usernames or login IDs, making the leak potentially critical. Any deployment of ZooKeeper 3.8.x before 3.8.7 or 3.9.x before 3.9.6 where clients can reach the client port is affected. No public PoC is known, the issue is not in CISA KEV, and CVSS has not yet been scored.

What to do: Upgrade to ZooKeeper 3.9.6 or 3.8.7, the fixed patch releases for each branch. Restrict network access to the ZooKeeper client port (default 2181) to trusted hosts and subnets, since the attack only requires client connectivity to register and replay watches. Assume ACL-protected znode paths may have been enumerated on long-lived clusters and review whether those path names embed usernames or other sensitive identifiers.

ProductAffected
Apache Software Foundation Apache ZooKeeper3.8.x before 3.8.7
Apache Software Foundation Apache ZooKeeper3.9.x before 3.9.6
Estimated exposure
largeon the order of 100k+ vulnerable ZooKeeper nodes deployed in enterprise clusters, of which only a few thousand are internet-exposed on the default client port… — ZooKeeper is the default coordination service bundled with Kafka, Hadoop, HBase, SolrCloud and ClickHouse clusters (typically 3-5 nodes each), giving a very large installed base, while public internet scans have historically shown only a…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description · NVD

Information disclosure via SetWatches reconnect replay in Apache ZooKeeper due to missing ACL check. An attacker can discover ACL-restricted paths by registering exists-watches on non-existent paths, then reconnecting after the paths are created with restricted ACLs. Issue is caused by incomplete fix for CVE-2024-23944 (ZOOKEEPER-4799). The fix added ACL checking to WatchManager.triggerWatch(). However, DataTree.setWatches() — the SetWatches/SetWatches2 reconnect replay handler — still calls watcher.process(event) with null ACL, bypassing the check entirely. It's important to note that only the path is exposed by this vulnerability, not the data of znode, but since znode path can contain sensitive information like user name or login ID, this issue is potentially critical. Users are recommended to upgrade to version 3.9.6, 3.8.7 which fixes the issue.

Vendors
apache
Products
zookeeper
Weakness
CWE-862
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

In the news

1 story