Log4j2又爆雷!2.16.0存在DOS風險,升級2.17.0可解決

  • 2021 年 12 月 20 日
  • 筆記

本以為,經過上周的2.16.0版本升級,Log4j2的漏洞修復工作,大家基本都要告一段落了。

萬萬沒想到,就在周末,Log4j官方又發佈了新版本:2.17.0

file

該版本主要修復安全漏洞:CVE-2021-45105

file

影響版本:2.0-alpha1 至 2.16.0(1.x用戶繼續忽略)

該漏洞只有當日誌配置使用帶有Context Lookups的非默認 Pattern Layout(例如$${ctx:loginId})時,攻擊者可以通過構造包含遞歸查找的惡意輸入數據,觸發無限循環,導致 StackOverflowError,最終進程崩潰。

這次漏洞受影響的只有log4j-core,僅使用log4j-api的程序不需要擔心。所以,大家可以通過升級log4j-core來修復該漏洞的

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.17.0</version>
</dependency>

當然,如果你是Spring Boot影響,按照之前一行配置搞定Spring Boot項目的 log4j2 核彈漏洞!分享的方法可以更方便的升級。如果您正在學習Spring Boot,那麼推薦一個連載多年還在繼續更新的免費教程

如果目前還不方便升級版本的話,也可以採用下面的兩種方法來緩解此漏洞:

  • 在日誌配置的 PatternLayout 中,用 %X、%mdc 或 %MDC 來替換 ${ctx:loginId} 或$${ctx:loginId} 等Context Lookups
  • 在使用外部數據(HTTP Header或用戶輸入等)的地方,刪除對Context Lookups的引用(如 ${ctx:loginId} 或 $${ctx:loginId} )

好了,不多說了,大家抓緊自查下,做好必要的防護措施,爭取早點睡個好覺!

歡迎關注我的公眾號:程序猿DD,分享外面看不到的乾貨與思考!