GHSA-9x9g-5r48-3wvg
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach ZooKeeper client port 2181
-
DeliveryOpen plain TCP session, no auth
-
ExploitCraft raw deleteContainer opcode (20)
-
ExecutionBypass session and DELETE ACL checks
-
ImpactDelete empty persistent/container/TTL znodes
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 network reachability to the ZooKeeper client port (2181 by default) and the ability to open a raw TCP session and speak the wire protocol directly - the official client exposes no API for the deleteContainer opcode (20), so an attacker must craft the raw request. NO authentication credentials and NO ACL grant are needed; the vulnerable path skips both the session check and the DELETE ACL check. Exploitation is limited to deleting EMPTY persistent, container, and TTL znodes (non-empty nodes are not directly removable), and affected servers must run ZooKeeper 3.8.0-3.8.6 or 3.9.0-3.9.5. The primary real-world limiter is deployment topology: many production ensembles restrict port 2181 to internal application/ensemble networks, so exposure hinges on whether that port is reachable by the attacker. |
| Impact | This is a genuine authorization-bypass with a credible medium-high risk profile, but not an emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N) is internally consistent with the description: exploitation needs only a plain TCP session to the ZooKeeper client port (2181) with no authentication and no ACL grant, and the deleteContainer path skips both the session check and the DELETE ACL check that OpCode 2 enforces. Impact is scoped to integrity (I:H, C:N/A:N) because the primitive deletes empty persistent/container/TTL znodes rather than reading data or crashing the service - though cascading deletion of coordination state can indirectly harm dependent systems. EPSS is low (0.24%, 16th percentile), there is NO CISA KEV listing and no public exploit code identified, so despite the low attack complexity this reads as a real-but-not-yet-exploited priority rather than an actively-abused flaw. The key limiting factor CVSS does not capture: exploitation requires network reachability of port 2181, which in well-run deployments is segmented to an internal ensemble/application tier. No signals conflict; the main correction is a taxonomy one - the 'Authentication Bypass' tag understates that this is an authorization/ACL-enforcement bypass (correctly captured by CWE-862). |
| Exploit ScenarioDerived | An attacker who can reach the ZooKeeper client port (2181) opens a raw TCP session without authenticating and, without any ACL grant, issues the internal-only deleteContainer opcode (20) referencing empty persistent, container, or TTL znodes. The request bypasses the session and DELETE ACL checks, silently removing coordination state that dependent systems (e.g. Kafka, Hadoop) rely on. No public proof-of-concept is identified, but the raw-protocol steps are described in enough detail to be readily reproduced. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv3 – Sep 17, 2026
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 persistent, container, and TTL znodes by sending a raw deleteContainer opcode (20) to the client port - 2181 by default - without any credentials or ACL grant, because that code path skips both the session check and the DELETE ACL check enforced by the normal delete path. The official client exposes no API for this internal-only opcode, so exploitation requires hand-crafting the ZooKeeper wire protocol, and non-empty nodes cannot be removed directly. Per the assessed CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N) the impact is integrity-only, and no public exploit code has been identified at time of analysis with EPSS at 0.24% (16th percentile); practical risk is governed mainly by whether port 2181 is reachable from outside the trusted application or ensemble network.
Earlier versions of this analysis (2)
Unauthenticated deletion of empty znodes is possible in Apache ZooKeeper 3.8.0 through 3.8.6 and 3.9.0 through 3.9.5 because the internal deleteContainer opcode path enforces neither the session check nor the DELETE ACL check. Any remote party who can open a raw TCP session to the client port (2181 by default) and speak the ZooKeeper wire protocol directly can delete empty persistent znodes, container nodes, and TTL nodes without credentials or ACL grants - an unauthenticated (CVSS PR:N) authorization bypass rated 7.5, with integrity impact only and no confidentiality or availability impact. No public exploit code or confirmed active exploitation has been identified at time of analysis (no CISA KEV listing), and EPSS is 0.24% (16th percentile), which reflects the low likelihood that automated scanning reaches this internal-only opcode rather than the difficulty of exploitation once port 2181 is reachable.
Let me synthesize the analysis for CVE-2026-79993.
Key facts:
- Apache ZooKeeper deleteContainer opcode (0x14/20) processed without ACL check.
- Affected: 3.9.0-3.9.5, 3.8.0-3.8.6.
- Fixed in 3.9.6 and 3.8.7.
- Any client with plain TCP session on client port 2181, no auth, no ACL permissions, can delete any empty persistent znode (regular persistent, container, TTL nodes).
- Skips session check and DELETE ACL check.
- Authorization bypass / ACL enforcement bug (CWE-862 Missing Authorization presumably, or CWE-863 Incorrect Authorization).
- No CVSS provided, no EPSS, no KEV, no POC.
- Credit given.
Let me construct fields.
Product name: "Apache ZooKeeper"
Summary: original synthesis. Start with impact verb + product. "Unauthorized deletion of znodes in Apache ZooKeeper 3.8.x and 3.9.x..."
Technical context: ZooKeeper coordination kernel, znodes, ACLs, opcodes, container nodes, TTL nodes. CWE-862/CWE-863. The deleteContainer opcode is internal-only, used by servers to remove container nodes when they become empty. The regular DELETE path (opcode 2) enforces session check and ACL. deleteContainer path skips both.
Note: description says "allowing any authenticated client" but then says "with NO authentication and NO ACL permissions". Conflicting. Actually the description contradicts itself: "allowing any authenticated client" vs "with NO authentication". Hmm. The plain TCP session means anyone with network access to port 2181 — no authentication needed. So PR:N effectively. But wait—can they delete any znode? The check is on empty persistent znodes. Actually the description says deleteContainer can delete "any empty persistent znode (including regular persistent nodes, container nodes, and TTL nodes)". So condition: znode must be empty (no children).
Actually deleteContainer opcode normally deletes container nodes; here it can delete any empty persistent znode. So prerequisite: target znode must have zero children.
CVSS assessment: AV:N, AC:L, PR:N (no auth n
RemediationAI
Vendor-released patch: upgrade to Apache ZooKeeper 3.9.6 or 3.8.7, as stated in the Apache advisory, which is the only complete fix since it restores the session check and DELETE ACL enforcement on the deleteContainer opcode (20) path; see https://zookeeper.apache.org/ and https://lists.apache.org/thread/9cw3rmrzhqpct26v8j18fy41bghlq8y5 . Because the bypass deliberately skips authentication and ACL evaluation, enabling SASL or tightening znode ACLs will not stop it - the decisive compensating control is network reachability: block inbound TCP to the ZooKeeper client port (2181 by default, plus any non-standard port in use) at the host firewall or security group and allow only the application and peer-ensemble addresses that legitimately need it, accepting that any new legitimate consumer must be added to the allowlist or it will lose coordination connectivity. If segregation cannot be enforced immediately, restrict the port to internal network segments/VPN paths and monitor wire traffic or packet captures for the deleteContainer opcode (0x14/20) emitted by non-server peers, noting that this detection is best-effort and does not fix the underlying missing authorization check. Prioritize internet-facing or broadly reachable ensembles first; no vendor-released patch alternative to the version upgrade was identified in the source data.
Affected VersionsENISA
Affected Packages
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 that stores data in a hierarchical tree of znodes, each governed by an ACL that controls who may read, write, create, or delete it. Clients talk to the server over a TCP session on the client port (2181 by default) using a binary wire protocol identified by numeric OpCodes; the standard delete operation is OpCode 2 (delete), which is subject to both session validation and a DELETE ACL check. The affected code path is OpCode 20 / 0x14, deleteContainer, an internal-only maintenance opcode used by the server itself to reap container and TTL znodes, and it was reachable over the wire without the checks applied to the regular delete path. The root cause is CWE-862 (Missing Authorization): the deleteContainer handler performs neither the session-permission check nor the DELETE ACL check before acting on the target znode, so any peer that can complete a plain TCP session and emit the raw request packet can delete an empty znode regardless of the ACL on the znode or its parent. No CPE strings were supplied in the source data; the affected product scope is defined by the EUVD/NVD version ranges Apache ZooKeeper 3.8.0 ≤ 3.8.6 and 3.9.0 ≤ 3.9.5.
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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Raw TCP session on port 2181 needs no auth or ACL (AV:N/AC:L/PR:N/UI:N); impact is unauthorized znode deletion so I:H, with no data disclosure (C:N) and no direct service crash (A:N).
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
4Description PRE-NVD
Executive ViewAI
Apache ZooKeeper versions 3.8.0 through 3.8.6 and 3.9.0 through 3.9.5 contain an unauthenticated authorization bypass that allows attackers to delete specific empty znodes if they can reach the client port. This could disrupt dependent applications and services that rely on ZooKeeper for coordination, leading to operational outages or misconfigurations. While no public exploit identified at time of analysis and exploitation requires custom protocol crafting, organizations with exposed ZooKeeper instances should prioritize network restrictions and monitoring.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict network access to ZooKeeper client port 2181 to trusted application/ensemble networks; implement network-level ACLs; monitor for deleteContainer opcode (20) traffic; apply vendor patch when available.
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
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Two four letter word commands "wchp/wchc" are CPU intensive and could cause spike of CPU utilization on Apache ZooKeeper
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
Hostname verification bypass in Apache ZooKeeper's ZKTrustManager allows attackers with a valid certificate trusted by t
Netty is an open-source, asynchronous event-driven network application framework for rapid development of maintainable h
When using IPAuthenticationProvider in ZooKeeper Admin Server there is a possibility of Authentication Bypass by Spoofin
Authorization Bypass Through User-Controlled Key vulnerability in Apache ZooKeeper. Rated critical severity (CVSS 9.1),
Unauthenticated remote clients can discover the names of ACL-restricted znodes in Apache ZooKeeper 3.8.0 through 3.8.6 a
Improper certificate hostname validation in Apache ZooKeeper's quorum TLS path allows a CA-trusted peer certificate whos
Apache ZooKeeper 3.8.5 and 3.9.4 improperly log sensitive client configuration data at INFO level, allowing unauthentica
No authentication/authorization is enforced when a server attempts to join a quorum in Apache ZooKeeper before 3.4.10, a
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),
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
EUVD-2026-80332
NVD
CVE.org
EPSS
VulDB
Exploit-DB