關于Apache Struts2 S2-057遠程代碼執行漏洞的安全公告

(作者: 文章來源:www.cnvd.org.cn 發布日期:2018-09-17 瀏覽數:)

 安全公告編號:CNTA-2018-0025

2018年8月22日,國家信息安全漏洞共享平臺(CNVD)收錄了Apache Struts2 S2-057遠程代碼執行漏洞(CNVD-2018-15894,對應CVE-2018-11776)。攻擊者利用該漏洞,可在未授權的情況下遠程執行代碼。目前,漏洞驗證腳本尚未公開,廠商已發布升級版本修復此漏洞。

一、漏洞情況分析

Struts2是第二代基于Model-View-Controller(MVC)模型的java企業級web應用框架,成為國內外較為流行的容器軟件中間件。

2018年8月22日,Apache Strust2發布最新安全公告,Apache Struts2存在遠程代碼執行的高危漏洞(CVE-2018-11776),該漏洞由Semmle Security Research team的安全研究員Man YueMo發現。該漏洞是由于在Struts2開發框架中使用namespace功能定義XML配置時,namespace值未被設置且在上層動作配置(Action Configuration)中未設置或用通配符namespace,可能導致遠程代碼執行。同理,url標簽未設置value和action值且上層動作未設置或用通配符namespace時也可能導致遠程代碼執行。

上述漏洞存在的代碼問題位于DefaultActionMapper這個類的parseNameAndNamespace方法里,如下圖所示:

圖1 代碼分析

當alwaysSelectFullNamespace被設置為true時,namespace的值從uri中獲取,由此可知uri是可控的,所以這就直接導致了namespace可控。最終會調用TextParseUtil.translateVariables方法解析Ognl語句。

將namespace污染為$(2333+2333),可成功帶入函數并執行。漏洞利用結果如下圖所示:

圖2 漏洞利用

CNVD對該漏洞的綜合評級為“高危”。

二、漏洞影響范圍

目前,漏洞影響的產品版本包括但不限于:

Struts 2.3-2.3.34

Struts 2.5-2.5.16

三、漏洞處置建議

目前,Apache公司已發布了新版本(Struts 2.3.35或Struts 2.5.17)修復了該漏洞,CNVD建議用戶及時升級最新版本:

https://cwiki.apache.org/confluence/display/WW/S2-057

暫無法及時更新的用戶,可采用如下臨時解決方案:

當上層動作配置中未設置或使用通配符namespace時,驗證所有XML配置中的namespace,同時在JSP中驗證所有url標簽的value和action,確保上述namespace、value和action值均不可控。

附:參考鏈接:

http://www.cnvd.org.cn/flaw/show/CNVD-2018-15894

https://cwiki.apache.org/confluence/display/WW/S2-057

 

感謝CNVD技術組成員單位——北京奇虎科技有限公司為本公告提供的技術支持。

168彩票网