Skip to main content

Apache ZooKeeper CVE-2026-59739

| EUVDEUVD-2026-80330 HIGH
Missing Authorization (CWE-862)
7.5
CVSS 3.1 · Vendor
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Connect to ZooKeeper client port (2181)
  2. Delivery
    Register exists-watches on guessed non-existent paths
  3. Exploit
    Wait for app to create ACL-restricted znodes
  4. Execution
    Trigger session reconnect (SetWatches replay)
  5. Persist
    Watch fires with null ACL, no ACL check
  6. Impact
    Learn restricted path exists, harvest embedded sensitive path names

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires a running Apache ZooKeeper 3.8.0-3.8.6 or 3.9.0-3.9.5 server whose client port is network-reachable by the attacker, and the ability to establish a client session and issue SetWatches/SetWatches2 on reconnect (default protocol behavior, no authentication needed per PR:N). The attacker must register exists-watches on paths BEFORE they are created and then reconnect AFTER a privileged process creates them under a restricted ACL - so success depends on correctly anticipating (guessing) target path names and on those paths carrying sensitive information (usernames, login IDs) to be of value. Limiting factors: only path existence is revealed, never znode data; exploitation is probabilistic (depends on path-name prediction and reconnect timing); and impact is meaningful only when deployments encode secrets in znode path names rather than in data.

Impact

The signals converge on a genuine but modest-severity information-disclosure issue, not a top-tier emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N = 7.5) indicates network-reachable, unauthenticated, low-complexity access with high confidentiality impact and no integrity/availability effect. However, the vendor's C:H rating appears aggressive relative to the described impact: the flaw leaks only the EXISTENCE of a znode PATH (never its data), and exploitation requires the attacker to pre-register exists-watches on speculative paths and time a reconnect after those paths are created - a probabilistic, guessing-and-timing element the AC:L does not fully capture. A C:L rating (my assessed ~5.3) better reflects that only path metadata is disclosed. EPSS is low (0.20%, 10th percentile), there is no CISA KEV listing and no public exploit - consistent with a subtle logic bug that is hard to weaponize opportunistically. Exploitation status: no public exploit identified at time of analysis. Note the metadata conflict: the 'Authentication Bypass' tag mischaracterizes this as an authn flaw when the description and CWE-862 make clear it is an authorization/ACL-enforcement bypass. Overall this is a real but lower-priority fix - significant mainly where znode paths embed sensitive tokens (usernames, login IDs).

Exploit ScenarioDerived

An attacker connects to the ZooKeeper client port and registers exists-watches on guessed, currently non-existent paths that a privileged process is expected to create later under a restricted ACL. After the legitimate application creates those ACL-protected znodes, the attacker triggers a session reconnect; the SetWatches/SetWatches2 replay handler in DataTree.setWatches() fires the watch with a null ACL, confirming the path now exists and leaking any sensitive information encoded in the path name. No public exploit code exists, but the network-reachable, unauthenticated vector (AV:N/PR:N) makes it straightforward for anyone with client-port access.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv3 – Sep 17, 2026

Unauthenticated remote clients can discover the names of ACL-restricted znodes in Apache ZooKeeper 3.8.0 through 3.8.6 and 3.9.0 through 3.9.5 by abusing the SetWatches/SetWatches2 reconnect replay path, which replays watch events without the ACL check that a prior fix (CVE-2024-23944 / ZOOKEEPER-4799) added to WatchManager.triggerWatch(). An attacker registers exists-watches on not-yet-existing paths, reconnects after a privileged process creates those paths under a restrictive ACL, and learns the path names through the replayed events - only the path is exposed, never the znode data, though path names can themselves encode sensitive identifiers such as usernames or login IDs. Exploitation is probabilistic, requiring correct guessing of target path names and favorable reconnect timing, and the independent assessment rates confidentiality impact as Low (vector AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N) rather than the published 7.5; EPSS is 0.20% (10th percentile), and no public exploit has been identified at time of analysis.

Earlier versions of this analysis (2)
v2 Sep 17, 2026 - 20:48 cvss changed CVSS 7.5

Information disclosure in Apache ZooKeeper 3.8.0 through 3.8.6 and 3.9.0 through 3.9.5 lets a remote, unauthenticated client learn whether ACL-restricted znodes exist: it registers exists-watches on specific not-yet-created paths, waits for a legitimate process to create those paths with restrictive ACLs, then reconnects so the SetWatches/SetWatches2 replay handler in DataTree.setWatches() calls watcher.process(event) with a null ACL, bypassing the ACL check that ZOOKEEPER-4799 (the incomplete fix for CVE-2024-23944) added to WatchManager.triggerWatch(). Only path existence is exposed - never znode data - but paths can encode sensitive identifiers such as usernames or login IDs, and because the attacker must already know or guess the exact candidate path names, our assessment reduces the vendor's 7.5 (AC:L/C:H) to AC:H/C:L rather than treating it as free enumeration. EPSS is 0.20% (10th percentile), no public exploit has been identified at time of analysis, and the issue is confirmed fixed in 3.8.7 and 3.9.6.

v1 Sep 15, 2026 - 20:16

Path-name disclosure in Apache ZooKeeper 3.8.0 through 3.8.6 and 3.9.0 through 3.9.5 lets a connected client learn the names of ACL-restricted znodes by registering exists-watches on paths that do not yet exist and then reconnecting after those paths are created under restrictive ACLs. The reconnect replay handler DataTree.setWatches() delivers the watch notification with a null ACL, bypassing the ACL check that was added to WatchManager.triggerWatch() as the fix for CVE-2024-23944 (ZOOKEEPER-4799), making this an incomplete-fix bypass. Only the znode path string is exposed, not znode data, but because paths frequently embed usernames, login IDs, or tenant identifiers, Apache and the reporter rate it critical; no public exploit code or confirmed active exploitation was identified at time of analysis.

RemediationAI

Upgrade to Apache ZooKeeper 3.9.6 or 3.8.7, which are the vendor-released versions that fix the missing ACL check in DataTree.setWatches(); these are the only confirmed patched releases at time of analysis, and there is no evidence that backports were issued for earlier lines. Where immediate upgrade is not possible, the most effective compensating control is to restrict network reachability of the ZooKeeper client port (default 2181) so that only trusted clients can open sessions - typically via firewall rules, security groups, or binding the service to internal interfaces; the trade-off is that any legitimate remote clients outside the permitted range lose access, which in multi-tenant or shared-service environments can be disruptive. Organizations should also review whether sensitive identifiers such as usernames or login IDs are encoded in znode path names rather than in node data; migrating such naming to non-sensitive path conventions removes most of the residual risk, since the flaw exposes only path existence and names. Enable ZooKeeper's authentication and ACL enforcement for client sessions where supported, although note this does not remediate the bypass itself because the vulnerable reconnect replay path ignores ACLs - it only limits which clients can reach the server. Note that CVE-2024-23944/ZOOKEEPER-4799 was an incomplete fix, so any prior mitigation adopted for that CVE should not be assumed to cover the SetWatches reconnect path, and monitoring for unusual watch re-registration patterns on reconnect can serve as a detection backstop. Patch status: Vendor-released patch: 3.9.6 and 3.8.7. Exploitation status: no public exploit identified at time of analysis.

Affected VersionsENISA

Apache ZooKeeper 3.8.0 ≤3.8.6
Apache ZooKeeper 3.9.0 ≤3.9.5

Affected Packages

euvd apache_zookeeper no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Apache ZooKeeper is a distributed coordination service whose clients register watches to be notified when a znode changes state. The vulnerability is a missing-authorization flaw (CWE-862) rooted in an incomplete fix: CVE-2024-23944 (ZOOKEEPER-4799) added ACL verification to WatchManager.triggerWatch() so watch notifications would respect the ACLs of the watched path. However, DataTree.setWatches(), the handler for SetWatches and SetWatches2 requests that a client sends on reconnect to re-register previously held watches, still invokes watcher.process(event) with a null ACL, bypassing the check entirely. Because the reconnect replay path trusts the client-supplied watch list without evaluating ACLs, a client that registered an exists-watch on a non-existent path before the path was created will receive a notification for the created path regardless of the ACL now protecting it. The defect is purely an information-disclosure of path existence and names; the watch event payload does not include znode data, so no node content, credentials stored in data, or integrity/availability impact results, which is consistent with the assessed C:L/I:N/A:N profile. Affected CPEs correspond to the Apache ZooKeeper 3.8.x and 3.9.x release lines, with the fix landing in 3.9.6 and 3.8.7.

Know when Zookeeper 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

Vendor (CNA) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 5.3 MEDIUM

Network-reachable and unauthenticated (AV:N/PR:N), but only path-existence metadata leaks - not znode data - so C:L rather than C:H; no integrity or availability impact.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Red Hat 6.5 MEDIUM

Primary rating from Vendor (CNA).

CVSS VectorVendor

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

3
Analysis Updated
Sep 17, 2026 - 20:48 vuln.today
v3 - CVSS changed
Analysis Updated
Sep 17, 2026 - 20:48 vuln.today
v2 - CVSS changed
CVSS changed
Sep 17, 2026 - 20:22 NVD
7.5 (HIGH)

Description PRE-NVD

Disclosed via oss-security. NVD scoring and full description are pending.

Executive ViewAI

Why It Matters

Apache ZooKeeper instances running versions 3.8.0 through 3.8.6 or 3.9.0 through 3.9.5 can disclose the names of access-restricted configuration paths to unauthenticated network-reachable clients, potentially revealing identifiers such as usernames or login IDs embedded in those names, though never the underlying data. No vendor-released patch identified at time of analysis and no public exploit identified at time of analysis; exploitation is probabilistic, requiring correct path guessing and favorable reconnect timing, and only limited confidentiality impact (C:L) has been assessed. Because ZooKeeper commonly underpins service discovery and coordination for many downstream applications, leadership should treat this as a contained but unpatched disclosure risk requiring inventory, network-exposure review, and tracking of the vendor fix rather than emergency action.

Business Impact: Low
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: restrict network access to ZooKeeper client ports (2181/2182/2183) to trusted hosts and application subnets; enforce SASL/Digest authentication and strict ACLs on all znodes; avoid encoding sensitive identifiers such as usernames or login IDs in znode path names; enable ZooKeeper audit logging to detect anomalous SetWatches/SetWatches2 reconnect replay activity; and monitor the Apache ZooKeeper advisory channel for a fixed 3.8.x or 3.9.x release.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
High
core coordination service underpinning Kafka, Hadoop, and many distributed systems
Data Quality
4 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
Low

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2017-5637 HIGH POC
7.5 Oct 10

Two four letter word commands "wchp/wchc" are CPU intensive and could cause spike of CPU utilization on Apache ZooKeeper

CVE-2016-5017 HIGH POC
8.1 Sep 21

Buffer overflow in the C cli shell in Apache Zookeeper before 3.4.9 and 3.5.x before 3.5.3, when using the "cmd:" batch

CVE-2026-24281 HIGH POC
7.4 Mar 07

Hostname verification bypass in Apache ZooKeeper's ZKTrustManager allows attackers with a valid certificate trusted by t

CVE-2021-21295 MEDIUM
5.9 Mar 09

Netty is an open-source, asynchronous event-driven network application framework for rapid development of maintainable h

CVE-2024-51504 CRITICAL
9.1 Nov 07

When using IPAuthenticationProvider in ZooKeeper Admin Server there is a possibility of Authentication Bypass by Spoofin

CVE-2023-44981 CRITICAL
9.1 Oct 11

Authorization Bypass Through User-Controlled Key vulnerability in Apache ZooKeeper. Rated critical severity (CVSS 9.1),

CVE-2026-79993 HIGH
7.5 Sep 15

Authorization bypass in Apache ZooKeeper 3.8.0 through 3.8.6 and 3.9.0 through 3.9.5 lets remote attackers delete empty

CVE-2026-59969 HIGH
7.5 Sep 15

Improper certificate hostname validation in Apache ZooKeeper's quorum TLS path allows a CA-trusted peer certificate whos

CVE-2026-24308 HIGH
7.5 Mar 07

Apache ZooKeeper 3.8.5 and 3.9.4 improperly log sensitive client configuration data at INFO level, allowing unauthentica

CVE-2018-8012 HIGH
7.5 May 21

No authentication/authorization is enforced when a server attempts to join a quorum in Apache ZooKeeper before 3.4.10, a

CVE-2019-0201 MEDIUM
5.9 May 23

An issue is present in Apache ZooKeeper 1.0.0 to 3.4.13 and 3.5.0-alpha to 3.5.4-beta. Rated medium severity (CVSS 5.9),

CVE-2026-84439 MEDIUM
5.3 Sep 15

Audit log injection in Apache ZooKeeper 3.9.0–3.9.5 and 3.8.0–3.8.6 allows attackers to forge entries in zookeeper_audit

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy