Cloudanix VulnDB

CVE-2024-23944

None

CVSS

—

EPSS

0.2%

Published

Mar 15, 2024

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in ZooKeeper lets someone who can watch one folder see the names of everything inside it even when they should not have permission, which could reveal private user or account details stored in those names.

Exploitation
Remote Authenticated
Attacker needs
Low Privilege
Complexity
Moderate
Impact
Data Exposure
Component
Network Service
Class
Information Disclosure
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Missing ACL enforcement when persistent watchers trigger on child znodes allows an authenticated client to receive full znode paths for nodes beneath a watched parent without authorization checks.

Why it matters to the business

Organizations running ZooKeeper may leak sensitive identifiers embedded in znode paths such as usernames or login IDs to any client that can attach a watcher to a parent node, increasing risk of reconnaissance or targeted attacks.

How an attack unfolds

An attacker who already possesses read access to a parent znode issues an addWatch command; the server later fires watch events for child znodes without performing ACL checks and delivers the complete child paths to the watcher owner.

How to fix it

Upgrade Apache ZooKeeper to 3.9.2 or 3.8.4; the fixes are present in commit e454e8c7283100c7caec6dcae2bc82aaecb63023 and later releases. Verify the running version after upgrade and restart the ensemble.

How to confirm the fix worked

Confirm the server reports version 3.9.2 or 3.8.4; attempt to attach a persistent watcher as a low-privilege client and verify that child paths under restricted parents are no longer delivered.

Typical attack path

  1. Obtain ZooKeeper client credentials with read access to a target parent znode
  2. Issue addWatch API call against the parent
  3. Wait for or trigger creation/deletion of child znodes
  4. Receive watch notifications containing full child paths

How to detect it

Search ZooKeeper server logs for repeated addWatch requests from the same client session followed by watch event deliveries; correlate with client IP or authenticated user to identify watchers attached to parents the user should not traverse.

What your security team should do

  • Schedule upgrade to 3.9.2 or 3.8.4 within the next maintenance window
  • Audit existing ACLs on znodes that may contain sensitive path segments
  • Enable ZooKeeper audit logging to capture addWatch operations
  • Review client connection logs for unexpected persistent watchers

The record

Information 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.

Affected packages

Ecosystem Package Introduced Fixed
Maven org.apache.zookeeper:zookeeper 3.6.0 No fix
Maven org.apache.zookeeper:zookeeper 3.8.0 3.8.4
Maven org.apache.zookeeper:zookeeper 3.9.0 3.9.2
Bitnami zookeeper 3.6.0 3.8.4
Bitnami zookeeper 3.9.0 3.9.2
Chainguard confluent-common-docker 0 7.6.9-r0
Chainguard confluent-common-docker-base 0 7.6.0-r20
Chainguard confluent-common-docker-ub 0 7.6.0-r20
Chainguard confluent-kafka 0 8.2.0.367-r0
Chainguard hive 0 4.0.1-r1
Chainguard hive-compat 0 4.0.1-r1
Chainguard kafka 0 3.7.0-r2
Chainguard kafka-bitnami-compat 0 3.7.0-r2
Chainguard kafka-jre-bcfips 0 3.7.1-r0
Chainguard solr 0 9.5.0-r2
Chainguard solr-oci-compat 0 9.5.0-r2
Chainguard spark-3.5 0 3.5.1-r3
Chainguard spark-3.5 0 3.5.7-r2
Chainguard spark-3.5-bitnami-compat 0 3.5.1-r3
Chainguard spark-3.5-compat 0 3.5.1-r3
Chainguard spark-3.5-minimal 0 3.5.1-r3
Chainguard spark-3.5-minimal-openjdk-11 0 3.5.1-r3
Chainguard spark-3.5-minimal-openjdk-17 0 3.5.1-r3
Chainguard spark-3.5-minimal-openjdk-8 0 3.5.1-r3
Chainguard spark-3.5-openjdk-11 0 3.5.1-r3
Chainguard spark-3.5-openjdk-17 0 3.5.1-r3
Chainguard spark-3.5-openjdk-8 0 3.5.1-r3
Chainguard spark-3.5-scala-2.12 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.12-iamguarded-compat 0 3.5.7-r2
Chainguard spark-3.5-scala-2.13 0 3.5.7-r2
Chainguard spark-3.5-scala-2.13-compat 0 3.5.7-r2
Chainguard tez 0 0.10.4-r6
Chainguard trino 0 443-r0
Chainguard trino-config 0 443-r0
Chainguard trino-oci-entrypoint 0 443-r0
Chainguard trino-plugin-accumulo 0 443-r0
Chainguard trino-plugin-ai-functions 0 443-r0
Chainguard trino-plugin-atop 0 443-r0
Chainguard trino-plugin-bigquery 0 443-r0
Chainguard trino-plugin-blackhole 0 443-r0
Chainguard trino-plugin-cassandra 0 443-r0
Chainguard trino-plugin-clickhouse 0 443-r0
Chainguard trino-plugin-delta-lake 0 443-r0
Chainguard trino-plugin-druid 0 443-r0
Chainguard trino-plugin-duckdb 0 443-r0
Chainguard trino-plugin-elasticsearch 0 443-r0
Chainguard trino-plugin-example-http 0 443-r0
Chainguard trino-plugin-exasol 0 443-r0
Chainguard trino-plugin-exchange-filesystem 0 443-r0
Chainguard trino-plugin-exchange-hdfs 0 443-r0
Chainguard trino-plugin-faker 0 443-r0
Chainguard trino-plugin-functions-python 0 443-r0
Chainguard trino-plugin-geospatial 0 443-r0
Chainguard trino-plugin-google-sheets 0 443-r0
Chainguard trino-plugin-hive 0 443-r0
Chainguard trino-plugin-http-event-listener 0 443-r0
Chainguard trino-plugin-http-server-event-listener 0 443-r0
Chainguard trino-plugin-hudi 0 443-r0
Chainguard trino-plugin-iceberg 0 443-r0
Chainguard trino-plugin-ignite 0 443-r0
Chainguard trino-plugin-jmx 0 443-r0
Chainguard trino-plugin-kafka 0 443-r0
Chainguard trino-plugin-kafka-event-listener 0 443-r0
Chainguard trino-plugin-kinesis 0 443-r0
Chainguard trino-plugin-kudu 0 443-r0
Chainguard trino-plugin-lakehouse 0 443-r0
Chainguard trino-plugin-ldap-group-provider 0 443-r0
Chainguard trino-plugin-local-file 0 443-r0
Chainguard trino-plugin-loki 0 443-r0
Chainguard trino-plugin-mariadb 0 443-r0
Chainguard trino-plugin-memory 0 443-r0
Chainguard trino-plugin-ml 0 443-r0
Chainguard trino-plugin-mongodb 0 443-r0
Chainguard trino-plugin-mysql 0 443-r0
Chainguard trino-plugin-mysql-event-listener 0 443-r0
Chainguard trino-plugin-opa 0 443-r0
Chainguard trino-plugin-openlineage 0 443-r0
Chainguard trino-plugin-opensearch 0 443-r0
Chainguard trino-plugin-oracle 0 443-r0
Chainguard trino-plugin-password-authenticators 0 443-r0
Chainguard trino-plugin-phoenix5 0 443-r0
Chainguard trino-plugin-pinot 0 443-r0
Chainguard trino-plugin-postgresql 0 443-r0
Chainguard trino-plugin-prometheus 0 443-r0
Chainguard trino-plugin-ranger 0 443-r0
Chainguard trino-plugin-raptor-legacy 0 443-r0
Chainguard trino-plugin-redis 0 443-r0
Chainguard trino-plugin-redshift 0 443-r0
Chainguard trino-plugin-resource-group-managers 0 443-r0
Chainguard trino-plugin-session-property-managers 0 443-r0
Chainguard trino-plugin-singlestore 0 443-r0
Chainguard trino-plugin-snowflake 0 443-r0
Chainguard trino-plugin-spooling-filesystem 0 443-r0
Chainguard trino-plugin-sqlserver 0 443-r0
Chainguard trino-plugin-teradata-functions 0 443-r0
Chainguard trino-plugin-thrift 0 443-r0
Chainguard trino-plugin-tpcds 0 443-r0
Chainguard trino-plugin-tpch 0 443-r0
Chainguard trino-plugin-vertica 0 443-r0
Debian:11 zookeeper 0 No fix
Debian:12 zookeeper 0 No fix
Debian:13 zookeeper 0 3.9.2-1
Ubuntu:20.04:LTS zookeeper 0 No fix
Ubuntu:22.04:LTS zookeeper 0 No fix
Ubuntu:24.04:LTS zookeeper 0 No fix
Ubuntu:24.10 zookeeper 0 No fix
Ubuntu:Pro:14.04:LTS zookeeper 0 No fix
Ubuntu:Pro:16.04:LTS zookeeper 0 No fix
Ubuntu:Pro:18.04:LTS zookeeper 0 No fix
Wolfi confluent-common-docker 0 7.6.9-r0
Wolfi confluent-common-docker-base 0 7.6.0-r20
Wolfi confluent-common-docker-ub 0 7.6.0-r20
Wolfi confluent-kafka 0 8.2.0.367-r0
Wolfi kafka 0 3.7.0-r2
Wolfi kafka-bitnami-compat 0 3.7.0-r2
Wolfi solr 0 9.5.0-r2
Wolfi solr-oci-compat 0 9.5.0-r2
Wolfi spark-3.5 0 3.5.1-r3
Wolfi spark-3.5 0 3.5.7-r2
Wolfi spark-3.5-bitnami-compat 0 3.5.1-r3
Wolfi spark-3.5-compat 0 3.5.1-r3
Wolfi spark-3.5-minimal 0 3.5.1-r3
Wolfi spark-3.5-minimal-openjdk-11 0 3.5.1-r3
Wolfi spark-3.5-minimal-openjdk-17 0 3.5.1-r3
Wolfi spark-3.5-minimal-openjdk-8 0 3.5.1-r3
Wolfi spark-3.5-openjdk-11 0 3.5.1-r3
Wolfi spark-3.5-openjdk-17 0 3.5.1-r3
Wolfi spark-3.5-openjdk-8 0 3.5.1-r3
Wolfi spark-3.5-scala-2.12 0 3.5.7-r2
Wolfi spark-3.5-scala-2.12-compat 0 3.5.7-r2
Wolfi spark-3.5-scala-2.12-iamguarded-compat 0 3.5.7-r2
Wolfi spark-3.5-scala-2.13 0 3.5.7-r2
Wolfi spark-3.5-scala-2.13-compat 0 3.5.7-r2
Wolfi tez 0 0.10.4-r6
Wolfi trino 0 443-r0
Wolfi trino-config 0 443-r0
Wolfi trino-oci-entrypoint 0 443-r0
Wolfi trino-plugin-accumulo 0 443-r0
Wolfi trino-plugin-ai-functions 0 443-r0
Wolfi trino-plugin-atop 0 443-r0
Wolfi trino-plugin-bigquery 0 443-r0
Wolfi trino-plugin-blackhole 0 443-r0
Wolfi trino-plugin-cassandra 0 443-r0
Wolfi trino-plugin-clickhouse 0 443-r0
Wolfi trino-plugin-delta-lake 0 443-r0
Wolfi trino-plugin-druid 0 443-r0
Wolfi trino-plugin-duckdb 0 443-r0
Wolfi trino-plugin-elasticsearch 0 443-r0
Wolfi trino-plugin-example-http 0 443-r0
Wolfi trino-plugin-exasol 0 443-r0
Wolfi trino-plugin-exchange-filesystem 0 443-r0
Wolfi trino-plugin-exchange-hdfs 0 443-r0
Wolfi trino-plugin-faker 0 443-r0
Wolfi trino-plugin-functions-python 0 443-r0
Wolfi trino-plugin-geospatial 0 443-r0
Wolfi trino-plugin-google-sheets 0 443-r0
Wolfi trino-plugin-hive 0 443-r0
Wolfi trino-plugin-http-event-listener 0 443-r0
Wolfi trino-plugin-http-server-event-listener 0 443-r0
Wolfi trino-plugin-hudi 0 443-r0
Wolfi trino-plugin-iceberg 0 443-r0
Wolfi trino-plugin-ignite 0 443-r0
Wolfi trino-plugin-jmx 0 443-r0
Wolfi trino-plugin-kafka 0 443-r0
Wolfi trino-plugin-kafka-event-listener 0 443-r0
Wolfi trino-plugin-kinesis 0 443-r0
Wolfi trino-plugin-kudu 0 443-r0
Wolfi trino-plugin-lakehouse 0 443-r0
Wolfi trino-plugin-ldap-group-provider 0 443-r0
Wolfi trino-plugin-local-file 0 443-r0
Wolfi trino-plugin-loki 0 443-r0
Wolfi trino-plugin-mariadb 0 443-r0
Wolfi trino-plugin-memory 0 443-r0
Wolfi trino-plugin-ml 0 443-r0
Wolfi trino-plugin-mongodb 0 443-r0
Wolfi trino-plugin-mysql 0 443-r0
Wolfi trino-plugin-mysql-event-listener 0 443-r0
Wolfi trino-plugin-opa 0 443-r0
Wolfi trino-plugin-openlineage 0 443-r0
Wolfi trino-plugin-opensearch 0 443-r0
Wolfi trino-plugin-oracle 0 443-r0
Wolfi trino-plugin-password-authenticators 0 443-r0
Wolfi trino-plugin-phoenix5 0 443-r0
Wolfi trino-plugin-pinot 0 443-r0
Wolfi trino-plugin-postgresql 0 443-r0
Wolfi trino-plugin-prometheus 0 443-r0
Wolfi trino-plugin-ranger 0 443-r0
Wolfi trino-plugin-raptor-legacy 0 443-r0
Wolfi trino-plugin-redis 0 443-r0
Wolfi trino-plugin-redshift 0 443-r0
Wolfi trino-plugin-resource-group-managers 0 443-r0
Wolfi trino-plugin-session-property-managers 0 443-r0
Wolfi trino-plugin-singlestore 0 443-r0
Wolfi trino-plugin-snowflake 0 443-r0
Wolfi trino-plugin-spooling-filesystem 0 443-r0
Wolfi trino-plugin-sqlserver 0 443-r0
Wolfi trino-plugin-teradata-functions 0 443-r0
Wolfi trino-plugin-thrift 0 443-r0
Wolfi trino-plugin-tpcds 0 443-r0

Related vulnerabilities