潘 恒,謝彥彬
(1.中原工學院,鄭州450007;2.鄭州市計算機網絡安全評估重點實驗室,鄭州450007)
Web應用安全風險評估研究
潘 恒1,2,謝彥彬1,2
(1.中原工學院,鄭州450007;2.鄭州市計算機網絡安全評估重點實驗室,鄭州450007)
針對Web應用程序中存在的漏洞問題,提出了符合Web應用安全特點的風險評估方法,給出了具體的評估流程及算法,并在此基礎上對Web應用安全風險值進行了模糊處理,從而使評估結果更加準確.
Web應用安全;風險評估;模糊處理
隨著互聯網技術的迅猛發展,越來越多的關鍵業務依賴于Web應用技術.然而隨著Web應用安全威脅的增加,這些關鍵業務的安全性也受到了嚴重挑戰.
Web應用安全威脅的產生有多方面因素.一方面,Web的開放性使得Web應用本身的漏洞威脅容易被黑客利用;另一方面,Web應用代碼的不規范性也導致Web應用本身在安全性方面容易出現各種漏洞.因此,作為Web應用安全的基本問題,漏洞威脅成為Web應用安全研究的重要對象之一.本文首先就Web應用安全中的SQL注入等安全漏洞問題進行了詳細分析,在此基礎上提出了Web應用安全風險評估流程和評估算法.
目前,常見的Web應用安全威脅有SQL注入、跨站腳本漏洞、跨站請求偽造、緩沖區溢出、目錄遍歷、遠程文件包等.下面介紹幾種典型的 Web應用安全威脅.
SQL注入是指向服務器端提交一段提前構造的具有攻擊性的SQL語句,這些語句可以改變程序的原始執行結果,實現攻擊者的意圖[1].SQL注入的基本思想是:在用戶輸入中插入一些特殊符號,使系統構造出來的SQL語句在執行查詢功能時,要么改變查詢條件,要么附帶執行攻擊者插入的SQL語句,最終達到攻擊的目的.
SQL注入存在于網頁中各種用戶數據提交的地方,攻擊者主要通過HTTP協議以表單、Server變量、Cookie等方式將SQL注入語句提交到服務器,進而達到攻擊的效果.由于SQL注入攻擊技術難度不高、危害大且普遍存在的特點,使得SQL注入漏洞在整個Web應用安全漏洞中所占比重較高.
跨站腳本漏洞是指將惡意數據或代碼插入到遠程HTML代碼的Web頁面中,普通用戶認為該頁面是安全的,但瀏覽器下載該頁面時,瀏覽器將解釋執行帶有惡意的嵌入腳本,導致用戶受到攻擊[2-3].跨站腳本漏洞按其形成原因主要分為3種:反射型跨站腳本漏洞、存儲型跨站腳本漏洞和基于DOM的跨站腳本漏洞.
從某種程度上說,跨站腳本漏洞是在Web應用程序中發現的最為普遍的漏洞.攻擊者可以利用跨站腳本漏洞盜取被攻擊者的Cookie等隱私信息,讀取本地敏感文件,訪問系統剪切板,監視鍵盤記錄,進行DDOS攻擊,甚至可以掃描本地其他計算機等.
跨站請求偽造本質上是Web應用開發過程中的安全漏洞.在網站實現中,沒有足夠強的校驗手段;攻擊者可利用網站對用戶瀏覽器所發出的HTTP請求的信賴,達到攻擊的目的[4].跨站請求偽造成功的前提條件是:攻擊者知道用戶訪問的Web服務器信息,誘使用戶點擊惡意網站的鏈接;用戶可以自動通過身份驗證或者已經通過身份驗證;網站驗證用戶提交的數據時不檢查HTTP Referrer信息的真偽;攻擊者事先構造好所有的FORM數據項.
緩沖區溢出是一種很典型的軟件漏洞,它是指攻擊者向Web應用程序發送超長惡意數據,使程序處理這些數據時,超過預設緩沖區范圍,從而導致數據溢出等后果[5].緩沖區溢出可以出現在Web服務器中,也可以出現在Web應用程序中.在不同的位置出現緩沖區溢出,會造成不同的后果.比如,若某個郵件服務器存在這種漏洞,當用戶向該服務器發送帶有惡意代碼的郵件時,攻擊者可以輕而易舉地獲取Root用戶權限.
制定合理的Web應用安全風險評估流程是實施Web應用安全風險評估的前提.風險評估涉及技術、資產和管理等諸多方面,是一個復雜的綜合過程.限于篇幅,本文僅從技術,主要是從Web應用安全漏洞分析的角度考慮如何評估Web應用程序的安全.本文采用定量與定性相結合的方法分析Web應用安全風險評估.首先采用定性方法識別系統存在的漏洞,然后采用定量方法設定漏洞損害度級別和權重.圖1所示為Web應用安全風險評估流程圖.
在Web應用安全風險評估流程中,漏洞的檢測必不可少,它是影響風險評估結果的一個重要環節.針對不同的Web應用安全漏洞,具體的檢測方法也不同.下面以SQL注入漏洞為例,介紹一下Web應用安全漏洞的檢測方法.
SQL注入漏洞的檢測方法主要有2種:基于異常反饋信息的檢測方法和經典的1=1、1=2測試方法.2.2.1 基于異常反饋信息的檢測方法
基于異常反饋信息的檢測方法是向Web應用程序進行異常輸入,從而造成Web服務器出錯,通過分析反饋的錯誤信息,可以推斷出 Web應用程序的信息,從而方便攻擊者進一步構造SQL注入語句,以達到攻擊Web應用程序的目的.因此,如果Web應用程序的服務器在異常輸入的情況下產生錯誤報告,并且可以檢測到這些異常信息,則測試者可以認為該注入點存在SQL注入漏洞.

圖1 Web應用安全風險評估流程圖
2.2.2 經典的1=1、1=2測試方法
并不是每臺服務器的IIS都會把具體的錯誤報告返回到客戶端.比如,在某個Web應用程序中包含cint(參數)之類的語句,即使注入沒有成功,但服務器仍然會報錯,只是具體的報錯信息被統一設置為:“處理URL時服務器出錯,請聯系管理員進行處理”.另外,如果程序員對程序中的特殊字符進行過濾,也無法檢測出注入漏洞.比如,程序員把單引號過濾掉,則在使用單引號進行測試時,就無法檢測到SQL注入漏洞.
在上述情況之下,就應該使用經典的1=1、1=2測試方法.首先,構造測試方案.例如,以數字型參數作為傳入參數的判斷方法,測試方案如下:
①1http://seca.zzti.edu.cn/Detail.aspx?id=1;
②2http://seca.zzti.edu.cn/Detail.aspx?id=1 and 1=1;
③3http://seca.zzti.edu.cn/Detail.aspx?id=1 and 1=2.
發送測試方案請求,根據返回的結果判斷該Web應用是否存在SQL注入漏洞.
系統風險級別有兩條基本評估原則:①木桶原理.即木桶盛水多少取決于木桶中高度最低的木板的高度.Web應用系統受攻擊的可能性和程度主要取決于系統中風險級別最高的漏洞;②當多個漏洞同時存在時,不能將系統風險級別簡單等同于風險級別最高的漏洞帶來的風險,而是要綜合考慮系統中多個漏洞組合出的新風險級別.[6]具體操作時,定義漏洞特征庫的漏洞匹配規則,通過這些規則確定存在多個漏洞時系統的綜合風險級別.例如,假設 “ASP源代碼泄漏”漏洞的風險值為3,該漏洞的風險級別為中,當系統僅存在這一種漏洞時,攻擊者可以獲取一些關于服務器的機密信息,如登錄網站時的用戶賬號和密碼.再如,假設系統僅存在另一種“遠程提升用戶權限”漏洞,該漏洞的風險值也是3,風險級別也為中.若系統同時存在上述兩種漏洞時,攻擊者就可以利用 “遠程提升用戶權限”漏洞先將 “ASP源代碼泄漏”漏洞中的普通用戶權限提升為系統用戶權限,進而對系統進行操作,達到破壞系統的目的.這種組合后的情況使得系統的風險值變高,顯然不能簡單地依據這兩個漏洞的風險級別來把組合漏洞風險判定為中級,必須依照它們的組合漏洞風險級別進行重新評估.
根據上述原則,本文在充分考慮系統漏洞相互組合關系的基礎上,設計出新的Web應用安全風險評估算法.具體算法如下:
依照第一條評估原則:針對系統中檢測出的所有漏洞,選擇漏洞風險值最高者暫時作為系統風險值.
輸入參數:
漏洞流行度級別P1i:第i個漏洞被公開和利用的程度;
漏洞容易度P2i:利用第i個漏洞的難易程度,即所要求的工具質量和技術水平;
漏洞損害度P3i:利用第i個漏洞時所造成的影響;
漏洞冒險度P4i:利用第i個漏洞時攻擊者被發現的難易程度以及懲罰輕重;
漏洞流行權重W1i:第i個漏洞的流行度在漏洞風險值評定中所占比重;
漏洞容易權重W2i:第i個漏洞的容易度在漏洞風險值評定中所占比重;
漏洞損害權重W3i:第i個漏洞的損害度在漏洞風險值評定中所占比重;
漏洞冒險權重W4i:第i個漏洞的冒險度在漏洞風險值評定中所占比重.
中間參數:漏洞風險值Mi,即第i個漏洞的風險值.
輸出參數:Web應用安全風險值M.其計算公式如下:

依照第二條評估原則,首先分析不同Web應用安全漏洞之間的關系,根據多種漏洞同時存在于某種特定環境中時系統的危險程度(用風險值來表示)來建立漏洞組合風險匹配庫,然后利用系統中檢測出來的漏洞與漏洞組合風險匹配庫中的匹配規則進行匹配操作.如果有一條規則匹配成功,則取該匹配規則所對應的風險值作為系統新的風險值;如果有多條規則匹配成功,則取這些匹配規則所對應的風險值中最大者作為系統新的風險值.此方法的數學表示形式如下:
用Nj表示根據漏洞組合風險匹配庫中的匹配規則得到的第j(j=1,2,3,…,n)個系統風險值,用N 表示該類風險值的最大值,即 N=MAX{N1,N2,…,Nj,…}.
最后,比較得到的兩個系統風險值M和N,將較高的風險值作為系統的最終風險值,即R=MAX{M,N}.
目前,利用風險計算公式得到的風險值評估算法,多是精確量化Web應用安全風險,即計算出具體的系統風險值.這種算法忽略了評估中存在的不確定因素.本文采用模糊數學中的相關理論對風險值進行模糊處理.
集合論中使用特征函數來表述元素和集合的關系,即當元素x屬于集合U時,特征函數值為1,否則為0.若集合U中存在一定程度上屬于或者不屬于該集合的元素,那么這種集合就稱為模糊集合.“隸屬度”可以清晰地表示元素與模糊集合的關系,即對于論域中的每一個元素a,都在閉區間[0,1]上存在一個對應的數字指標,用來表示a相對于模糊集合A的隸屬程度,并用μA(a)來表示,稱為元素a對模糊集合A的隸屬度.因此,我們引入如下定義:
定義:假設論域為X,u為X中的元素.對于任意一個元素u∈X,給定如下的映射:u→μA(u)∈[0,1],則稱“序偶”組成的集合A={u|μA(u)}為X 上的模糊集合.其中,?u∈X,μA稱為模糊集合A 的隸屬函數,μA(u)稱為u對A 的隸屬度[7].
顯然,μA(u)值越大,表示u對A 的隸屬度越高;μA(u)=0時,表示u不屬于A;μA(u)=1時,表示u肯定屬于A.
本文引用文獻[8]中的九級梯形隸屬度函數對風險值R進行模糊處理.其中,通用梯形模糊數為A=(a,b,c,d;v),0<v<1,a,b,c,d 均為實數.通用梯形模糊數可表示為:

其中,九級梯形隸屬函數所對應的九級風險級別分別為 Absolutely-Low、Very-Low、Low、Fairly-Low、Medium、Fairly-High、High、Very-High、Absolutely-High.比如:當u=0.76時,u的取值范圍決定了其隸屬度應該在梯度為六級或者七級的隸屬函數中得到.下面給出文獻[8]中九級梯形隸屬函數方法的第六梯度和第七梯度的隸屬函數:


由上述公式可以看出:當u=0.76時,風險值對第六級的隸屬度為1,對第七級的隸屬度約為0.67,而對其他等級的隸屬度為0,可見,它偏向第六級,風險等級可描述為Fairly-High.Fairly-High就是風險值經過模糊處理后的最終風險級別.
目前,對于Web應用安全的研究還局限于漏洞分析和檢測,對于Web應用安全評估的研究也比較少.本文分析了Web應用安全威脅,在此基礎上專門針對Web應用安全風險評估進行研究,對Web應用安全風險值進行模糊處理,使評估結果更加準確,為 Web應用的安全維護提供了指導.
[1] 高少杰.SQL注入攻擊防御方法研究[D].昆明:云南大學,2010.
[2] 邱勇杰.跨站腳本攻擊與防御技術研究[D].北京:北京交通大學,2010.
[3] Wikipedia org.Cross-site Scripting[EB/OL].[2011-10-16].http://en.wikipedia.org/wiki/Cross-site_scripting,2011.
[4] 褚誠云.跨站請求偽造攻擊:CSRF安全漏洞[J].程序員,2009(1):98-100.
[5] 徐亮.基于網絡的Web應用程序漏洞檢測系統研究與實現[D].長沙:國防科學技術大學,2005.
[6] 雷航.漏洞檢測與風險評估技術研究[D].成都:成都電子科技大學電子技術學院,2005.
[7] 潘宏偉.基于模糊層次分析法的信息安全風險評估研究[D].南京:南京師范大學,2007.
[8] 唐慧林.基于模糊處理的系統風險評估方法研究[D].鄭州:中國人民解放軍信息工程大學,2005.
Research of Web Application Security Risk Assessment
PAN Heng1,2,XIE Yan-bin1,2
(1.Zhongyuan University of Technology,Zhengzhou 450007;2.Zhengzhou Key Lab of Computer Network Security Assessment,Zhengzhou 450007,China)
There are many vulnerabilities problems in the Web application of the programs.In this paper a risk assessment method according to the features of the web application security is put forward.A specific assessment process and algorithm is given,In order to make the risk assessment accurate,a Fuzzy treatment to the evaluation value is performed.
Web application security;risk assessment;Fuzzy processing
TP393
A
10.3969/j.issn.1671-6906.2011.06.011
1671-6906(2011)06-0053-04
2011-10-21
潘 恒(1977-),女,河南新鄉人,副教授,博士.