本發(fā)明涉及網(wǎng)絡安全漏洞挖掘,特別是一種網(wǎng)絡安全未知漏洞挖掘指引路徑生成方法。
背景技術:
1、由于網(wǎng)絡安全漏洞點所在基本塊的可達路徑可能有多條,每條代碼路徑觸發(fā)漏洞的難易程度不一樣,如果對所有的代碼路徑隨機選擇并進行漏洞挖掘,則可能需要經(jīng)過很長時間才能挖掘到漏洞,由于漏洞挖掘需要的時間周期往往很長,越晚發(fā)現(xiàn)漏洞對于商業(yè)軟件來說受到的損失越大。同時,對于二進制程序來說,同一個漏洞點的多條可達路徑的漏洞成因類似,在修復了漏洞點處的漏洞后,其他路徑的漏洞也會同時消除。因此,需要對疑似漏洞的代碼路徑進行優(yōu)先度排序,優(yōu)先挖掘容易觸發(fā)漏洞、危害更大、漏洞存在概率更大的路徑,更快的發(fā)現(xiàn)漏洞。
技術實現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種網(wǎng)絡安全未知漏洞挖掘指引路徑生成方法,評估路徑觸發(fā)漏洞的執(zhí)行難度,優(yōu)先排序那些易于觸發(fā)漏洞的路徑。
2、為實現(xiàn)上述目的,本發(fā)明采用如下技術方案:一種網(wǎng)絡安全未知漏洞挖掘指引路徑生成方法,包括基本步驟以及具體實現(xiàn)方法;
3、所述基本步驟包括基本塊的復雜度計算、代碼片段復雜度計算、代碼路徑的復雜度計算、考慮漏洞風險和漏洞概率因素的影響以及代碼路徑的優(yōu)先度排序;
4、具體實現(xiàn)方法包括:
5、步驟1:對待挖掘漏洞的二進制程序逆向編譯成可讀形式,劃分出基本塊和片段,一個片段中包含一個或多個基本塊;
6、步驟2:通過指令數(shù)量和指令類型計算基本塊的復雜度;
7、步驟3:根據(jù)片段中包含的各基本塊的復雜度以及基本塊的數(shù)量按照層級加權累和計算片段的復雜度;
8、步驟4:通過路徑經(jīng)過的片段的復雜度和基本塊的復雜度來計算路徑的復雜度;
9、步驟5:根據(jù)步驟4計算的路徑復雜度預測疑似漏洞點,根據(jù)疑似漏洞點所在路徑的復雜度結合漏洞存在因素計算疑似漏洞點所在路徑的優(yōu)先度,所述漏洞存在因素包括不同漏洞類型的漏洞對應代碼出現(xiàn)頻率和對應代碼復雜度;
10、步驟6:對所有疑似漏洞點所在路徑的優(yōu)先度進行排序,優(yōu)先排序高概率漏洞。
11、在一較佳的實施例中,基本塊的復雜度計算具體為:對于每個基本塊的復雜度,由其指令數(shù)量和指令類型來衡量,包含的指令數(shù)量越多、內存讀寫指令越多,則基本塊的復雜度越高;通過這兩項指標,計算出每個基本塊的復雜度;代碼片段復雜度計算具體為:設計每種代碼片段類型的復雜度計算方法;對于循環(huán)類型的代碼片段,其循環(huán)次數(shù)和位于循環(huán)體中的基本塊數(shù)量以及基本塊復雜度的加權累和,是衡量循環(huán)類型的代碼片段的主要衡量指標;對于條件分支類型的代碼片段,其分支數(shù)量和每個分支基本塊的復雜度加權累和是其復雜度的重要衡量指標;代碼路徑的復雜度計算具體為:主要通過代碼路徑經(jīng)過的代碼片段復雜度和基本塊的復雜度來計算出整條代碼路徑的復雜度;對于代碼路徑上的if類型的代碼片段,應給予更大的權重;考慮漏洞風險和漏洞概率因素的影響具體為:相應的預測概率,漏洞存在概率越大的漏洞點優(yōu)先度越高;代碼路徑的優(yōu)先度排序具體為:對所有疑似漏洞點的代碼路徑進行優(yōu)先度排序,優(yōu)先度越高的代碼路徑應越早進行挖掘;經(jīng)過優(yōu)先度排序得出的路徑即為后續(xù)漏洞挖掘的指引策略。
12、在一較佳的實施例中,所述步驟2具體有:
13、
14、式中:cb表示基本塊的復雜度;ni表示對應指令類型的指令數(shù)量;表示該指令類型的指令的權重值;y表示影響系數(shù),通常取值為0.01~0.1之間;表示基本塊中涉及到的每一次棧操作時,棧頂?shù)綏5椎木嚯x;num表示基本塊中總的指令數(shù)量;每一次棧操作時,棧頂指針sp、棧底指針bp,sp到bp之間的距離表示使用的棧內存大??;所述指令類型包括數(shù)據(jù)傳送指令、算術運算指令、位運算指令、程序流程控制指令、串操作指令、處理器控制指令;所述指令的權重值參考指令的時間復雜度o(n)獲得;指令的權重是要看其具體功能,由具體實現(xiàn)的功能來計算時間復雜度,從而得到指令的權重。
15、在一較佳的實施例中,所述步驟3中復雜度計算公式為:
16、
17、式中:θi表示對應的片段中處于不同層級的基本塊的權重;表示不同層級中第一個基本塊的復雜度;表示不同層級中第二個基本塊的復雜度;基本塊的層級由在本片段中到達的條件決定。
18、在一較佳的實施例中,所述步驟4中路徑的復雜度的計算公式為:
19、cr=v(g)(cf1+cf2+…)(3)
20、v(g)=e-n+2(4)
21、其中v(g)是一條路徑的圈復雜度;cfi是路徑中涉及到的所有片段的復雜度;e是一條路徑中邊的數(shù)量,n是控制流圖中的節(jié)點數(shù)量。
22、在一較佳的實施例中,所述步驟5具體為:所述對應代碼出現(xiàn)頻率是指該類型漏洞對應代碼出現(xiàn)頻率,通過不同漏洞類型的漏洞對應代碼出現(xiàn)頻率和對應代碼復雜度共同決定漏洞存在的風險大?。?/p>
23、疑似漏洞所在路徑的優(yōu)先度的計算公式為:
24、
25、式中:pv表示漏洞出現(xiàn)概率;pc表示對應的與代碼復雜度關系;cri表示一條路徑的復雜度,α+β=1;漏洞類型包括棧漏洞、整數(shù)溢出漏洞、格式化字符串漏洞、堆漏洞和邏輯漏洞,其中:所述棧漏洞對應pv=0.9,pc=0.3;所述整數(shù)溢出漏洞對應pv=0.6,pc=0.3;所述格式化字符串漏洞對應pv=0.6,pc=0.6;所述堆漏洞對應pv=0.3,pc=0.6;所述邏輯漏洞對應pv=0.3,pc=0.9;目前α、β這兩個數(shù)值的確定依賴實驗結果,例如對于某一類應用的程序,選取幾個已知漏洞的程序,將公式帶入,看α、β的值具體為多少最貼近實際情況,然后對應這類程序,就選用這組α、β值。
26、與現(xiàn)有技術相比,本發(fā)明具有以下有益效果:本發(fā)明利用通過不同漏洞類型的漏洞對應代碼出現(xiàn)頻率和對應代碼復雜度共同決定漏洞存在的風險大小,并對所有疑似漏洞點所在路徑的優(yōu)先度進行排序,優(yōu)先排序高概率漏洞。同時,分析漏洞可能帶來的損害程度,優(yōu)先挖掘那些對系統(tǒng)安全性影響較大的路徑。評估路徑觸發(fā)漏洞的執(zhí)行難度,優(yōu)先排序那些易于觸發(fā)漏洞的路徑。
1.一種網(wǎng)絡安全未知漏洞挖掘指引路徑生成方法,其特征在于包括基本步驟以及具體實現(xiàn)方法;
2.根據(jù)權利要求1所述的一種網(wǎng)絡安全未知漏洞挖掘指引路徑生成方法,其特征在于,基本塊的復雜度計算具體為:對于每個基本塊的復雜度,由其指令數(shù)量和指令類型來衡量,包含的指令數(shù)量越多、內存讀寫指令越多,則基本塊的復雜度越高;通過這兩項指標,計算出每個基本塊的復雜度;代碼片段復雜度計算具體為:設計每種代碼片段類型的復雜度計算方法;對于循環(huán)類型的代碼片段,其循環(huán)次數(shù)和位于循環(huán)體中的基本塊數(shù)量以及基本塊復雜度的加權累和,是衡量循環(huán)類型的代碼片段的主要衡量指標;對于條件分支類型的代碼片段,其分支數(shù)量和每個分支基本塊的復雜度加權累和是其復雜度的重要衡量指標;代碼路徑的復雜度計算具體為:主要通過代碼路徑經(jīng)過的代碼片段復雜度和基本塊的復雜度來計算出整條代碼路徑的復雜度;對于代碼路徑上的if類型的代碼片段,應給予更大的權重;考慮漏洞風險和漏洞概率因素的影響具體為:相應的預測概率,漏洞存在概率越大的漏洞點優(yōu)先度越高;代碼路徑的優(yōu)先度排序具體為:對所有疑似漏洞點的代碼路徑進行優(yōu)先度排序,優(yōu)先度越高的代碼路徑應越早進行挖掘;經(jīng)過優(yōu)先度排序得出的路徑即為后續(xù)漏洞挖掘的指引策略。
3.根據(jù)權利要求1所述的一種網(wǎng)絡安全未知漏洞挖掘指引路徑生成方法,其特征在于,所述步驟2具體有:
4.根據(jù)權利要求1所述的一種網(wǎng)絡安全未知漏洞挖掘指引路徑生成方法,其特征在于,所述步驟3中復雜度計算公式為:
5.根據(jù)權利要求1所述的一種網(wǎng)絡安全未知漏洞挖掘指引路徑生成方法,其特征在于,所述步驟4中路徑的復雜度的計算公式為:
6.根據(jù)權利要求1所述的一種網(wǎng)絡安全未知漏洞挖掘指引路徑生成方法,其特征在于,所述步驟5具體為:所述對應代碼出現(xiàn)頻率是指該類型漏洞對應代碼出現(xiàn)頻率,通過不同漏洞類型的漏洞對應代碼出現(xiàn)頻率和對應代碼復雜度共同決定漏洞存在的風險大??;