oss-sec mailing list archives

CVE-2026-34480: Apache Log4j Core: Silent log event loss in XmlLayout due to unescaped XML 1.0 forbidden characters


From: Piotr Karwasz <pkarwasz () apache org>
Date: Fri, 10 Apr 2026 13:41:26 +0000

Severity: moderate 

Affected versions:

- Apache Log4j Core (org.apache.logging.log4j:log4j-core) 2.0-alpha1 before 2.25.4
- Apache Log4j Core (org.apache.logging.log4j:log4j-core) 3.0.0-alpha1 through 3.0.0-beta3

Description:

Apache Log4j Core's  XmlLayout https://logging.apache.org/log4j/2.x/manual/layouts.html#XmlLayout , in versions up to 
and including 2.25.3, fails to sanitize characters forbidden by the  XML 1.0 specification 
https://www.w3.org/TR/xml/#charsets  producing invalid XML output whenever a log message or MDC value contains such 
characters.

The impact depends on the StAX implementation in use:

  *  JRE built-in StAX: Forbidden characters are silently written to the output, producing malformed XML. Conforming 
parsers must reject such documents with a fatal error, which may cause downstream log-processing systems to drop the 
affected records.
  *  Alternative StAX implementations (e.g.,  Woodstox https://github.com/FasterXML/woodstox , a transitive dependency 
of the Jackson XML Dataformat module): An exception is thrown during the logging call, and the log event is never 
delivered to its intended appender, only to Log4j's internal status logger.


Users are advised to upgrade to Apache Log4j Core 2.25.4, which corrects this issue by sanitizing forbidden characters 
before XML output.

Credit:

Ap4sh (Samy Medjahed) and Ethicxz (Eliott Laurie) (original reporters) (finder)
jabaltarik1 (independently) (finder)

References:

https://github.com/apache/logging-log4j2/pull/4077
https://logging.apache.org/security.html#CVE-2026-34480
https://logging.apache.org/cyclonedx/vdr.xml
https://logging.apache.org/log4j/2.x/manual/layouts.html#XmlLayout
https://logging.apache.org/
https://www.cve.org/CVERecord?id=CVE-2026-34480

Timeline:

2026-02-16: Vulnerability reported by Ap4sh and ethicxz
2026-03-10: Candidate patch shared internally by Piotr P. Karwasz
2026-03-15: Independent report received from jabaltarik1
2026-03-24: Fix shared publicly by Piotr P. Karwasz as pull request #4077
2026-03-25: Fix verified by reporter
2026-03-28: Log4j 2.25.4 released


Current thread: