Java基础、中级、高级、架构面试资料

Apache Log4j 2.25.4 紧急发布,修复 5 个安全漏洞

JAVA herman 44浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
【腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

今天,闲来无事,逛了一下 Apache 的官网。突然发现了 Log4j 还在更新。

不止是再更新,还一次修复了 5 个漏洞。

这 5 个漏洞一下子吸引了我,所以接下来,我们一起来看看这次Apache Log4j 2.25.4 的紧急发布,到底到来了哪些改变。

根据官网上的公告可知,2026 年 3 月 25 日,Apache Log4j 团队发布了 2.25.4 版本。这不是一次普通的补丁更新,官方安全页面显示,该版本一口气修复了5 个 CVE 安全漏洞(CVE-2026-34477 至 CVE-2026-34481),涉及 XML 日志丢失、TLS 中间人攻击、日志注入等高危场景。如果你还在用 2.25.3 或更早版本,建议立即升级。

版本概览

为什么说,这次是“必须升级”呢?看看这次的版本概览,你可能就知道原因了。

Log4j 2.25.4 是一个补丁版本(Patch Release),主要聚焦下面这三类问题。

  1. 配置一致性修复:恢复文档与实际配置属性的对齐
  2. 格式化与净化问题:修复 XML 和 RFC5424 布局的字符转义缺陷
  3. 无效字符处理:改进对非标准值和非法字符的处理机制

但真正的重头戏在安全领域——该版本修复了 5 个 CVE 漏洞,其中多个可导致日志静默丢失中间人攻击等。

五大安全漏洞详解

文章配图参见 https://mp.weixin.qq.com/s/3Bwjwfa1G6aEHj1cK1SMmA

XML 布局的隐形杀手

重点涉及 CVE-2026-34480、CVE-2026-34479。

它们的风险等级为 Medium (CVSS 6.9)。影响的版本范围为 2.0-alpha1 至 2.25.3。

漏洞原因是XmlLayoutLog4j1XmlLayout 未能正确转义 XML 1.0 规范禁止的字符(如控制字符 \u0000-\u001F)。这会导致下面这两种后果。

  • 使用 JRE 内置 StAX:非法字符被静默写入,生成畸形 XML,下游解析器会直接丢弃这些日志记录
  • 使用 Woodstox 等第三方库:直接抛出异常,日志事件永远无法到达 Appender

这会导致,如果你的应用通过 MDC 记录用户输入,而攻击者提交了包含非法字符的内容,关键审计日志可能无声无息地消失

针对这类问题,官方给出的修复方案是升级到最新版本,因为最新的 2.25.4 版本将非法字符替换为 Unicode 替换字符(U+FFFD)。

CVE-2026-34478

这个漏洞,会对 Rfc5424Layout 的 CRLF 注入。

风险等级也为 Medium (CVSS 6.9),影响版本范围为 2.21.0 至 2.25.3。

这是一个“自己坑自己”的漏洞。在 2.21.0 重构 Rfc5424Layout 时,两个关键安全配置属性被静默重命名

原属性名问题后果
newLineEscape换行转义失效,TCP framing(RFC 6587)用户面临 CRLF 注入风险
useTlsMessageFormatTLS framing(RFC 5425)被降级为无 framing 的 TCP,且没有换行转义

指的注意的是,直接使用 SyslogAppender 的用户不受影响,因为 Appender 层的配置属性未被修改。只有手动配置 Rfc5424Layout 的流式 syslog 服务会中招。

CVE-2026-34477

CVE-2026-34477 这个漏洞会让你的 TLS 主机名验证形同虚设。

该漏洞对应的风险等级也为 Medium (CVSS 6.3)。其影响的版本范围是 2.12.0 至 2.25.3。

这是 CVE-2025-68161 的“修复不完整”版本。虽然 2.25.3 修复了通过系统属性 log4j2.sslVerifyHostName 启用主机名验证的问题,但通过 <Ssl> 元素的 verifyHostName 属性配置的方式始终被忽略。

触发该漏洞,需全部满足下面这 3 个攻击条件。

  • 使用 SMTP、Socket 或 Syslog Appender
  • 通过嵌套 <Ssl> 元素配置 TLS
  • 攻击者能出示受信任 CA 签发的证书

对我们的影响是,你以为开启了主机名验证,实际上并没有。攻击者可实施中间人攻击拦截日志流量。

CVE-2026-34481

CVE-2026-34481 这个漏洞是 JSON 中的非有限浮点数。

其风险等级也是 Medium (CVSS 6.3)。影响的版本范围是 2.14.0 至 2.25.3。

JsonTemplateLayout 在输出 NaNInfinity-Infinity 等非有限浮点数时,会生成违反 RFC 8259的非法 JSON。下游系统可能拒绝索引这些记录。

该漏洞的利用条件如下。

  • 使用 JsonTemplateLayout
  • 应用记录包含攻击者控制的浮点值的 MapMessage

功能性修复

除了 5 个安全漏洞之外,下面这些 Bug 也值得关注。

2.25.4 还修复了 10 个功能性问题。

Issue描述影响场景
#3975, #4014参数化日志中 null 额外参数不再触发警告大量使用 logger.info("User: {}", user) 且参数可能为 null 的应用
#4022, #4074恢复 Rfc5424Layout 文档中声明的参数名支持依赖官方文档配置 syslog 的运维人员
#3623, #4033Pattern Layout 渲染堆栈跟踪时考虑 Throwable#toString()自定义异常类的日志输出
#4058, #4060Loader 类成功加载资源时添加 DEBUG 日志排查类加载问题的开发者
#4061, #4075SslConfiguration 工厂方法对齐 2.12+ API,verifyHostname 属性被正确识别使用程序化配置 TLS 的应用
#4073修复 RFC5424 结构化数据参数名净化使用结构化数据(SD)字段的 syslog 场景
#4077-4080XML/JSON 布局的非法字符/非有限浮点数处理所有使用 XML/JSON 输出的应用

升级指南

只需要升级版本即可,改动不大。

Maven 配置

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.25.4</version>
</dependency>

Gradle 配置

implementation 'org.apache.logging.log4j:log4j-core:2.25.4'

升级检查清单

下面是官方列举的检查清单。

  • 检查是否直接使用 Rfc5424Layout(非通过 SyslogAppender
  • 检查是否使用 <Ssl verifyHostName="true"> 配置
  • 检查是否使用 XmlLayoutLog4j1XmlLayout
  • 检查是否使用 JsonTemplateLayout 记录浮点数
  • 验证升级后日志输出格式是否符合预期(特别是 XML 中的 U+FFFD 替换)

Log4j 的安全演进

下面我们说一下 Log4j 的安全演进。

从 2021 年的 Log4Shell(CVE-2021-44228)到如今的 2.25.4,Log4j 团队的安全响应机制已日趋成熟:

  1. 漏洞分级更精细:CVSS 4.0 评分体系下,此次漏洞均为 Medium 级别,避免了过度恐慌
  2. 修复更彻底:CVE-2026-34477 是对之前修复的补完,体现了持续跟进
  3. 文档与代码对齐:官方强调“权威配置属性列表”已更新至https://logging.apache.org/log4j/2.x/plugin-reference.html,避免配置漂移

值得注意的是,Log4j 1.x 的兼容桥(log4j-1.2-api)已被标记为废弃,将在 Log4j 3 中移除。还在维护老系统的开发者,是时候规划迁移了。

结语

Log4j 2.25.4 是一次安静但关键的更新。没有惊天动地的 RCE 漏洞,但 XML 日志静默丢失、TLS 验证失效等问题,在 production 环境中同样致命。建议所有使用 2.21.0 及以上版本的用户,在下次发版周期内优先安排升级。

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » Apache Log4j 2.25.4 紧急发布,修复 5 个安全漏洞