綠盟科技WAF解讀OWASP TOP10安全威脅
如果沒有一個理論性的指導,僅僅從局部看問題,那么企業或者政府部門的Web業務系統管理員對于如何防護一個web系統會有很多的疑惑。在業內最有權威性的Web安全組織就是OWASP,它提供的工具、文檔和研究項目,以及2004年版和2007年版的TOP10安全威脅排名對于指導web安全有非常重要的影響,已經成為業內指導和修復Web安全的重要依據。
這里我們介紹OWASP最新推出的2010版TOP10,雖然是candidate版(正式版在撰寫本文時還未發布,但與Candidate版差別很小——編者注),但是我們從這里驚喜的發現了它的重大改變,就是用風險管理來看待Web安全問題的根源以及管理。而這些改變與綠盟科技WAF防護Web攻擊的理念和實現機制非常貼合。對于用戶來說,首先需要一個正確的理論指導,第二,需要把這些理論可以落地操作,也就是運用一些技術和設備來防護。
TOP10安全威脅排名如下:
A1: Injection
A2: Cross Site Scripting (XSS)
A3: Broken Authentication and Session Management
A4: Insecure Direct Object References
A5: Cross Site Request Forgery (CSRF)
A6: Security Misconfiguration
A7: Failure to Restrict URL Access
A8: Unvalidated Redirects and Forwards
A9: Insecure Cryptographic Storage
A10: Insufficient Transport Layer Protection
不是以往的漏洞統計方式,而是應用了風險評估方法,通過計算得出的排名。風險計算這個概念不是OWASP組織自己發明的,它應用和參考其他成熟風險評估標準以及風險建模、風險各因素的賦值和計算、軟件生命周期的標準和方法(包括NIST 800-30 Risk Management Guide for Information Technology Systems、AS/NZS 4360 Risk Management、Microsoft Web Application Security Frame Threat Risk Modeling等),同時漏洞數據也是來自國際各大安全組織(包括Aspect Security、MITRE–CVE、Softtek、White Hat–Statistics),OWASP把這些方法、概念和數據有機的融合在一起,它帶給我們面對web安全新的啟迪和思路。
那么風險計算如何操作呢,步驟如下:
Step 1: 識別風險
Step 2: 評估可能性因素
Step 3: 評估影響因素
Step 4: 計算并定義風險等級
Step 5: 制定修復方案
Step 6: 按照用戶實際情況制作風險等級模型
關鍵點在于第二和第三步,得出這兩項后用公式: Risk = Likelihood * Impact。進行計算后得出的結果就是該風險的綜合值。為了方便大家查看,我根據計算方法把相關因素用魚刺圖表現,如下圖:
對于不同風險因素的組合,OWASP稱之為攻擊路徑。比如攻擊一個網站,攻擊者是不同的,有匿名用戶或者是有權限的用戶甚至系統管理員和開發者,所利用的漏洞如果不相同那么方法也不一定是一樣的,最終破壞造成的技術影響性也不同,比如黑掉首頁、刪除數據、植入木馬等,那么帶來的商業影響也相應的不同,有金錢損失、聲譽損失,而且這些損失的價值也不相同。所以不同的Web業務系統的風險值都不是相同的。
OWASP在編寫TOP時參考了威脅建模和軟件生命周期(SDLc),也就是說此文檔會影響到一個軟件(web application)從開發設計到運維的不同階段,下圖是綠盟科技根據理解編寫的,用紅色圓點表示風險的不同因素,它們分布在軟件生命周期各個階段,曲線表示每個階段不同的風險值。
根據軟件生命周期大致劃分了4個階段,設計開發、內部測試、上線和運維。設計開發階段是評估和設計軟件的關鍵,它指導軟件用什么原則來開發,它的具體邏輯和數據流的功能劃分,同時對于開發通常包括安全編程原則和功能自身的健壯性等,上線階段是測試和試運行,可以通過代碼審計、滲透測試,以及自動掃描來發現它的安全問題。第四個階段是運維階段,剛上線運維時風險點最高,此時需要根據實際情況來調整安全設備和應用程序,度過這段磨合期就是平穩運營階段。但風險不會消失,會一直保持在一個相對平衡的水平線。
這個曲線不是絕對值,只是根據一般情況的相對值,也就是說前期的規劃和開發階段控制得越好,后期的風險就越小。
同時,我們可以看到生命周期的前期階段風險控制得越好后面的階段風險值也會相應減少。但不論前階段如何控制,運維風險也是相對最高的。為什么呢?這是因為在開發階段的風險因素比較少,而發布后增加了外部影響因素,比如金錢損失、聲譽損失,還有互聯網的匿名用戶等。而我們知道OWASP的風險計算是先把可能性因素取平均值然后再把影響性也取平均值,然后兩個值相乘,所以首先在運維階段多了影響因素和攻擊者,所以他的總體風險值增加了。
如果不理解,那我舉個例子,比如一個小孩手里拿著一百元,是在家里安全還是在大街上安全呢?顯然是在大街上更危險,那是因為增加了外部的不安全因素,雖然這些因素是未知的。然后再擴展一下例子,小孩在大街上拿一百元和成年人手里捧著10萬元,誰更危險?顯然是后者,這是因為自身的價值高了,損失更大,所以風險值最高。有些人會說不對吧,小孩和成年人面對的攻擊者是不同的。是的,雖然攻擊者不同,而且成年人自身可以抵御部分人的攻擊,但是由于風險因素之一的數據損失的影響性增大了,即使兩者相乘,還是成年人手捧10萬風險更高。
然后,我們在看上圖的風險曲線變化太大了,在實際的運維階段中,如此的風險變化表示安全水平非常不穩定,比如在奧運、國慶60周年時為什么突發事件相對要多,這是因為它自身的安全控制如果和平時保持一致,但是外部因素增加了。那么從風險控制角度看,我們知道OWASP的風險理論包含了管理、技術手段等,技術手段又包括了比如:軟件補丁、防火墻策略、數據加密、數據備份、安全配置等,除了這些之外,針對網站更有效的方式是采用合理的WAF設備,從而把隱藏自身的weakness(弱點),抵御外部攻擊,達到降低風險的目的。
對于每一個風險的控制這里不一一舉例,從下圖的一個SQL注入示例中,我們來看其中的部分4項因素:
通過之前的魚刺圖我們知道這個發現難易度的風險值的評估依據是:幾乎不可能為1分,困難為3分,容易為7分,有自動化工具為9分,其他幾個因素也是一樣的依據,如果利用難易度為容易(分值為5),技術影響力為高(分值為9),流行程度分值為6,那么它的總體風險值是很高的。
如何通過WAF來降低風險呢?掃描防護可以防范由掃描工具來探測網站漏洞的行為,另外有一些攻擊者利用WebServer默認的錯誤信息或WebApplication脆弱機制暴露的信息來了解目標的weakness,他們會通過程序返回的不同信息來探測。綠盟科技WAF根據這兩個技術的機制,設計了“信息安全防護”功能,可以把這個發現動作屏蔽掉,讓攻擊者不知道真實信息,從而降低了發現難易度的風險。利用難易度是在攻擊過程中最重要的因素。防篡改是對攻擊成功后,用這個機制來避免產生更嚴重的影響,如果攻擊者刪除了數據,可以用WAF來禁止這種行為發生,或及時恢復數據。流行程度是一個漏洞是否為大眾所知或者只有極少部分人掌握的衡量標準,這是一個客觀事實,用WAF來避免它顯然不可能,但我們可以在事件發生之前主動來檢查網站的weakness,從而在攻擊來臨之前就給予修復。
當然,還有其他機制,比如通過事前監控和事后日志分析來追溯攻擊來源,分析攻擊手法,這些就講述了。總之,根據OWASP的計算公式,由于降低不同的風險因素,使它的計算因子的值變小了,所以整個風險值也降低了。
我們都應該對WAF降低風險的機制有所了解,那么單從降低利用難易度這項指標來看,各個廠家的實現原理是有所差異的,這個差異體現在同樣一個固定的5分值,如何降低到2或者更低呢?這里不僅僅要考慮準確率還有性能,更重要的是不同的攻擊手法會給防御帶來巨大的挑戰,比如SQL注入從難易角度看,如下:
有群注、普通注入和二次注入,所謂群注,簡單講就是攻擊者是盲目的把攻擊報文發給大量的網站,普通注入也包含了很多變形方式,比如把攻擊字符串變異成不同類型或者轉換編碼來逃避基于特征的IDS類產品,二次攻擊則是一種更像邏輯層面的攻擊,它的攻擊是發生在利用有權限用戶來執行觸發之前他注入的字符,從而引發的攻擊行為。一個優秀的WAF是應該可以應付這些不同類型,不同難度的攻擊行為的。
結束語:
在本文中,綠盟科技WAF通過OWASP的理論模型來說明自己的產品思路,其核心是有效降低Web系統風險,對于OWASP TOP10安全威脅,綠盟科技WAF能夠提供有效防御。
【編輯推薦】