背景
12 月 10 日凌晨,Apache 開源項目 Log4j 的遠程代碼執行漏洞細節被公開,由於 Log4j 的廣泛使用,該漏洞一旦被攻擊者利用會造成嚴重危害。受本次漏洞影響的版本范圍為Apache Log4j 2.x < 2.15.0-rc2,攻擊者可以利用此漏洞在目標服務器上執行任意代碼,通過JNDI來執行LDAP協議來注入一些非法的可執行代碼。
攻擊檢測
(1)可以通過檢查日志中是否存在“jndi:ldap://”、“jndi:rmi”等字符來發現可能的攻擊行為。
(2)檢查日志中是否存在相關堆棧報錯,堆棧里是否有JndiLookup、ldapURLContext、getObjectFactoryFromReference等與 jndi 調用相關的堆棧信息。
官方修補建議
1、排查應用是否引入了 Apache log4j-core Jar 包,若存在依賴引入,且在受影響版本范圍內,則可能存在漏洞影響。請盡快升級 Apache Log4j2 所有相關應用到最新的 log4j-2.15.0-rc2 版本,地址 https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
2、升級已知受影響的應用及組件,如 spring-boot-starter-log4j2/Apache Struts2/Apache Solr/Apache Druid/Apache Flink
3、可升級 jdk 版本至 6u211/ 7u201 / 8u191 / 11.0.1 以上,可以在一定 程度上限制 JNDI 等漏洞利用方式。
4、在無法升級版本時,通過修改 jvm 參數、系統環境變量等方式,可在一 定程度上緩解該風險,但無法完全修復,因此不建議通過修改參數的方式解決該風險。
- 修改JVM參數,設置
-Dlog4j2.formatMsgNoLookups=true
。 - 在涉及漏洞的項目的類路徑(classpath)下增加
log4j2.component.properties
配置文件並增加配置項log4j2.formatMsgNoLookups=true
。
5、采用 rasp 對lookup的調用進行阻斷。
6、采用waf對請求流量中的${jndi進行攔截。
如何獲取編譯好的jar包
想要獲取編譯好的jar包,請掃描右上角二維碼,關注公眾號,回復"log4j"倆字.進行獲取
想要獲取編譯好的jar包,請掃描右上角二維碼,關注公眾號,回復"log4j"倆字.進行獲取
替換過程