DescriptionInformation disclosure in persistent watchers handling in Apache ZooKeeper due to missing ACL check. It allows an attacker to monitor child znodes by attaching a persistent watcher (addWatch command) to a parent which the attacker has already access to. ZooKeeper server doesn't do ACL check when the persistent watcher is triggered and as a consequence, the full path of znodes that a watch event gets triggered upon is exposed to the owner of the watcher. 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.2, 3.8.4 which fixes the issue.
SourceCVE (at NVD; CERT, LWN, oss-sec, fulldisc, Red Hat, Ubuntu, Gentoo, SUSE bugzilla/CVE, GitHub advisories/code/issues, web search, more)
Debian Bugs1066947

Vulnerable and fixed packages

The table below lists information on source packages.

Source PackageReleaseVersionStatus
zookeeper (PTS)buster3.4.13-2vulnerable
buster (security)3.4.13-2+deb10u1vulnerable
bullseye (security), bullseye3.4.13-6+deb11u1vulnerable
bookworm, bookworm (security)3.8.0-11+deb12u1vulnerable
trixie, sid3.9.2-1fixed

The information below is based on the following data on fixed versions.

PackageTypeReleaseFixed VersionUrgencyOriginDebian Bugs


[bookworm] - zookeeper <no-dsa> (Minor issue)
[bullseye] - zookeeper <no-dsa> (Minor issue)
Fixed by: (release-3.8.4-0)
Fixed by: (release-3.9.2-0)
Persistent (and p-recursive) watches were introduced by ZOOKEEPER-1416, which only exists in 3.6+.
However, classical watches are used (<< 3.6), it seems that to trigger for nodes whose names are not
known in advance is not possible. Nevertheless classical watch leaks some information.

Search for package or bug name: Reporting problems