背景

这几天为了应对《突发!Apache Log4j2 报核弹级漏洞。。赶紧修复!!》,Log4j2 连续发布了两个 RC(Release Candidate)候选版本。

在第一次的 RC1 候选版本中,Log4j2 还存在漏洞绕过风险,官方随后又发布了 RC2,现在终于彻底解决了,2.15.0 版本转正,正式发布:

有没有被折腾过两次的?

Log4j 2.15.0 正式版来了,可真正用于生产环境,所以,现在你可能还要再折腾一次。。。

解决漏洞:CVE-2021-44228

漏洞原因:

Log4j2 中提供了Lookups 机制,用于添加一些特殊值到日志中,在 Lookups 机制中,由于 JNDI 功能没有对名称解析做限制,而某些协议是不安全的,可以允许远程代码执行,从而导致核弹级漏洞。

修复内容:

1、Log4j 2.15.0+ 现在默认将协议限制为仅 java、ldap 和 ldaps,并将 ldap 协议做访问限制了,默认仅允许访问本地服务器上的 Java 原始对象。

2、Log4j 2.15.0+ 现在默认禁用 Lookups 功能,虽然 Log4j 2.x 没有完全废除这项功能,但强烈建议大家不要启用它。

新特性

除了解决漏洞:CVE-2021-44228,Log4j 2.15.0 还有以下 3 个新特性:

  • 支持仲裁器,可以有条件地启用 inclusion 或者 exclusion 日志配置部分;
  • 支持 Jakarta EE 9;
  • 大量性能提升;

下载升级

最新正式版本下载:

https://logging.apache.org/log4j/2.x/download.html

最新 Maven 依赖:

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

spring-boot-starter-log4j2 尚未更新,可以先覆盖其内置版本:

<properties>
  <log4j2.version>2.15.0</log4j2.version>
</properties>

或者也不用升级 jar 包,先使用官方的解决参数先解决,参考:《突发!Apache Log4j2 报核弹级漏洞。。赶紧修复!!》,等 Spring Boot 发布新版本再更新即可。

Spring Boot 基础就不介绍了,推荐下这个实战教程:

https://github.com/javastacks/spring-boot-best-practice

另外,Spring Boot 也跟进此漏洞:

Spring Boot v2.5.8 & v2.6.2 将采用 Log4J v2.15.0 版本,界时可以解决此漏洞,等新版本发布,预计在 2021/12/23,栈长再给大家解读,公众号Java技术栈第一时间推送,不要走开哦。

总结

Log4j 2.15.0 转正了,发布正式版了,解决了 CVE-2021-44228 漏洞,还有 3 个新特性,如果你们已经升级解决了,不纠结是否正式版本,可以忽略此版本,不然你还要再折腾一次。。

如果你们用的 Spring Boot,可以等这个月 23 号的新版本,不过为了解决这个漏洞升级到最新的 Spring Boot 版本,这个值得大家商榷,或许不是大部分人的最佳选择。

好了,今天的分享就到这里了,后面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一时间推送,我也将主流 Java 面试题和参考答案都整理好了,在公众号后台回复关键字 “面试” 进行刷题。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注