{"api_version":"1","generated_at":"2026-09-16T10:53:06+00:00","cve":"CVE-2026-84439","urls":{"html":"https://cve.report/CVE-2026-84439","api":"https://cve.report/api/cve/CVE-2026-84439.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-84439","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-84439"},"summary":{"title":"Apache ZooKeeper: Audit log injection via unsanitized output from multiple sources","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.\n\nA 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.\n\nThis issue affects Apache ZooKeeper: from 3.9.0 through 3.9.5, from 3.8.0 through 3.8.6.\n\nUsers are recommended to upgrade to version 3.9.6 or 3.8.7, which fixes the issue.","state":"PUBLISHED","assigner":"apache","published_at":"2026-09-16 10:16:53","updated_at":"2026-09-16 10:16:53"},"problem_types":["CWE-117","CWE-117 CWE-117 Improper output neutralization for logs"],"metrics":[],"references":[{"url":"https://lists.apache.org/thread/b7qnjvqjh393l0j07tmnb5ggg40sx3m6","name":"https://lists.apache.org/thread/b7qnjvqjh393l0j07tmnb5ggg40sx3m6","refsource":"security@apache.org","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"http://www.openwall.com/lists/oss-security/2026/09/15/6","name":"http://www.openwall.com/lists/oss-security/2026/09/15/6","refsource":"ADP","tags":[]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-84439","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-84439","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Apache Software Foundation","product":"Apache ZooKeeper","version":"affected 3.9.0 3.9.5 maven","platforms":[]},{"source":"CNA","vendor":"Apache Software Foundation","product":"Apache ZooKeeper","version":"affected 3.8.0 3.8.6 maven","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[{"source":"CNA","value":"Youlong Chen Institute of Computing Technology <chenyoulong20g@ict.ac.cn>","lang":"en"}],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"providerMetadata":{"dateUpdated":"2026-09-16T10:12:00.087Z","orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE"},"references":[{"url":"http://www.openwall.com/lists/oss-security/2026/09/15/6"}],"title":"CVE Program Container"}],"cna":{"affected":[{"collectionURL":"https://repo.maven.apache.org/maven2","defaultStatus":"unaffected","packageName":"org.apache.zookeeper:zookeeper","packageURL":"pkg:maven/org.apache.zookeeper/zookeeper","product":"Apache ZooKeeper","vendor":"Apache Software Foundation","versions":[{"lessThanOrEqual":"3.9.5","status":"affected","version":"3.9.0","versionType":"maven"},{"lessThanOrEqual":"3.8.6","status":"affected","version":"3.8.0","versionType":"maven"}]}],"credits":[{"lang":"en","type":"reporter","value":"Youlong Chen Institute of Computing Technology <chenyoulong20g@ict.ac.cn>"}],"descriptions":[{"lang":"en","supportingMedia":[{"base64":false,"type":"text/html","value":"<p>When audit logging is enabled (<code>zookeeper.audit.enable=true</code>), an unauthenticated attacker can inject arbitrary fields into Apache ZooKeeper's audit log by sending a digest authentication request with tab characters (<code>\\t</code>) embedded in the username. Because the audit log uses tab-separated&nbsp;<code>key=value</code>&nbsp;format, the injected tabs are parsed as legitimate field separators, allowing the attacker to spoof audit results (e.g., injecting&nbsp;<code>result=success</code>), forge operation types, and corrupt forensic evidence.<br><span><br>A log injection vulnerability in Apache ZooKeeper allows a client that can call&nbsp;</span><code>setACL</code><span>&nbsp;</span><span>to inject forged key-value fields into</span><span>&nbsp;</span><code>zookeeper_audit.log</code><span>. When audit logging is enabled, the server serializes attacker-controlled digest ACL ids into the</span><span>&nbsp;</span><code>acl=</code><span>&nbsp;</span><span>audit field without escaping tab characters. Because audit events are emitted as tab-separated</span><span>&nbsp;</span><code>key=value</code><span>&nbsp;</span><span>records, a crafted ACL id can make one successful</span><span>&nbsp;</span><code>setAcl</code><span>&nbsp;</span><span>event appear to contain forged fields such as</span><span>&nbsp;</span><code>operation=delete</code><span>&nbsp;</span><span>and</span><span>&nbsp;</span><code>znode=/forged</code><span>. This undermines the integrity of downstream audit parsing, alerting, and incident response.</span><span><br></span><span><br>This issue affects Apache ZooKeeper: from 3.9.0 through 3.9.5, from 3.8.0 through 3.8.6.<br></span><span><br>Users are recommended to upgrade to version 3.9.6 or 3.8.7, which fixes the issue.</span></p>"}],"value":"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.\n\nA 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.\n\nThis issue affects Apache ZooKeeper: from 3.9.0 through 3.9.5, from 3.8.0 through 3.8.6.\n\nUsers are recommended to upgrade to version 3.9.6 or 3.8.7, which fixes the issue."}],"metrics":[{"other":{"content":{"text":"important"},"type":"Textual description of severity"},"scenarios":[{"lang":"en","value":"GENERAL"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-117","description":"CWE-117 Improper output neutralization for logs","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-09-16T09:27:46.439Z","orgId":"f0158376-9dc2-43b6-827c-5f631a4d8d09","shortName":"apache"},"references":[{"tags":["vendor-advisory"],"url":"https://lists.apache.org/thread/b7qnjvqjh393l0j07tmnb5ggg40sx3m6"}],"source":{"discovery":"UNKNOWN"},"title":"Apache ZooKeeper: Audit log injection via unsanitized output from multiple sources","x_generator":{"engine":"Vulnogram 1.0.3"}}},"cveMetadata":{"assignerOrgId":"f0158376-9dc2-43b6-827c-5f631a4d8d09","assignerShortName":"apache","cveId":"CVE-2026-84439","datePublished":"2026-09-16T09:27:46.439Z","dateReserved":"2026-09-01T19:22:00.838Z","dateUpdated":"2026-09-16T10:12:00.087Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-16 10:16:53","lastModifiedDate":"2026-09-16 10:16:53","problem_types":["CWE-117","CWE-117 CWE-117 Improper output neutralization for logs"],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"84439","Ordinal":"1","Title":"Apache ZooKeeper: Audit log injection via unsanitized output fro","CVE":"CVE-2026-84439","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"84439","Ordinal":"1","NoteData":"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.\n\nA 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.\n\nThis issue affects Apache ZooKeeper: from 3.9.0 through 3.9.5, from 3.8.0 through 3.8.6.\n\nUsers are recommended to upgrade to version 3.9.6 or 3.8.7, which fixes the issue.","Type":"Description","Title":"Apache ZooKeeper: Audit log injection via unsanitized output fro"}]}}}