Bug 2535095 (CVE-2026-79993)

Summary: CVE-2026-79993 zookeeper: Apache ZooKeeper: Unauthorized znode deletion via missing ACL check
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security DevOps Team <prodsec-dev>
Status: NEW --- QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: unspecifiedCC: anujha, asoldano, ataylor, bbaranow, bmaxwell, bstansbe, ccranfor, chfoley, csuconic, dbruscin, dlofthou, ehugonne, fmariani, gmalinko, gtully, istudens, ivassile, iweiss, janstey, jpechane, jsherman, jturenov, jwon, kaycoth, kvanderr, mcarlett, mosmerov, msvehla, nwallace, pberan, pdelbell, pesilva, pjindal, pmackay, rgemmell, rgodfrey, rstancel, rstepani, swoodman, tbish, tcunning, thjenkin, tlavocat, vdosoudi, yfang, ytale
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in Apache ZooKeeper. The deleteContainer opcode is processed without verifying Access Control List (ACL) permissions. A remote, unauthenticated attacker with network access to the ZooKeeper client port can delete any empty persistent znode, including container and TTL nodes. This can lead to data integrity issues or denial of service.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2026-09-16 09:47:24 UTC
The `deleteContainer` opcode (0x14/20) is processed without verifying the caller's ACL permissions, allowing any authenticated client to delete specific znodes in the data tree regardless of the ACL restrictions on the znode or its parent. This opcode is considered internal-only and the official client doesn't have API for it, but a client that can open a plain TCP session on the ZooKeeper client port (2181 by default) - with NO authentication and NO ACL permissions - can delete any empty persistent znode (including regular persistent nodes, container nodes, and TTL nodes) by issuing the raw protocol OpCode deleteContainer (20). The deleteContainer request path completely skips both the session check and the DELETE ACL check that are enforced by the regular delete (OpCode 2) path. This is an authorization bypass / ACL enforcement bug.

This issue affects Apache ZooKeeper: from 3.9.0 through 3.9.5, from 3.8.0 through 3.8.6.

Users are recommended to upgrade to version 3.9.6 or 3.8.7, which fixes the issue.