CVE-2026-34480Apache Log4j Core 2.25.3及之前版本中的XmlLayout组件存在安全漏洞。该漏洞源于未能对XML 1.0规范中禁止的字符进行清理。当日志消息或MDC值包含此类字符时,会产生无效的XML输出。根据使用的StAX实现不同,影响包括:JRE内置StAX会静默写入非法字符,导致格式错误的XML,可能被下游系统拒绝;Woodstox等其他实现会抛出异常,导致日志事件丢失。攻击者可利用此漏洞破坏日志记录的完整性或可用性。
该漏洞位于Apache Log4j Core的XmlLayout类中,其根本原因是缺乏对输出内容的严格校验。XML 1.0规范明确禁止某些控制字符(如0x00-0x08, 0x0B, 0x0C, 0x0E-0x1F等)出现在XML文档中。Log4j在处理日志事件时,直接将日志内容或MDC(Mapped Diagnostic Context)值写入XML输出流,而未对这些字符进行转义或过滤。
当使用JRE内置的StAX实现时,非法字符会被直接写入输出流。生成的XML文档违反语法规范,合规的XML解析器在读取时会抛出致命错误并拒绝处理,导致日志处理系统中断或丢弃日志记录,造成日志完整性受损。
当使用Woodstox等第三方StAX实现时,这些库对XML合规性要求更严格,会在写入非法字符时立即抛出异常。这会导致Log4j的日志记录流程中断,日志事件无法发送到目标Appender,仅被内部状态记录器捕获,从而造成日志丢失,影响系统的可审计性。攻击者可通过控制输入数据(如User-Agent、请求参数等)注入非法字符来触发此漏洞。