一、漏洞描述:
當(dāng)攻擊者具有對Log4j配置的寫訪問權(quán)限時(shí),Log4j 1.2中的JMSAppender容易受到不受信任數(shù)據(jù)反序列化的攻擊。攻擊者可以提供TopicBindingName和TopicConnectionFactoryBindingName配置,導(dǎo)致JMSApender執(zhí)行JNDI請求,從而以與CVE-2021-44228類似的方式執(zhí)行遠(yuǎn)程代碼。
注意:當(dāng)專門配置使用JMSApender時(shí),此問題僅影響Log4j 1.2,這不是默認(rèn)設(shè)置。Apache Log4j 1.2于2015年8月終止使用。用戶應(yīng)該升級到Log4j 2,因?yàn)樗鉀Q了以前版本中的許多其他問題。
二、漏洞利用方式:
由于此漏洞的利用方式與CVE-2021-44228相同,已有規(guī)則可以滿足攻擊檢測需要。
三、處置方法:
(一)升級Log4j到最新版本
(二)若暫時(shí)無法進(jìn)行升級操作,可先用下列措施進(jìn)行臨時(shí)緩解:
1、添加jvm參數(shù)啟動:-Dlog4j2.formatMsgNoLookups=true
2、在應(yīng)用的classpath下添加log4j2.component.properties配置文件,文件內(nèi)容為:log4j2.formatMsgNoLookups=true
3、設(shè)置系統(tǒng)環(huán)境變量 LOG4J_FORMAT_MSG_NO_LOOKUPS=true
4、使用下列命令,移除log4j-core包中的JndiLookup類文件:
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
注:當(dāng)且僅當(dāng)Apache
Log4j >= 2.10版本時(shí),可使用1、2、3、4的任一措施進(jìn)行防護(hù)。
5、采用人工方式禁用JNDI,例:在spring.properties里添加spring.jndi.ignore=true
6、建議使用JDK在11.0.1、8u191、7u201、6u211及以上的高版本,可在一定程度防止RCE。
7、限制受影響應(yīng)用對外訪問互聯(lián)網(wǎng),并在邊界對dnslog相關(guān)域名訪問進(jìn)行檢測。
部分公共dnslog平臺如下:
ceye.io
dnslog.link
dnslog.cn
dnslog.io
tu4.org
burpcollaborator.net
s0x.cn