背景
继前天正式公布的 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/lo…
事件工夫线
[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 弹架构』回复“Spring”可获取残缺源码。
本文为“Tom 弹架构”原创,转载请注明出处。技术在于分享,我分享我高兴!如果您有任何倡议也可留言评论或私信,您的反对是我保持创作的能源。关注微信公众号『Tom 弹架构』可获取更多技术干货!
原创不易,保持很酷,都看到这里了,小伙伴记得点赞、珍藏、在看,一键三连加关注!如果你感觉内容太干,能够分享转发给敌人滋润滋润!