背景
继前天正式发布的2.15.0之后,Apache log4j 2 团队宣布 Log4j 2.16.0 发布!
由于SLF4J适配兼容性的中断,Log4j 现在发布两个版本的SLF4J to Log4j的适配器。log4j-slf4j-impl对应 SLF4J 1.7.x 及更早版本;log4j-slf4j18-impl对应SLF4J 1.8.x 及更高版本一起使用。SLF4J-2.0.0 alpha 版本目前还不完全支持。
强烈推荐升级2.16.0。
修正错误
1、LOG4J2-3208:默认禁用 JNDI。需要 log4j2.enableJndi设置为 true 以允许 JNDI。无论是Log4j2还是其它使用了JNDI的Java类库中,在不受保护的上下文中使用JNDI都具有一个很大的问题安全风险。
2、LOG4J2-3211:完全删除对Message Lookups的支持。目的是采取强化措施以防止 CVE-2021-44228,此举措不是修复 CVE-2021-44228所必须的。
受漏洞影响的Apache项目
另外Apache 安全团队在今天公布了受log4j CVE-2021-44228影响的Apache项目。可以根据下面列表进行排查:
项目 | 是否受到影响 | 解决方案 |
---|---|---|
Apache Archiva | 是 | 2.2.6正式发行版将解决这个问题 |
Apache Druid | 是 | 更新到0.22.1 |
Apache EventMesh | 是 | 暂无明确方案 |
Apache lceberg | 否 | |
Apache Flink | 是 | 暂无明确方案 |
Apache Fortress | 是 | 更新到2.0.7 |
Apache Geode | 是 | 更新到1.12.6,1.13.5,1.14.1 |
Apache Guacamole | 否 | |
Apache Hadoop | 否 | 使用log4j 1.x |
Apache Hive | 是 | 暂无明确方案 |
Apache Jena | 是 | 暂无明确方案 |
Apache JMeter | 是 | 暂无明确方案 |
Apache JSPWiki | 是 | 暂无明确方案 |
Apache Log4J1.2 | 存在类似漏洞 | 参考「CVE-2021-4104]漏洞,JMS调用JNDI北洞 |
Apache Log4J2.x | 是 | 更新到2.16.0 |
Apache Log4Net | 否 | |
Apache OFBiz | 是 | 更新到18.12.03 |
Apache Ozone | 是 | 更新到1.2.1 |
Apache skyWalking | 是 | 更新到8.9.1 |
Apache Solr | 是 | 更新到8.11.1 |
Apache Spark | 否 | 使用log4j 1.x |
Apache Struts | 是 | 暂无明确方案 |
Apache Tomcat | 否 | |
Apache TrafficControl | 是 | 暂无明确方案 |
Apache ZooKeeper | 否 | 使用log4j 1.x |
Apache Calcite Avatica | 是 | 更新到1.20.0 |
Apache CloudStack | 否 |
在 2.15.0 版本之前,Log4j 会在模式布局(Pattern Layout)中包含的消息或参数中自动解析 Lookups。这行为不再是默认值,必须通过指定启用%msg{lookup}。
Apache Log4j 2.16.0至少需要Java 8才能构建和运行。Log4j 2.12.1是最后一个支持Java 7的版本。Java 7不是Log4j团队的长期支持版本。
升级措施
本人在前几天紧急连载了关于此漏洞的修复教程: Apache Log4j任意代码执行漏洞安全风险升级修复教程 ,此方法依然有效。
如果你懒得看之前的文章,可以通过直接升级jar包的方式,加入如下依赖:
<properties>
<java.version>1.8</java.version>
<log4j2.version>2.16.0</log4j2.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
</dependencies>
如果你的是SpringBoot项目,只需修改版本号:
<properties>
<java.version>1.8</java.version>
<log4j2.version>2.16.0</log4j2.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
参考资料
有关Apache Log4j2的完整信息,包括有关如何提交错误报告、补丁或改进建议,请参阅Apache Apache Log4j2网站:
https://logging.apache.org/log4j/2.x/
事件时间线
[2021/12/14] Apache log4j 2 团队宣布 Log4j 2.16.0 发布
[2021/12/13] 官方发布正式发布2.15.0,Java日志库Log4j2注入漏洞复现
[2021/12/11] Spring Boot应对Log4j2注入漏洞官方指南
[2021/12/10] 知名Java日志组件Log4j2爆出严重0 day漏洞
本文为“Tom弹架构”原创,转载请注明出处。技术在于分享,我分享我快乐!