捅了Bug窩?Apache Log4j 出現第四個漏洞

文 | 羅奇奇
出品 | OSC開源社群(ID:oschina2013)
Apache Log4j 的2.0-alpha1 到 2.16.0版本存在新的漏洞 CVE-2021-45105 ,此漏洞評分 7.5 ,且在剛釋出的 Log4j 2.17.0 (Java 8) 中得到了修復。如果把安全公司 Praetorian 發現的第三個資訊洩露漏洞也算進去,這應該是Log4j 的第四個漏洞了。
前三個漏洞:
CVE-2021-44228、CVE-2021-45046 和 Log4Shell
漏洞詳情
Apache Log4j2 版本 2.0-alpha1 到 2.16.0 沒有防止自引用查詢的不受控制的遞迴。當日志配置使用帶有上下文查詢的非預設模式佈局(例如,$${ctx:loginId})時,控制執行緒上下文對映 (MDC) 輸入資料的攻擊者可以製作包含遞迴查詢的惡意輸入資料,導致 StackOverflowError 將終止程序。這也稱為 DOS(拒絕服務)攻擊。
緩解措施
從 2.17.0 版本(對於 Java 8)開始,只有配置中的查詢字串被遞迴擴充套件;在任何其他用法中,僅解析頂級查詢,不解析任何巢狀查詢。
在以前的版本中,可以透過確保您的日誌記錄配置執行以下操作來緩解此問題:
  • 在日誌記錄配置的 PatternLayout 中,用執行緒上下文對映模式(%X、%mdc 或 %MDC)替換 ${ctx:loginId} 或 $${ctx:loginId} 等上下文查詢。
  • 否則,在配置中,刪除對上下文查詢的引用,如 ${ctx:loginId} 或 $${ctx:loginId},它們源自應用程式外部的源,如 HTTP 標頭或使用者輸入。
Log4j 的漏洞有點像計算機世界的新冠,一波未平一波又起,還時不時出現一些變種...
延伸閱讀:

Apache Log4j 2.17.0 釋出,解決第三個 DoS 漏洞

END

覺得不錯,請點個在看

閱讀原文