背景
继前天正式公布的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弹架构 』可获取更多技术干货!
原创不易,保持很酷,都看到这里了,小伙伴记得点赞、珍藏、在看,一键三连加关注!如果你感觉内容太干,能够分享转发给敌人滋润滋润!