CVE-2023-44981

9.1 CRITICAL

📋 TL;DR

This CVE describes an authorization bypass vulnerability in Apache ZooKeeper when SASL Quorum Peer authentication is enabled. An attacker can join the cluster without proper authentication by omitting the instance part in their SASL authentication ID, allowing them to propagate malicious changes to the leader and gain full read-write access to the data tree. Only ZooKeeper deployments with quorum.auth.enableSasl=true are affected.

💻 Affected Systems

Products:
  • Apache ZooKeeper
Versions: All versions before 3.9.1, 3.8.3, and 3.7.2
Operating Systems: All operating systems running ZooKeeper
Default Config Vulnerable: ✅ No
Notes: Only vulnerable when quorum.auth.enableSasl=true is configured. This is NOT the default setting.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete cluster compromise where an attacker gains full read-write access to the ZooKeeper data tree, allowing data manipulation, service disruption, and potential lateral movement to connected systems.

🟠

Likely Case

Unauthorized cluster node joins and propagates counterfeit configuration changes, leading to data corruption, service disruption, or privilege escalation within the ZooKeeper-managed ecosystem.

🟢

If Mitigated

Limited impact due to network segmentation and proper authentication controls preventing unauthorized cluster access.

🌐 Internet-Facing: MEDIUM
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires network access to ZooKeeper quorum ports and knowledge of the cluster configuration. The vulnerability is straightforward to exploit once these conditions are met.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.9.1, 3.8.3, or 3.7.2

Vendor Advisory: https://lists.apache.org/thread/wf0yrk84dg1942z1o74kd8nycg6pgm5b

Restart Required: Yes

Instructions:

1. Download the patched version from Apache ZooKeeper website. 2. Stop ZooKeeper service. 3. Backup configuration and data. 4. Install the patched version. 5. Restart ZooKeeper service. 6. Verify cluster health and authentication.

🔧 Temporary Workarounds

Network Segmentation

linux

Restrict access to ZooKeeper quorum ports using firewall rules to only allow trusted cluster members.

# Example iptables rule: iptables -A INPUT -p tcp --dport 2888:3888 -s trusted_ip -j ACCEPT
# Example iptables rule: iptables -A INPUT -p tcp --dport 2888:3888 -j DROP

🧯 If You Can't Patch

  • Disable SASL Quorum Peer authentication by setting quorum.auth.enableSasl=false if not required for your deployment.
  • Implement strict network access controls to limit ZooKeeper quorum communication to only authorized hosts using firewall rules.

🔍 How to Verify

Check if Vulnerable:

Check if quorum.auth.enableSasl=true is set in zoo.cfg configuration file and ZooKeeper version is below 3.9.1, 3.8.3, or 3.7.2.

Check Version:

./zkServer.sh version (Linux) or zkServer.cmd version (Windows)

Verify Fix Applied:

Verify ZooKeeper version is 3.9.1, 3.8.3, or 3.7.2 or higher using version check command and confirm quorum authentication is functioning properly.

📡 Detection & Monitoring

Log Indicators:

  • Unexpected authentication attempts without instance part in SASL ID
  • Unauthorized nodes attempting to join cluster
  • Authentication failures or bypass events in ZooKeeper logs

Network Indicators:

  • Unexpected connections to ZooKeeper quorum ports (2888, 3888)
  • Network traffic from unauthorized IPs to cluster communication ports

SIEM Query:

source="zookeeper.log" AND ("auth" OR "authentication") AND ("bypass" OR "failed" OR "invalid")

🔗 References

📤 Share & Export