Description
When audit logging is enabled (zookeeper.audit.enable=true), an unauthenticated attacker can inject arbitrary fields into Apache ZooKeeper's audit log by sending a digest authentication request with tab characters (\t) embedded in the username. Because the audit log uses tab-separated key=value format, the injected tabs are parsed as legitimate field separators, allowing the attacker to spoof audit results (e.g., injecting result=success), forge operation types, and corrupt forensic evidence.

A log injection vulnerability in Apache ZooKeeper allows a client that can call setACL to inject forged key-value fields into zookeeper_audit.log. When audit logging is enabled, the server serializes attacker-controlled digest ACL ids into the acl= audit field without escaping tab characters. Because audit events are emitted as tab-separated key=value records, a crafted ACL id can make one successful setAcl event appear to contain forged fields such as operation=delete and znode=/forged. This undermines the integrity of downstream audit parsing, alerting, and incident response.

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.
Published: 2026-09-16
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Audit Log Forgery
Action: Immediate Patch
AI Analysis

Impact

An unauthenticated attacker can inject arbitrary tab‑separated key=value fields into ZooKeeper’s audit log when audit logging is enabled, which subverts the integrity of audit data and can create forged operation records such as result=success or operation=delete. The flaw arises because the server does not sanitize tab characters in the ACL identifier, allowing an attacker to craft a setACL request that produces audit entries with forged fields. This vulnerability (CWE‑117) undermines forensic evidence and downstream alerting mechanisms.

Affected Systems

The flaw impacts Apache Software Foundation's Apache ZooKeeper versions 3.8.0 through 3.8.6 and 3.9.0 through 3.9.5. Users should update to the latest released version, 3.9.6 or 3.8.7, which removes the insecure handling of tab characters in audit log entries.

Risk and Exploitability

The vulnerability is exploitable by any client with permission to perform a setACL operation and requires that audit logging be enabled. An attacker does not need prior authentication, and the attack vector is a network request to a ZooKeeper server. The EPSS score of < 1% indicates a very low probability of exploitation, while the vulnerability is not listed in CISA KEV. Nonetheless, the potential to fabricate audit data presents a high integrity risk, especially for environments that rely on audit logs for compliance or incident response.

Generated by OpenCVE AI on September 16, 2026 at 14:46 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Apache ZooKeeper to version 3.9.6 or 3.8.7 or later to eliminate the unescaped tab handling flaw.
  • Disable audit logging if it is not required by setting `zookeeper.audit.enable=false`, thereby preventing the vulnerability from affecting logs altogether.
  • Restrict client authorization so that only trusted clients can execute setACL requests, reducing the attacker’s ability to inject forged log entries.
  • Monitor audit logs for unexpected field patterns such as duplicated tab separators or anomalous operation types, and investigate any such anomalies promptly.

Generated by OpenCVE AI on September 16, 2026 at 14:46 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 16 Sep 2026 12:30:00 +0000

Type Values Removed Values Added
First Time appeared Apache
Apache zookeeper
Vendors & Products Apache
Apache zookeeper

Wed, 16 Sep 2026 11:30:00 +0000

Type Values Removed Values Added
References

Wed, 16 Sep 2026 09:45:00 +0000

Type Values Removed Values Added
Description When audit logging is enabled (zookeeper.audit.enable=true), an unauthenticated attacker can inject arbitrary fields into Apache ZooKeeper's audit log by sending a digest authentication request with tab characters (\t) embedded in the username. Because the audit log uses tab-separated key=value format, the injected tabs are parsed as legitimate field separators, allowing the attacker to spoof audit results (e.g., injecting result=success), forge operation types, and corrupt forensic evidence. A log injection vulnerability in Apache ZooKeeper allows a client that can call setACL to inject forged key-value fields into zookeeper_audit.log. When audit logging is enabled, the server serializes attacker-controlled digest ACL ids into the acl= audit field without escaping tab characters. Because audit events are emitted as tab-separated key=value records, a crafted ACL id can make one successful setAcl event appear to contain forged fields such as operation=delete and znode=/forged. This undermines the integrity of downstream audit parsing, alerting, and incident response. 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.
Title Apache ZooKeeper: Audit log injection via unsanitized output from multiple sources
Weaknesses CWE-117
References

Subscriptions

Apache Zookeeper
cve-icon MITRE

Status: PUBLISHED

Assigner: apache

Published:

Updated: 2026-09-16T10:12:00.087Z

Reserved: 2026-09-01T19:22:00.838Z

Link: CVE-2026-84439

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-16T10:16:53.433

Modified: 2026-09-16T19:08:00.110

Link: CVE-2026-84439

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-16T15:00:07Z

Weaknesses
  • CWE-117

    Improper Output Neutralization for Logs