主旨:
Struts 2 S2-045: Remote Code Execution when performing file upload based on Jakarta Multipart parser
漏洞描述:
Apache Struts 2是一套廣泛用於建構Java Web Application的Open Source Framework,本通報說明之Struts 2 S2-045漏洞發生主因為Struts 2於檔案上傳POST請求之Multipart部分解析器Jakarta出現錯誤,攻擊者可將惡意程式代碼植入HTTP Header (Content-Type)中對伺服器發送HTTP請求,導致Struts 2的解析程式出錯未進入throw exception階段,此漏洞可造成攻擊者執行遠端代碼並可能導致伺服器遭完全控制之重大風險,目前此漏洞之概念驗證資訊(Proof of Concept)已在網際網路中揭露並已遭惡意駭客大肆運用,強烈建議應盡速針對企業所使用之Apache Struts 2版本進行檢查,若現使用之版號位於受影響之版本(請參照3.漏洞資訊)應盡速修正(請參照4.緊急應變方式)以降低企業受駭風險。
漏洞資訊:
影響目標:Apache Struts 2
嚴重級別:高
影響範圍:Struts 2.3.5 - Struts 2.3.31, Struts 2.5 - Struts 2.5.10
修補版本:Struts 2.3.32, Struts 2.5.10
緊急應變方式:
1. 盡速將影響範圍之版本更新至Struts 2.3.32或Struts 2.5.10。
2. 由於Jakarta為預設處理檔案上傳Multipart之解析器,可將該站台之properties設定檔中struts.multipart.parser設定為pell :
### Parser to handle HTTP POST requests, encoded using the MIME-type multipart/form-data
# struts.multipart.parser=cos
struts.multipart.parser=pell
# struts.multipart.parser=jakarta-stream
# struts.multipart.parser=jakarta (將此行以井字號註解)
3. 或者於struts.xml中調整struts.multipart.parser常數:
<constant name="struts.multipart.parser" value="pell" />
漏洞參考資訊:
Apache Struts 2 Documentation - S2-045
https://cwiki.apache.org/confluence/display/WW/S2-045
Apache Struts 2 Documentation – Interceptors – File Upload
https://cwiki.apache.org/confluence/display/WW/File+Upload