新聞中心
【漏洞分析】Struts2 S2-062遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2021-31805)分析
近日,Apache官方發(fā)布安全通告,披露了其Struts2框架存在遠(yuǎn)程代碼執(zhí)行漏洞,漏洞編號(hào)CVE-2021-31805 。
該漏洞的產(chǎn)生原因是一個(gè)更早漏洞CVE-2020-17530的修復(fù)不完全。CVE-2020-17530漏洞是由于Struts2會(huì)對(duì)某些標(biāo)簽屬性(比如ID)的屬性值進(jìn)行二次表達(dá)式解析,因此當(dāng)這些標(biāo)簽屬性中使用了%{x}且x值用戶可控時(shí),用戶再傳入一個(gè)%{payload},就會(huì)造成OGNL表達(dá)式執(zhí)行。
在CVE-2021-31805漏洞修復(fù)前,仍然有部分標(biāo)簽屬性使得攻擊者可以惡意構(gòu)造OGNL表達(dá)式執(zhí)行,導(dǎo)致遠(yuǎn)程代碼執(zhí)行。
危害等級(jí)
高危
影響范圍
2.0.0≤Apache Struts≤2.5.29
漏洞復(fù)現(xiàn)
目標(biāo)機(jī)器10.203.200.4使用的是Apache Struts 2.5.25版本,可以在提交的報(bào)文body部分寫(xiě)入指令pwd,從返回結(jié)果id=”/usr/src”可以看出,提交的指令被執(zhí)行了。
排查方法
可通過(guò)排查struts-core-版本號(hào).jar來(lái)判斷是否受此漏洞影響:
若當(dāng)前版本在受影響范圍內(nèi),則可能存在安全風(fēng)險(xiǎn)。
如果沒(méi)有版本號(hào),可以在jar文件的META-INF/MANIFEST.MF中搜索Bundle-Version,若2.0.0≤Apache Struts≤2.5.29,則存在該漏洞。
處置建議
1、版本升級(jí)
目前官方已發(fā)布最新版本,建議受影響用戶及時(shí)更新升級(jí),下載鏈接:
https://struts.apache.org/download.cgi#struts-ga
2、臨時(shí)防護(hù)措施
可通過(guò)設(shè)置所有標(biāo)簽中value=" "來(lái)緩解此漏洞。
將org.apache.commons.collection.BeanMap添加至excludedClasses黑名單中。
3、產(chǎn)品解決方案
安博通深度安全網(wǎng)關(guān)已支持該漏洞防護(hù),需要將規(guī)則包升級(jí)到20220419及以上版本。升級(jí)位置為:系統(tǒng)維護(hù)→系統(tǒng)升級(jí)→自動(dòng)升級(jí),點(diǎn)擊立即升級(jí)或下載離線特征庫(kù)手動(dòng)升級(jí)。
防護(hù)后效果:規(guī)則升級(jí)后,在策略中選用包含該特征的IPS模板,并配置記錄日志和阻斷。當(dāng)攻擊發(fā)生時(shí),就會(huì)被安博通深度安全網(wǎng)關(guān)攔截并記錄日志。