專利名稱::一種基于聚類的軟件漏洞序列特征的分析方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種基于聚類的軟件漏洞序列特征的分析方法,屬于信息安全
技術(shù)領(lǐng)域:
。
背景技術(shù):
:隨著黑客攻擊事件數(shù)量的不斷上升,蠕蟲在Internet上的泛濫,信息安全逐漸成為人們眼中的焦點(diǎn)。信息安全中的一個(gè)核心問題就是存在于計(jì)算機(jī)系統(tǒng)中的軟件安全漏洞,惡意的攻擊者可以利用這些安全漏洞提升權(quán)限,訪問未授權(quán)資源,甚至破壞敏感數(shù)據(jù)。計(jì)算機(jī)軟件的普遍應(yīng)用帶給人們?cè)絹碓蕉嗟谋憬?,并日益影響人們的日常生活,但?jì)算機(jī)軟件中存在大量的錯(cuò)誤及漏洞,隱藏著巨大的風(fēng)險(xiǎn)。阻止系統(tǒng)攻擊和入侵的根本解決途徑是在軟件缺陷被利用之前發(fā)現(xiàn)并進(jìn)行分析和研究。任何系統(tǒng)或軟件的運(yùn)行都會(huì)假定一個(gè)安全域,這個(gè)安全域是由安全策略規(guī)定的,在該域內(nèi)的任何操作都是安全的、可控的,一旦超出該域或者違反了安全策略,系統(tǒng)或軟件的運(yùn)行就是不可控的、未知的。漏洞是由安全域切換到非安全域的觸發(fā)點(diǎn)。漏洞是靜態(tài)的、被動(dòng)的、可觸發(fā)的。一般而言,一條漏洞信息包括漏洞名稱、漏洞級(jí)別、漏洞成因、漏洞影響、漏洞描述、受影響的系統(tǒng)、未受影響的系統(tǒng)、漏洞解決方案、漏洞利用類型和漏洞利用方法等,此外還要考慮漏洞來源、漏洞發(fā)布日期、漏洞參考信息等。現(xiàn)有的軟件漏洞序列特征的分析方法有Petri網(wǎng)分析法,故障樹分析法,粗糙集理論分析法,神經(jīng)網(wǎng)絡(luò)分析法等。但是,由于軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列特征是相當(dāng)龐大的,這使得針對(duì)待測軟件的疑似漏洞序列的特征分析很困難,而傳統(tǒng)軟件漏洞序列特征分析方法沒有對(duì)軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列進(jìn)行聚類分析,因此,針對(duì)待測軟件的疑似漏洞序列的特征分析效率較低。本發(fā)明使用的重要的已有技術(shù)有K-means算法和Needleman-Wunsch算法。K-means算法是J.B.MacQueen于1967年提出的一種經(jīng)典的基于分區(qū)的聚類算法,該算法利用K劃分策略對(duì)數(shù)據(jù)集進(jìn)行分區(qū),得到的每個(gè)分區(qū)代表一個(gè)聚類。在科學(xué)和工業(yè)等應(yīng)用領(lǐng)域產(chǎn)生了深遠(yuǎn)影響。K-means算法的實(shí)現(xiàn)步驟如下1.任意選擇K個(gè)數(shù)據(jù)序列作為初始聚類簇中的數(shù)據(jù)序列的中心序列;2.根據(jù)聚類簇中數(shù)據(jù)序列的中心序列,計(jì)算中心序列與序列數(shù)據(jù)庫D中序列的相似度,將每個(gè)序列分配給最相似的聚類簇結(jié)構(gòu);3.更新每個(gè)聚類簇的中心序列,重復(fù)步驟二,直到聚類結(jié)果不再變化,獲得最終的聚類簇結(jié)構(gòu)。Needleman-Wunsch算法是Needleman和Wunsch于1970年提出的串行求解雙序列全局比對(duì)問題的經(jīng)典算法。該算法基于動(dòng)態(tài)規(guī)劃算法并在其基礎(chǔ)上進(jìn)行改進(jìn),在序列全長范圍內(nèi)將序列的相似度進(jìn)行比對(duì),為全局序列比對(duì)提供了可行的操作方案。Needleman-Wunsch算法的實(shí)現(xiàn)步驟如下1.首先構(gòu)建得分矩陣;2.根據(jù)所建得分矩陣,求解序列S和T的前綴子序列的最優(yōu)值;3.然后求解更大規(guī)模的子序列的最優(yōu)值,直到求得序列S和T的最優(yōu)值;4.其次利用各階段最優(yōu)比對(duì)得分矩陣構(gòu)造最優(yōu)比對(duì);5.最終獲得最優(yōu)比對(duì)的兩條序列。
發(fā)明內(nèi)容本發(fā)明的目的是提出一種基于聚類的軟件漏洞序列特征的分析方法。本發(fā)明首先利用已有的軟件漏洞序列,創(chuàng)建軟件漏洞序列數(shù)據(jù)庫;然后應(yīng)用聚類技術(shù)分析數(shù)據(jù)庫中的軟件漏洞序列,產(chǎn)生多個(gè)軟件漏洞序列聚類簇;通過相似度計(jì)算,找到與待測軟件的疑似漏洞序列最相近的軟件漏洞序列聚類簇;并采用序列比對(duì)方法將待測軟件的疑似漏洞序列與最相近的軟件漏洞序列聚類簇中的所有軟件漏洞序列進(jìn)行比對(duì),進(jìn)一步找到此軟件漏洞序列聚類簇中與待測軟件的疑似漏洞序列最相似的軟件漏洞序列;最終,將此最相似的軟件漏洞序列在軟件漏洞序列數(shù)據(jù)庫中所對(duì)應(yīng)的相關(guān)漏洞信息作為安全報(bào)告輸出。本發(fā)明的目的是通過下述技術(shù)方案實(shí)現(xiàn)的。首先給出相關(guān)概念的定義定義1軟件漏洞序列是指會(huì)導(dǎo)致漏洞產(chǎn)生的一個(gè)有序的程序操作序列。定義2待測軟件的疑似漏洞序列是指程序經(jīng)過靜態(tài)分析后,疑似為軟件漏洞序列、需分析其漏洞原因的序列。定義3項(xiàng)集是組成軟件漏洞序列的最小元素的集合;軟件漏洞序列的最小元素(也稱為項(xiàng))是形式化表述漏洞特征的符號(hào);形式化表示為L={lply…,1J,其中,L為項(xiàng)集,lp12,…,lm為組成軟件漏洞序列的最小元素。定義4序列對(duì)從項(xiàng)集中任意選取兩個(gè)項(xiàng),并且選取的兩個(gè)項(xiàng)的排列順序與其在項(xiàng)集中的先后順序保持一致,則稱這兩個(gè)項(xiàng)的組合為序列對(duì);形式化表示為ek=<j)。本發(fā)明的一種基于聚類的軟件漏洞序列特征的分析方法的具體操作步驟如下步驟一、利用已有的軟件漏洞序列數(shù)據(jù),創(chuàng)建軟件漏洞序列數(shù)據(jù)庫。收集已有漏洞檢測工具檢測到的軟件漏洞序列數(shù)據(jù),創(chuàng)建軟件漏洞序列數(shù)據(jù)庫。軟件漏洞序列數(shù)據(jù)庫用D表示,包含已確定的軟件漏洞產(chǎn)生時(shí)的運(yùn)行序列。D是元組〈SID,S,INF,CID〉的集合,其中SID是該軟件漏洞序列的序列號(hào),S是軟件漏洞序列,INF是該軟件漏洞序列的相關(guān)漏洞信息,CID是該軟件漏洞序列的聚類號(hào),是為了對(duì)軟件漏洞序列進(jìn)行聚類分析而設(shè)定的字段,以實(shí)現(xiàn)用不同的聚類號(hào)來表示漏洞序列屬于不同的類。步驟二、采用聚類技術(shù)對(duì)軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列進(jìn)行分類。其具體操作步驟如下第1步對(duì)步驟一建立的軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列進(jìn)行預(yù)處理;其具體操作步驟為①根據(jù)軟件漏洞序列數(shù)據(jù)庫D包含的項(xiàng)集L,獲得軟件漏洞序列數(shù)據(jù)庫中包含的序列對(duì)的集合E={ei,e2,…,ek},ek=l山.(i<j);②對(duì)于每個(gè)軟件漏洞序列,用一組與序列對(duì)的集合E等長的向量進(jìn)行描述,如果軟件漏洞序列中包含序列對(duì)ek,其對(duì)應(yīng)的向量值為1;否則,其對(duì)應(yīng)的向量值為0;第2步采用聚類技術(shù)對(duì)第1步預(yù)處理后獲得的軟件漏洞序列進(jìn)行聚類。采用K-means算法的具體操作如下①定義軟件漏洞序列聚類簇結(jié)構(gòu)每個(gè)軟件漏洞序列聚類簇結(jié)構(gòu)&由一個(gè)三維數(shù)組表示&={Xi,(countn,counti2,…,countin),;其中,i為正整數(shù),1《i《K,是軟件漏洞序列聚類簇的編號(hào),K為人為定義的聚類簇的數(shù)量;Xi={xn,xi2,,xin}是軟件漏洞序列聚類簇的中心序列,是一個(gè)n維向量,n為正整數(shù),取值為項(xiàng)集中的序列對(duì)的數(shù)量;co皿tik是每個(gè)軟件漏洞序列聚類簇中包含序列對(duì)ek的序列的個(gè)數(shù)A為該軟件漏洞序列聚類簇中包含的軟件漏洞序列。②任意選擇K個(gè)軟件漏洞序列作為初始軟件漏洞序列聚類簇中軟件漏洞序列的中心序列;③根據(jù)軟件漏洞序列聚類簇中軟件漏洞序列的中心序列,計(jì)算軟件漏洞序列的中心序列與軟件漏洞序列數(shù)據(jù)庫中軟件漏洞序列的相似度,將每個(gè)軟件漏洞序列分類給最相似的軟件漏洞序列聚類簇結(jié)構(gòu);④應(yīng)用軟件漏洞序列聚類簇的中心序列的獲取方法,獲取新的更新中心序列,更新每個(gè)軟件漏洞序列聚類簇的中心序列,重復(fù)③,直到聚類結(jié)果不再變化,獲得最終的軟件漏洞序列聚類簇結(jié)構(gòu)。所述軟件漏洞序列聚類簇的中心序列的獲取方法為為每個(gè)序列對(duì)ek定義一個(gè)最小支持度閾值9j(1《j《n),若軟件漏洞序列聚類簇&內(nèi)序列對(duì)ek的平均支持度大于等于9j,認(rèn)為序列對(duì)ek是軟件漏洞序列聚類簇Ci內(nèi)軟件漏洞序列的特征屬性,Xik取l;否則,認(rèn)為屬性ek是軟件漏洞序列聚類簇&內(nèi)軟件漏洞序列的非特征屬性,Xik取0;如公式1所示。=<<formula>formulaseeoriginaldocumentpage6</formula>其中,|Cj表示&中序列的個(gè)數(shù)。③中所述軟件漏洞序列的中心序列與軟件漏洞序列數(shù)據(jù)庫中軟件漏洞序列的相似度通過公式2計(jì)算其中,Pl.S表示軟件漏洞序列Pl所支持的序列對(duì)的集合;p2.s表示軟件漏洞序列P2所支持的序列對(duì)的集合。步驟三、從待測軟件的源程序中抽取待測軟件的疑似漏洞序列;步驟四、尋找與待測軟件的疑似漏洞序列最相似的軟件漏洞序列聚類簇對(duì)待測軟件的疑似漏洞序列與每個(gè)軟件漏洞序列聚類簇的中心序列計(jì)算相似度,找到與其最相似的軟件漏洞序列聚類簇Cj(1《j《K);如果該疑似漏洞序列不屬于任何一個(gè)軟件漏洞序列聚類簇,說明該待測軟件的疑似漏洞序列序列是一個(gè)安全的運(yùn)行序列,結(jié)束操作;如果該疑似漏洞序列屬于軟件漏洞序列聚類簇Cj,轉(zhuǎn)到步驟五。所述待測軟件的疑似漏洞序列與每個(gè)軟件漏洞序列聚類簇的中心序列相似度的計(jì)算方法與軟件漏洞序列中心序列與軟件漏洞序列數(shù)據(jù)庫中軟件漏洞序列的相似度計(jì)算方法相同。步驟五、應(yīng)用序列比對(duì)技術(shù)將待測軟件的疑似漏洞序列和軟件漏洞序列聚類簇Cj中的每個(gè)軟件漏洞序列進(jìn)行序列比對(duì),得到與其最相似的軟件漏洞序列Sj。步驟六、將軟件漏洞序列數(shù)據(jù)庫中與待測軟件的疑似漏洞序列最相似的軟件漏洞序列Sj所對(duì)應(yīng)的漏洞信息INF作為安全報(bào)告輸出。有益效果本發(fā)明方法通過對(duì)軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列進(jìn)行聚類,待測軟件的疑似漏洞序列只與獲得的軟件漏洞序列聚類簇中K個(gè)中心序列進(jìn)行相似度度量,得到與其最相似的一個(gè)軟件漏洞序列聚類簇,鎖定待測軟件的疑似漏洞序列的特征范圍,直接排除其它(K-l)個(gè)軟件漏洞序列聚類簇中的軟件漏洞序列的特征,進(jìn)一步采用序列比對(duì)方法判斷待測軟件的疑似漏洞序列與最相似的軟件漏洞序列聚類簇中的哪條軟件漏洞序列最相似,最終確定該待測軟件的疑似漏洞序列的漏洞信息。本發(fā)明提高了軟件漏洞序列的分析效率,對(duì)于大規(guī)模漏洞序列數(shù)據(jù)集的操作,本發(fā)明的優(yōu)點(diǎn)會(huì)更加突出。圖1為本發(fā)明具體實(shí)施方式的一種基于聚類的軟件漏洞序列特征的分析方法的流程示意圖;圖2為本發(fā)明具體實(shí)施方式中的S和S3的Needleman-Wunsch算法計(jì)算過程示意圖;圖3為本發(fā)明具體實(shí)施方式中的S和S5的Needleman-Wunsch算法計(jì)算過程示意圖。具體實(shí)施例方式下面結(jié)合具體實(shí)施方式對(duì)本發(fā)明技術(shù)方案進(jìn)行詳細(xì)描述。本發(fā)明的一種基于聚類的軟件漏洞序列特征的分析方法的流程示意圖如圖1所示,具體操作步驟如下步驟一、利用已有的軟件漏洞序列數(shù)據(jù),創(chuàng)建軟件漏洞序列數(shù)據(jù)庫,如表1所示。表1軟件漏洞序列數(shù)據(jù)庫<table>tableseeoriginaldocumentpage7</column></row><table><table>tableseeoriginaldocumentpage8</column></row><table>步驟二、采用聚類技術(shù)對(duì)軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列進(jìn)行分類。第1步對(duì)軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列進(jìn)行預(yù)處理;預(yù)處理軟件漏洞序列后,軟件漏洞序列數(shù)據(jù)庫中存儲(chǔ)的10條軟件漏洞序列被形式化為9維向量,如表2所示。表2預(yù)處理軟件漏洞序列<table>tableseeoriginaldocumentpage8</column></row><table><table>tableseeoriginaldocumentpage9</column></row><table>第2步采用聚類技術(shù)對(duì)第1步經(jīng)過預(yù)處理后獲得的軟件漏洞序列進(jìn)行聚類。采用K-means算法對(duì)軟件漏洞序列進(jìn)行聚類,設(shè)置K=3,先假定前3條軟件漏洞序列序列為3個(gè)軟件漏洞序列聚類簇&,(:2,(:3的中心序列。計(jì)算后面的7條軟件漏洞序列和3個(gè)軟件漏洞序列聚類簇Q,C2,C3的中心序列的相似度,更新軟件漏洞序列聚類簇的中心序列,相似度閾值設(shè)定為0.5。軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列被分為Q,C2,C3共3個(gè)軟件漏洞序列聚類簇,被分配到軟件漏洞序列聚類簇Q中的軟件漏洞序列為S4,S9;被分配到軟件漏洞序列聚類簇G中的軟件漏洞序列為S2,S7;被分配到軟件漏洞序列聚類簇(:3中的軟件漏洞序列為S3,S5,S6,S8,S10,iQ,c2,c3的中心序列分別為s4,s2,s3。步驟三、從待測軟件的源程序中抽取待測軟件的疑似漏洞序列;步驟四、對(duì)待測軟件的疑似漏洞序列Si與每個(gè)軟件漏洞序列聚類簇的中心序列計(jì)算相似度。待測軟件的疑似漏洞序列S=ABCBABB。軟件漏洞序列S4的向量表示為p4={0,1,l,O,1,1,1,1,1},根據(jù)序列相似度的定義,分別計(jì)算S4與軟件漏洞序列SnS2,S3的相似度,可得Sim(Pl,p4)=1/9,Sim(p2,p4)=0/7,Sim(p3,p4)=4/8,且三者之中最大的Sim(p3,p4)=4/8>0.5,因此,將S4分配到以S3為中心的軟件漏洞序列聚類簇C3中。軟件漏洞序列S5的向量表示為p5={0,0,0,0,1,l,O,1,1},分別計(jì)算Ss與軟件漏洞序列SnS2,S3的相似度,可得Sim(Pl,p5)=4/9,Sim(p2,p5)=1/9,Sim(p3,p5)=7/8,且三者之中最大的Sim(p3,p5)=7/8>0.5,因此,將S5分配到以S3為中心的軟件漏洞序列聚類簇Q中。軟件漏洞序列S6的向量表示為p6={0,1,1,1,1,l,O,1,0},分別計(jì)算S6與軟件漏洞序列SnS2,S3的相似度,可得Sim(Pl,p6)=4/8,Sim(p2,p6)=2/7,Sim(p3,p6)=6/8,且三者之中最大的Sim(p3,p6)=6/8>0.5,因此,將S6分配到以S3為中心的軟件漏洞序列聚類簇Q中。同理可得,Sim(P2,p》=3/5>0.5,S7分配到以S2為中心序列的軟件漏洞序列聚類簇C2中;Sim(p3,p8)=5/8>0.5,S8分配到以S3為中心序列的軟件漏洞序列聚類簇C3中;Sim(p2,p7)=1>0.5,S9分配到以為中心序列的軟件漏洞序列聚類簇Q中;Sim(p3,Pi。)=5/8>o.5,Si。分配到以S3為中心序列的軟件漏洞序列聚類簇C3中。因此,經(jīng)過第一輪軟件漏洞序列間的相似度計(jì)算后,被分配到軟件漏洞序列聚類簇Q中的軟件漏洞序列有S工,S9;被分配到軟件漏洞序列聚類簇C2中的軟件漏洞序列有S2,S7;被分配到軟件漏洞序列聚類簇(:3中的軟件漏洞序列有S3,S4,S5,S6,S8,Sw,下面進(jìn)行第二輪計(jì)算。根據(jù)K-means算法思想,要保證K個(gè)軟件漏洞序列聚類簇內(nèi)相似度高,且軟件漏洞序列聚類簇間相似度低,進(jìn)一步更新K個(gè)軟件漏洞序列聚類簇的中心序列。因?yàn)镾im(Pl,p3)=5/8>0.5,而Sim(p3,p4)=4/8<5/8,因此,軟件漏洞序列聚類簇Q的中心序列更新為S4,S工被分配到軟件漏洞序列聚類簇C3中,而軟件漏洞序列聚類簇C3的中心序列也需進(jìn)一步選取。在軟件漏洞序列S3,S4,S5,S6,S8,S1Q中,通過兩兩計(jì)算相似度,重新獲得軟件漏洞序列聚類簇Q的中心序列,最終,得到軟件漏洞序列Sd乃然為更新后的中心序列。因此,采用K-means算法對(duì)漏洞序列庫中的序列進(jìn)行聚類處理后,可知10條軟件漏洞序列被劃分為3個(gè)軟件漏洞序列聚類簇,軟件漏洞序列S4,S9被分配到軟件漏洞序列聚類簇Q中;軟件漏洞序列S2,S7被分配到軟件漏洞序列聚類簇C2中;軟件漏洞序列S15S3,S5,S6,S8,S1Q被分配到軟件漏洞序列聚類簇C3中。且3個(gè)軟件漏洞序列聚類簇Q,C2,C3的中心序列分別為S4,S2,S3。假設(shè)待測軟件的疑似漏洞序列S=ABCBABB,下面將待測軟件的疑似漏洞序列S與軟件漏洞序列聚類簇Q,C2,C3的中心序列S4,S2,S3分別進(jìn)行相似度計(jì)算,判斷待測軟件的疑似漏洞序列S與哪個(gè)軟件漏洞序列聚類簇最為相似。已知軟件漏洞序列S4=CBCBCC,S2=ABA,S3=BCACCB,p4={0,0,0,0,1,l,O,1,1},P2={l,l,0,l,0,0,0,0,0},p3={0,1,1,1,1,1,1,1,1},首先,將待測軟件的疑似漏洞序列S=ABCBABB轉(zhuǎn)換為9維向量表示,序列對(duì)集合為{AA,AB,AC,BB,BA,BC,CA,CB},p={1,1,1,1,1,1,1,1,0}。通過相似度計(jì)算,Sim(p,p4)=3/9,Sim(p,p2)=3/8,Sim(p,p3)=7/9,且三者之中最大的Sim(p,p3)=7/9>0.5,表明待測軟件的疑似漏洞序列S與軟件漏洞序列聚類簇Q最為相似。步驟五、應(yīng)用Needleman-Wunsch算法將待測軟件的疑似漏洞序列S和軟件漏洞序列聚類簇Cj中的每個(gè)軟件漏洞序列進(jìn)行序列比對(duì),得到與其最相似的軟件漏洞序列Sj。Needleman-Wunsch算法的實(shí)現(xiàn)步驟如下第1步首先構(gòu)建(m+l)*(n+l)得分矩陣;第2步根據(jù)所建得分矩陣,求解待測軟件的疑似漏洞序列S和與其最相似的軟件漏洞序列聚類簇Cj中的軟件漏洞序列Sj的前綴子序列的最優(yōu)值;第3步然后求解更大規(guī)模子序列的最優(yōu)值,直到求得序列S和Sj的最優(yōu)值;第4步其次利用各階段最優(yōu)比對(duì)得分矩陣構(gòu)造最優(yōu)比對(duì);第5步最終獲得與待測軟件的疑似漏洞序列S最優(yōu)比對(duì)的軟件漏洞序列。采用Needleman-Wunsch算法將待測軟件的疑似漏洞序列S和軟件漏洞序列聚類簇Q中的軟件漏洞序列SnS3,S5,S6,S8,S1Q進(jìn)行序列比對(duì),得到與其最相似的軟件漏洞序列。其中S丄=ACBAA,S3=BCACCB,S5=CABCBCCB,S6=BACBB,S8=BCBA,S10=BBCBA。S和S3的Needleman-Wunsch算法計(jì)算過程如圖2所示;S和S5的Needleman-Wunsch算法計(jì)算過程如圖3所示。根據(jù)上面的待測軟件的疑似漏洞序列S和軟件漏洞序列S3,S5的Needleman-Wunsch算法計(jì)算過程示意圖,對(duì)待測軟件的疑似漏洞序列S和軟件漏洞序列聚類簇Q中的軟件漏洞序列S3,S15S5,S6,S8,S1Q進(jìn)行匹配,通過插入"_"來表示插入或刪除相對(duì)應(yīng)的字符而得到軟件漏洞序列之間的最大相似性排列。Si和S的最優(yōu)比對(duì)為S丄A_CBA__S:ABCBABBSs和S的最優(yōu)比對(duì)為S3:_BC__B_S:ABCBABBS和Ss的最優(yōu)比對(duì)為S:_ABCB__BS5:CABCBCCBSe和S的最優(yōu)比對(duì)為S6:_B___BBS:ABCBABBSs和S的最優(yōu)比對(duì)為S8:_BCBA__S:ABCBABBS^和S的最優(yōu)比對(duì)為S10:_B_B_B_S:ABCBABB因此,待測軟件的疑似漏洞序列s與軟件漏洞序列聚類簇c3中的軟件漏洞序列s5最為相似。步驟六、將軟件漏洞序列數(shù)據(jù)庫中與待測軟件的疑似漏洞序列最相似的軟件漏洞序列Sj所對(duì)應(yīng)的漏洞信息INF作為安全報(bào)告輸出。由于待測軟件的疑似漏洞序列S與軟件漏洞序列聚類簇C3中的軟件漏洞序列S5最為相似,進(jìn)一步從表1軟件漏洞序列數(shù)據(jù)庫中抽取軟件漏洞序列Ss所對(duì)應(yīng)的相關(guān)漏洞信息INF為來源校驗(yàn)錯(cuò)誤,因此,可以判定待測軟件的疑似漏洞序列S的漏洞特征為來源校驗(yàn)錯(cuò)誤,并以安全報(bào)告形式輸出。1權(quán)利要求一種軟件漏洞特征操作序列的提取方法,其特征在于具體操作步驟如下步驟一、利用已有的軟件漏洞序列數(shù)據(jù),創(chuàng)建軟件漏洞序列數(shù)據(jù)庫;軟件漏洞序列數(shù)據(jù)庫含有軟件漏洞序列的相關(guān)漏洞信息;步驟二、采用聚類技術(shù)對(duì)軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列進(jìn)行分類;其具體操作步驟如下第1步對(duì)步驟一建立的軟件漏洞序列數(shù)據(jù)庫中的軟件漏洞序列進(jìn)行預(yù)處理;其具體操作步驟為①根據(jù)軟件漏洞序列數(shù)據(jù)庫D包含的項(xiàng)集L,獲得軟件漏洞序列數(shù)據(jù)庫中包含的序列對(duì)的集合E={e1,e2…,ek},ek=lilj,其中i<j;②對(duì)于每個(gè)軟件漏洞序列,用一組與序列對(duì)的集合E等長的向量進(jìn)行描述,如果軟件漏洞序列中包含序列對(duì)ek,其對(duì)應(yīng)的向量值為1;否則,其對(duì)應(yīng)的向量值為0;第2步采用聚類技術(shù)對(duì)第1步預(yù)處理后獲得的軟件漏洞序列進(jìn)行聚類;步驟三、從待測軟件的源程序中抽取待測軟件的疑似漏洞序列;步驟四、尋找與待測軟件的疑似漏洞序列最相似的軟件漏洞序列聚類簇對(duì)待測軟件的疑似漏洞序列與每個(gè)軟件漏洞序列聚類簇的中心序列計(jì)算相似度,找到與其最相似的軟件漏洞序列聚類簇Cj,1≤j≤K;如果該疑似漏洞序列不屬于任何一個(gè)軟件漏洞序列聚類簇,說明該待測軟件的疑似漏洞序列序列是一個(gè)安全的運(yùn)行序列,結(jié)束操作;如果該疑似漏洞序列屬于軟件漏洞序列聚類簇Cj,轉(zhuǎn)到步驟五;步驟五、應(yīng)用序列比對(duì)技術(shù)將待測軟件的疑似漏洞序列和軟件漏洞序列聚類簇Cj中的每個(gè)軟件漏洞序列進(jìn)行序列比對(duì),得到與其最相似的軟件漏洞序列Sj;步驟六、將軟件漏洞序列數(shù)據(jù)庫中與待測軟件的疑似漏洞序列最相似的軟件漏洞序列Sj所對(duì)應(yīng)的漏洞信息作為安全報(bào)告輸出。2.如權(quán)力要求1所述的一種軟件漏洞特征操作序列的提取方法,其特征在于步驟二第2步采用K-means算法對(duì)第1步預(yù)處理后獲得的軟件漏洞序列進(jìn)行聚類的具體操作步驟如下①定義軟件漏洞序列聚類簇結(jié)構(gòu)每個(gè)軟件漏洞序列聚類簇結(jié)構(gòu)Ci由一個(gè)三維數(shù)組表示:Ci={Xi,(countn,counti2,…,countin),Sj;其中,i為正整數(shù),1《i《K,是軟件漏洞序列聚類簇的編號(hào),K為人為定義的聚類簇的數(shù)量;Xi二{Xil,xi2,…,xj是軟件漏洞序列聚類簇的中心序列,是一個(gè)n維向量,n為正整數(shù),取值為項(xiàng)集中的序列對(duì)的數(shù)量;co皿tik是每個(gè)軟件漏洞序列聚類簇中包含序列對(duì)ek的序列的個(gè)數(shù);Si為該軟件漏洞序列聚類簇中包含的軟件漏洞序列;②任意選擇K個(gè)軟件漏洞序列作為初始軟件漏洞序列聚類簇中軟件漏洞序列的中心序列;③根據(jù)軟件漏洞序列聚類簇中軟件漏洞序列的中心序列,計(jì)算軟件漏洞序列的中心序列與軟件漏洞序列數(shù)據(jù)庫中軟件漏洞序列的相似度,將每個(gè)軟件漏洞序列分類給最相似的軟件漏洞序列聚類簇結(jié)構(gòu);④應(yīng)用軟件漏洞序列聚類簇的中心序列的獲取方法,獲取新的更新中心序列,更新每個(gè)軟件漏洞序列聚類簇的中心序列,重復(fù)③,直到聚類結(jié)果不再變化,獲得最終的軟件漏洞序列聚類簇結(jié)構(gòu);所述軟件漏洞序列聚類簇的中心序列的獲取方法為為每個(gè)序列對(duì)ek定義一個(gè)最小支持度閾值9j,1《j《n,若軟件漏洞序列聚類簇Ci內(nèi)序列對(duì)ek的平均支持度大于等于9j,認(rèn)為序列對(duì)ek是軟件漏洞序列聚類簇Ci內(nèi)軟件漏洞序列的特征屬性,Xik取1;否則,認(rèn)為屬性ek是軟件漏洞序列聚類簇&內(nèi)軟件漏洞序列的非特征屬性,xik取0;如公式1所示;<formula>formulaseeoriginaldocumentpage3</formula>其中,|Ci|表示Ci中序列的個(gè)數(shù)。3.如權(quán)力要求1或2所述的一種軟件漏洞特征操作序列的提取方法,其特征在于步驟二第2步中③所述軟件漏洞序列的中心序列與軟件漏洞序列數(shù)據(jù)庫中軟件漏洞序列的相似度以及步驟四中所述的待測軟件的疑似漏洞序列與每個(gè)軟件漏洞序列聚類簇的中心序列相似度通過公式2獲得(2)其中,Pps表示軟件漏洞序列Pl所支持的序列對(duì)的集合;P2.s表示軟件漏洞序列P2所支持的序列對(duì)的集合。4.如權(quán)力要求1或2所述的一種軟件漏洞特征操作序列的提取方法,其特征在于步驟五中所述的序列比對(duì)技術(shù)為Needleman-Wunsch算法;其實(shí)現(xiàn)步驟如下第1步構(gòu)建(m+l)*(n+l)得分矩陣;第2步根據(jù)所建得分矩陣,求解待測軟件的疑似漏洞序列S和與其最相似的軟件漏洞序列聚類簇Cj中的軟件漏洞序列Sjm的前綴子序列的最優(yōu)值;第3步然后求解更大規(guī)模子序列的最優(yōu)值,直到求得序列S和Sjm的最優(yōu)值;第4步其次利用各階段最優(yōu)比對(duì)得分矩陣構(gòu)造最優(yōu)比對(duì);第5步最終獲得與待測軟件的疑似漏洞序列S最優(yōu)比對(duì)的軟件漏洞序列。全文摘要本發(fā)明公開一種基于聚類的軟件漏洞序列特征的分析方法,屬于信息安全
技術(shù)領(lǐng)域:
。本發(fā)明首先利用已有的軟件漏洞序列,創(chuàng)建軟件漏洞序列數(shù)據(jù)庫;然后應(yīng)用聚類技術(shù)分析數(shù)據(jù)庫中的軟件漏洞序列,產(chǎn)生多個(gè)軟件漏洞序列聚類簇;通過相似度計(jì)算,找到與待測軟件的疑似漏洞序列最相近的軟件漏洞序列聚類簇;并采用序列比對(duì)方法將待測軟件的疑似漏洞序列與最相近的軟件漏洞序列聚類簇中的所有軟件漏洞序列進(jìn)行比對(duì),進(jìn)一步找到此軟件漏洞序列聚類簇中與待測軟件的疑似漏洞序列最相似的軟件漏洞序列;最終,將此最相似的軟件漏洞序列在軟件漏洞序列數(shù)據(jù)庫中所對(duì)應(yīng)的相關(guān)漏洞信息作為安全報(bào)告輸出。本發(fā)明提高了軟件漏洞序列的分析效率。文檔編號(hào)G06F11/36GK101739337SQ20091024189公開日2010年6月16日申請(qǐng)日期2009年12月14日優(yōu)先權(quán)日2009年12月14日發(fā)明者任家東,吳迪,李立寧,王崑聲,胡昌振申請(qǐng)人:北京理工大學(xué)