1. 程式人生 > >我為什麽支持高校的業務系統放棄Apache Struts2框架(四)

我為什麽支持高校的業務系統放棄Apache Struts2框架(四)

源代碼 開源軟件 聯網 應急 mvc框架 工具 銀行 url 方法

月初聽聞廣東某高校(中山大學)發布通知:關於停止使用Apache Struts2開發框架的通知

技術分享

鑒於S2漏洞較多、維護難度較大,為防範控制網絡安全風險,經研究決定,新建信息化項目不得使用S2;

在用S2的信息系統(網站)應盡快轉用其他更安全的MVC框架(如Spring MVC等);從即日起,使用S2的信息系統(網站)將僅限校園網內訪問。

作為信息安全愛好者,個人對學校的決定是舉雙手支持的,Struts 2框架在安全方面似乎有著與生俱來的缺陷,與同類開源項目相比,它的問題是在是太多了。下面說一下我個人支持的原因:

四、官方的自暴自棄

目前不少人對Struts2框架存在這樣的理解:“Struts 2是開源軟件,源碼公開,有了漏洞可以及時得到修復”。

開源軟件的確有源代碼公開,問題透明的優點,但是Strtus2框架近年來卻走在非比尋常的道路上:

我們以S2-016遠程代碼執行漏洞為例,Struts 2官方發布的漏洞公告裏面居然帶了漏洞驗證方法,如圖1所示。根據這樣的提示,專業的漏洞分析人員可以輕易的寫出漏洞利用程序,大大縮短了漏洞從分析到利用的緩沖期,致使Struts 2框架使用者幾乎沒有時間去修復。應用系統的補丁還沒有更新,攻擊就已經到來。

技術分享

圖1

2013年Struts 2的安全漏洞問題,當時國內幾乎所有互聯網公司及大量銀行、政府機構都受到了影響,導致大量數據泄漏。Struts 2漏洞的確可以做到問題透明公開,修復補丁公開,但是及時性很難保障。

再舉一個Struts 2最近的“破罐子破摔”例子:S2-045遠程代碼執行漏洞
2017年3月6日晚22點左右,官方發布S2-045安全公告,這次雖然沒有公布漏洞細節或者利用方法,但是這次公告居然沒有發布對應的更新補丁(只能自己獲取代碼。手工編譯更新)。

更可悲的是漏洞的描述間接說明了漏洞的細節,於是在3月7日淩晨國內已經出現了S2-045的漏洞利用工具。
3月7日中午13點S2-045漏洞利用工具被廣泛的傳播。
此時國家計算機網絡應急技術處理協調中心發布了預警:《關於Apache Struts2存在S2-045遠程代碼執行漏洞的安全公告》(公告URL:http://www.cnvd.org.cn/webinfo/show/4080)。
同時教育部也緊急發布了《Struts 2 S2-045 Jakarta插件遠程代碼執行漏洞加固方法》,在無法獲取或編譯出官方補丁的情況下,使用文檔中的加固方案來臨時防禦S2-045漏洞。

在這種情況下,補丁還沒有來得及更新,漏洞利用工具已經猖獗了12個小時以上,信息系統早已經被攻破了。

另一種無奈:

Struts 2漏洞爆發時,國內的安全愛好者和安全廠商一般會將問題提交到提交國家信息安全漏洞共享平臺(China National Vulnerability Database,簡稱CNVD),

近兩年來還可以將教育類(高校)的安全問題提交到教育行業漏洞報告平臺(https://src.edu-info.edu.cn/)。根據漏洞的嚴重程度和影響範圍,提交者最終會獲得積分。

但是,由於Struts 2 RCE漏洞爆發時,存在相關的問題的系統太多,大大增加了平臺審核人員的壓力,為此漏洞報告平臺一般會采取壓低評分的方式,雖然等級是“嚴重”,而Rank評分只有1分,

而目前平臺積分兌換為1分相當於人民幣5-10元,無論是為了什麽目的和收益,平臺這樣做其實極大的降低了安全愛好者的積極性,他們在發現某系統存在Struts 2漏洞時,多數會放棄不報。

這樣的無奈之舉卻大大縱容了黑產從業者,他們利用自動化攻擊工具大量植入後門,瘋狂的竊取數據。

我為什麽支持高校的業務系統放棄Apache Struts2框架(四)