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