臥槽!Log4j2 再爆雷,Log4j v2.17.0 橫空出世。。。
點擊關注公眾號,Java干貨及時送達
Log4j2 再爆雷
Log4j2 這是沒完沒了了,棧長以為《玩大了!Log4j 2.x 再爆雷。。。》 Log4j 2.16.0 是最終終結版本了,沒想到才過多久又爆雷了:

前兩天棧長還說 Log4j 2.16.0 是最安全的版本,沒想到這么快就又打臉了,Log4j 2.17.0 橫空出世。。。

又來了。。Log4j2 這是中了新冠的毒?
這次又爆出來新的 DOS 拒絕服務攻擊漏洞。。
如果你想關注和學習最新、最主流的 Java 技術,可以持續(xù)關注公眾號Java技術棧,公眾號第一時間推送。
安全漏洞:CVE-2021-45105
漏洞摘要
Log4j 團隊又獲悉了一個重要的安全漏洞 CVE-2021-45105:
| CVE-2021-45105 | 拒絕服務攻擊漏洞 |
|---|---|
| 安全等級 | 高 |
| 影響版本 | Log4j2 2.0-alpha1 到 2.16.0 |
該漏洞已在支持 Java 8+ 版本的 Log4j 2.17.0 中得到解決,請盡快升級。
漏洞詳情
因沒有防止自引用 lookups 的不受控制的遞歸,當日志配置使用帶有上下文 Lookup 的非默認模式,例如:
$${ctx:loginId}
此時,攻擊者可以制作包含遞歸查找的惡意輸入數據,導致 StackOverflowError 錯誤而終止進程,這也就是 DOS(Denial of Service)拒絕服務攻擊。
從 Log4j 2.17.0 版本開始,只有配置中的 lookup 字符串才允許遞歸擴展,另外,在任何其他用法中,僅解析最頂級的 lookup,不解析任何嵌套的 lookups。
解決方案
1、升級版本
立馬升級到最新版本:Log4j 2.17.0
最新正式版本下載:
https://logging.apache.org/log4j/2.x/download.html
最新 Maven 依賴:
????org.apache.logging.log4j
????log4j-core
????2.17.0
spring-boot-starter-log4j2 尚未更新,可以先覆蓋其內置版本:
??2.17.0
Spring Boot 基礎就不介紹了,推薦下這個實戰(zhàn)教程:
https://github.com/javastacks/spring-boot-best-practice
另外,Spring Boot 也在跟進此漏洞,界時新版本可以連帶解決,等新版本發(fā)布,棧長再給大家解讀,公眾號Java技術棧第一時間推送,不要走開哦。
2、臨時解決
如果你不想升級版本,可以考慮使用以下 2 種臨時解決方案:
1)在 PatternLayout 日志配置中,替換上下文 Lookups 中的 ${ctx:loginId} 或者 $${ctx:loginId} 為線程上下文映射模式(%X, %mdc, or %MDC)。
2)或者,刪除對上下文 Lookups 中對 ${ctx:loginId} or $${ctx:loginId} 的引用,它們一般來自應用程序外部,如 HTTP Header 或用戶輸入。
總結
Log4j2 最近是魔怔了??
一直在解決漏洞,連續(xù)發(fā)版,從最開始的 Log4j 2.15.0 到現在最新 2.17.0,大大小小的版本已經發(fā)了 10 個了,影響的周期已經接近兩周了,目前還沒看到收尾的跡象。。
這次應該是爆出來的第 4 個漏洞了:
CVE-2021-45105(拒絕服務攻擊漏洞,最新?。?/strong> CVE-2021-45046(遠程代碼執(zhí)行漏洞) CVE-2021-44228(遠程代碼執(zhí)行漏洞) 信息泄漏漏洞(安全公司 Praetorian 發(fā)現)
后面 3 個在 Log4j 2.16.0 中已經得到解決,最新的請升級 2.17.0?。?!
這是不是最后一次版本不得而知,總之這個版本是必須升級的,或檢查配置,使用臨時解決方案,后續(xù)進展棧長也會第一時間跟進,關注公眾號Java技術棧,公眾號第一時間推送。
這也不能怪 Log4j2,詳細可閱讀:
所以,用開源就要接受開源可能帶來的影響,也不能責備開源人,都是成年人了,用不用是自己的選擇,哪款產品沒有漏洞呢?哪怕是商用產品。
版權聲明: 本文系公眾號 "Java技術棧" 原創(chuàng),原創(chuàng)實屬不易,轉載、引用本文內容請注明出處,抄襲者一律舉報+投訴,并保留追究其法律責任的權利。

關注Java技術??锤喔韶?/strong>

