近日,國家信息安全漏洞共享平臺(CNVD)收錄了Apache Struts2 S2-033遠程代碼執(zhí)行漏洞(CNVD-2016-03754,對應(yīng)CVE-2016-3087 )。遠程攻擊者利用漏洞在啟動動態(tài)方法且安裝部署了REST插件的Struts 2服務(wù)器上遠程執(zhí)行指令。根據(jù)評估,該漏洞影響要小于或等同于S2-032漏洞的影響范圍。
一、漏洞情況分析
Struts2是第二代基于Model-View-Controller (MVC)模型的java企業(yè)級web應(yīng)用框架,并成為當時國內(nèi)外較為流行的容器軟件中間件。此前在4月底,官方廠商發(fā)布了修復(fù)S2-032遠程代碼執(zhí)行漏洞的Struts 2.3.20.3,2.3.24.3,2.3.28.1相關(guān)版本,近日又發(fā)布了S2-033的安全升級公告,但提示的對應(yīng)升級版本號與此前S2-032相同。
根據(jù)CNVD技術(shù)組成員單位——綠盟科技公司提供的分析情況,在官方提供的版本庫中,刪除了Struts 2.3.20.2和2.3.24.2版本。這兩個版本是通過在DefaultActionMapper.java文件中加入了對method成員變量值的過濾,并針對“action:”濫用的問題禁止了絕大多數(shù)的特殊字符,這兩個版本也可以防范針對S2-032漏洞的攻擊。而最終修復(fù)S2-032S2-033的版本則是直接將method方法引入了OGNL表達式(Object Graph Navigation Library),通過對OGNL表達式的過濾來修復(fù)漏洞。綜合上述情況,CNVD認為官方發(fā)布S2-033的安全公告只是有針對性地對部署REST插件功能的情形進行補充,漏洞技術(shù)成因仍與S2-032相同。
CNVD對該漏洞的綜合評級與S2-032相同,為“高?!?。
二、漏洞影響范圍
漏洞影響使用REST插件的Struts 2.3.20 - 2.3.28 (除2.3.20.3和2.3.24.3以外)版本。
三、漏洞修復(fù)建議
用戶可禁用動態(tài)方法調(diào)用(Dynamic Method Invocation),修改Struts2的配置文件struts.xml,將struts.enable.DynamicMethodInvocation設(shè)置為“false”,關(guān)閉動態(tài)方法調(diào)用功能,來規(guī)避該漏洞的攻擊威脅。
Apache Struts官方已發(fā)布了升級程序修復(fù)該漏洞,CNVD建議用戶升級至struts 2.3.20.3,2.3.24.3,2.3.28.1版本。更新地址:https://cwiki.apache.org/confluence/display/WW/Migration+Guide。
附:參考鏈接:
http://struts.apache.org/docs/s2-033.html
http://www.cnvd.org.cn/flaw/show/CNVD-2016-03754
http://blog.nsfocus.net/apache-struts2-vulnerability-technical-analysis-protection-scheme-s2-033/ (綠盟科技公司分析結(jié)果)