背景
繼前天正式發布的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彈架構”原創,轉載請注明出處。技術在於分享,我分享我快樂!
如果本文對您有幫助,歡迎關注和點贊;如果您有任何建議也可留言評論或私信,您的支持是我堅持創作的動力。
原創不易,堅持很酷,都看到這里了,小伙伴記得點贊、收藏、在看,一鍵三連加關注!如果你覺得內容太干,可以分享轉發給朋友滋潤滋潤!
