log4jShell漏洞修復分析
by HaCo 20211215
LDAP
LIGHTWEIGHT DIRECTORY ACCESS Protocol
輕量級目錄訪問協議,是在20世紀90年代早期作為標準目錄協議進行開發的,它是目前最流行的目錄協議,與廠商、具體平臺無關,LDAP用統一的方式定義了如何訪問目錄服務中的內容,比如增加、修改、洗掉一個條目
JNDI:
JAVA NAMING AND Directory interface
java 命名目錄訪問介面:java 命名服務和目錄服務而提供的統一API,通過命名來訪問需要的資源,類似DNS服務,可通過 key-value的形式,
JNDI-LDAP關系
JNDI是Java中用于訪問LDAP的API,開發人員使用JNDI完成與LDAP服務器之間的通信,即用JNDI來訪問LDAP,而不需要和具體的目錄服務產品特性打交道,這樣通過LDAP、JNDI兩層抽象,使Java程式對目錄服務的訪問做到了平臺無關性,
發展:
- Apache Log4j 2.15.0 中針對 CVE-2021-44228 的修復在某些非默認配置中不完整,可能導致惡意資料資料導致DOS攻擊,Log4j 2.15.0 將 JNDI LDAP 查找限制為 localhost,
- 之前涉及配置的緩解措施(例如將系統屬性 log4j2.noFormatMsgLookup 設定為 true)并不能緩解此特定漏洞,
影響范圍
只有 log4j-core JAR 檔案受此漏洞影響,僅使用 log4j-api JAR 檔案而不使用 log4j-core JAR 檔案的應用程式不受此漏洞的影響,
2.0.x <= log4j <2.16.0 均受影響
目前緩解措施
- java7 升級到2.12.2
- java8 升級到2.16.0
- 洗掉 log4j-core jar 中洗掉 JndiLookup 類,會導致程式報錯,
具體細節
在 2.12.2 版本中,Log4j 默認禁用對 JNDI 的訪問,現在需要顯式啟用在配置中使用 JNDI,對 JndiLookup 的呼叫現在將回傳一個常量字串,此外,Log4j 現在默認將協議限制為只有 java,訊息查找功能已完全洗掉,
在 2.16.0 版本中,訊息查找功能已完全洗掉,配置中的查找仍然有效,此外,Log4j 現在默認禁用對 JNDI 的訪問,現在需要顯式啟用配置中的 JNDI 查找,此外,Log4j 現在默認將協議限制為僅 java、ldap 和 ldaps,并將 ldap 協議限制為僅訪問 Java 原始物件,需要顯式允許本地主機以外的主機,訊息查找功能已完全洗掉,
升級后主要影響
禁用jndi:用到jndi介面的地方(如:${jndi:rmi:/… 、 ${jndi:ldap:… 等 ),支持但不建議開啟,
洗掉messagelookup 影響 : log列印日志時不再支持引數中帶${}的查找,直接輸出對應字串
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/381931.html
標籤:其他
上一篇:linux系統安全加固
