本發(fā)明屬于信息技術(shù)、計算機軟件技術(shù)領(lǐng)域,具體涉及一種基于機器學(xué)習(xí)的linux-kernel關(guān)聯(lián)cve職能預(yù)測方法。
背景技術(shù):
linux是一種開源電腦操作系統(tǒng)內(nèi)核。它是一個用c語言寫成,符合posix標(biāo)準(zhǔn)的類unix操作系統(tǒng)。linux最早是由芬蘭黑客linustorvalds為嘗試在英特爾x86架構(gòu)上提供免費的類unix操作系統(tǒng)而開發(fā)的。該計劃開始于1991年,在計劃的早期有一些minix黑客提供了協(xié)助,而今天全球無數(shù)程序員正在為該計劃無償提供幫助。
由于linux的開源性,針對linux進(jìn)行漏洞分析預(yù)測的方法層出不窮,主要包括靜態(tài)源碼分析,動態(tài)運行時分析。但到目前為止,還沒有基于機器學(xué)習(xí)的對linux討論郵件數(shù)據(jù)進(jìn)行分析從而對linux相關(guān)漏洞進(jìn)行自動化預(yù)測的方法。因此本發(fā)明為從linux討論郵件數(shù)據(jù)中進(jìn)行自動化漏洞預(yù)測提供了一種方法,能夠更早的發(fā)現(xiàn)漏洞,并且給出漏洞預(yù)測結(jié)果的詳細(xì)說明,供安全人員參考。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于填補目前對linux討論郵件數(shù)據(jù)進(jìn)行分析從而實現(xiàn)對linux相關(guān)漏洞進(jìn)行自動化預(yù)測的技術(shù)空白,提出一種通過機器學(xué)習(xí)的方法從linux討論郵件數(shù)據(jù)中建立模型,從而對新的郵件數(shù)據(jù)進(jìn)行自動化漏洞預(yù)測的方法,該方法可以及早發(fā)現(xiàn)linux內(nèi)核中可能存在的漏洞信息,并給出判定為可能導(dǎo)致漏洞的詳細(xì)說明供安全人員參考。
為實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
一種基于機器學(xué)習(xí)的linux-kernel關(guān)聯(lián)cve(commonvulnerabilities&exposures,公共漏洞和暴露)智能預(yù)測方法,其步驟包括:
1)從linux討論郵件數(shù)據(jù)發(fā)布網(wǎng)站(http://lkml.iu.edu/hypermail/linux/kernel/)上爬取1995.06.01~2015.12.31的全部數(shù)據(jù),根據(jù)郵件討論主題存入mysql數(shù)據(jù)庫;
2)對數(shù)據(jù)進(jìn)行人工標(biāo)注,按照討論主題內(nèi)容與cve描述內(nèi)容的吻合度,cve中提供的參考鏈接中的文本描述內(nèi)容,使用lsi算法進(jìn)行文本相似度計算的計算結(jié)果等信息將討論主題人工標(biāo)注為cve相關(guān)和cve不相關(guān),標(biāo)注過程中對每一條數(shù)據(jù)進(jìn)行三次標(biāo)注,若三次標(biāo)注結(jié)果不一致,則重新標(biāo)注該條數(shù)據(jù)以確保標(biāo)注信息的準(zhǔn)確性;
3)隨機抽取1/2的cve相關(guān)討論主題郵件數(shù)據(jù)和隨機抽取部分cve不相關(guān)討論主題郵件數(shù)據(jù),采用機器學(xué)習(xí)的svm算法進(jìn)行訓(xùn)練,得到cve漏洞預(yù)測分類模型,在svm模型中采用字符串核函數(shù)(stringkernelfunction)進(jìn)行訓(xùn)練;
4)使用剩余1/2的cve相關(guān)討論主題和隨機抽取部分cve不相關(guān)討論主題對第二步訓(xùn)練獲得的svm模型進(jìn)行測試和調(diào)優(yōu),具體調(diào)優(yōu)過程為根據(jù)測試數(shù)據(jù)集上的準(zhǔn)確率和召回率對模型參數(shù)不斷進(jìn)行改變,以獲得最好結(jié)果的最終模型為準(zhǔn);
5)提供自動化的cve漏洞預(yù)測模型,對新的郵件數(shù)據(jù)進(jìn)行自動化預(yù)測,提供預(yù)測結(jié)果和結(jié)果說明,供安全人員參考。
進(jìn)一步地,步驟1)爬取數(shù)據(jù)時需使用phpquery將每封郵件的標(biāo)題、詳細(xì)內(nèi)容、發(fā)送者、發(fā)送時間存入mysql數(shù)據(jù)庫。
進(jìn)一步地,步驟2)對數(shù)據(jù)進(jìn)行人工標(biāo)注時需綜合考慮cve的描述信息,cve的參考鏈接中的文本描述信息,以及使用lsi算法對郵件數(shù)據(jù)和cve描述信息進(jìn)行文本相似度計算的結(jié)果信息。
進(jìn)一步地,步驟3)隨機抽取的cve不相關(guān)主題數(shù)量為cve相關(guān)主題數(shù)量的2倍。
進(jìn)一步的,步驟3)中對svm模型進(jìn)行訓(xùn)練時數(shù)據(jù)預(yù)處理生成每條郵件數(shù)據(jù)的特征向量的方法為:首先對所有的郵件進(jìn)行分詞,停詞,去重后建立一個大詞袋,按字典順序排序,然后對單條郵件數(shù)據(jù)進(jìn)行分詞、停詞,統(tǒng)計詞袋中每一個詞在該單條郵件出現(xiàn)的頻次,將詞袋中對應(yīng)詞的值置為詞出現(xiàn)的頻次即得到該條郵件數(shù)據(jù)的特征向量。如:假設(shè)已經(jīng)爬取到n條郵件數(shù)據(jù),記為m={m(1),m(2),m(3)....m(n)},對m中的每一個元素進(jìn)行分詞,停詞,記m(i)經(jīng)過分詞,停詞后得到的關(guān)鍵詞為集合w(i),則大詞袋w=w(1)∪w(2)∪w(3)∪....∪w(n),對w按字典順序進(jìn)行排序后得到ws。則對第i條郵件數(shù)據(jù)的特征向量λ(i)有,λ(i)=[λ(i)(1),λ(i)(2),λ(i)(3)……λ(i)(|ws|)],其中|ws|表示ws中元素的個數(shù),λ(i)(j)表示第i條郵件數(shù)據(jù)對應(yīng)關(guān)鍵詞j的特征值。λ(i)(j)的具體取值方法為,若關(guān)鍵詞j在郵件i中出現(xiàn),則λ(i)(j)=p,p表示關(guān)鍵詞j在郵件i中出現(xiàn)的頻次;若關(guān)鍵詞j不在郵件i中出現(xiàn),則λ(i)(j)=0。進(jìn)一步地,步驟4)對svm模型進(jìn)行測試和調(diào)優(yōu)的方法為不斷重復(fù)步驟3)和步驟4)直到取得較好的測試結(jié)果。
進(jìn)一步地,步驟5)所述的漏洞預(yù)測模型即為不斷重復(fù)步驟3)和步驟4)后獲得的svm模型,預(yù)測結(jié)果分為cve相關(guān)和cve不相關(guān)兩種,結(jié)果說明包括各個特征對預(yù)測結(jié)果造成的影響。
進(jìn)一步地,步驟5)所述結(jié)果說明地生成方式采用法向量和偏置項與新郵件特征向量的乘積過程每一次乘積結(jié)果進(jìn)行保存來生成。即對f(x)=wx+b的內(nèi)積乘法每一次乘積結(jié)果進(jìn)行保存,利用保存的乘積結(jié)果來說明預(yù)測結(jié)果中每一項帶來的影響。如:假設(shè)新的郵件數(shù)據(jù)經(jīng)過數(shù)據(jù)預(yù)處理后得到的特征向量為x=(0,0,0,2,0,1,1,1),經(jīng)過步驟3)和步驟4)訓(xùn)練后得到的svm模型的法向量w=(0.3,0.4,0.5,0.3,0.4,0.5,0.3,0.4),偏置項b=0.5,則保存的中間乘積為[0,0,0,0.6,0,0.5,0.3,0.4],然后對中間乘積結(jié)果按照大小從大到小進(jìn)行排序,得到[0.6,0.5,0.4,0.3,0,0,0,0],設(shè)0.6對應(yīng)單詞為a,0.5對應(yīng)單詞為b,0.4對應(yīng)單詞為c,0.3對應(yīng)單詞為a,因為f(x)=2.3>1,所以判定為cve相關(guān),則預(yù)測結(jié)果中每一項帶來的影響的說明格式為,由于郵件數(shù)據(jù)中出現(xiàn)了a兩次,b一次,c一次,d一次,對判定結(jié)果帶來的影響分別為(0.6+0.5)/2.3,(0.5+0.5)/2.3,(0.4+0.5)/2.3,(0.3+0.5)/2.3,所以該條郵件數(shù)據(jù)可能導(dǎo)致cve漏洞,請密切關(guān)注。
進(jìn)一步地,特征是指主題的發(fā)起者,主題回復(fù)的時間間隔,主題回復(fù)的回復(fù)者,主題的郵件內(nèi)容關(guān)鍵詞,主題的回復(fù)郵件內(nèi)容關(guān)鍵詞。
與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:
本發(fā)明提出一種基于機器學(xué)習(xí)的linux-kernel關(guān)聯(lián)cve智能預(yù)測方法。通過對linux討論郵件數(shù)據(jù)進(jìn)行人工標(biāo)注后,使用svm的機器學(xué)習(xí)方法進(jìn)行模型訓(xùn)練,從而實現(xiàn)對新的討論郵件數(shù)據(jù)進(jìn)行自動化分類為cve相關(guān)和cve不相關(guān)兩類郵件,并給出分類結(jié)果的說明,為從linux討論郵件數(shù)據(jù)中及早發(fā)現(xiàn)漏洞信息提供了一種方法。
附圖說明
圖1是實施例的基于機器學(xué)習(xí)的linux-kernel關(guān)聯(lián)cve智能預(yù)測方法的流程圖。
圖2是實施例的cve智能預(yù)測的各個處理模塊示意圖。
圖3是實施例中對爬取的郵件數(shù)據(jù)進(jìn)行人工標(biāo)注的流程圖。
圖4是實施例中svm模型的訓(xùn)練流程圖。
具體實施方式
下面結(jié)合附圖,通過實施例對本發(fā)明作進(jìn)一步的說明。
本實施例的基于機器學(xué)習(xí)的linux-kernel關(guān)聯(lián)cve智能預(yù)測方法,其總體流程如圖1所示,各個處理模塊如圖2所示,該方法主要包括以下步驟:
1)爬取linux討論郵件數(shù)據(jù),并進(jìn)行人工標(biāo)注為cve相關(guān)和cve不相關(guān)
具體地,對爬取的linux討論郵件數(shù)據(jù)進(jìn)行人工標(biāo)注,形成訓(xùn)練數(shù)據(jù)集的步驟流程如圖3所示,具體說明如下:
1a)提取討論主題下的所有郵件的標(biāo)題,發(fā)送者,發(fā)送時間,郵件內(nèi)容的關(guān)鍵詞提取、各個回復(fù)之間的間隔時間以及郵件所在的網(wǎng)頁鏈接,轉(zhuǎn)到1b)。
1b)判斷郵件所在網(wǎng)頁鏈接是否在cve參考鏈接中,是則標(biāo)注為cve相關(guān),否則轉(zhuǎn)到1c)。
1c)人工閱讀郵件正文內(nèi)容和cve的描述信息,根據(jù)郵件內(nèi)容所述事實和cve描述信息內(nèi)容判定該討論主題是否與cve相關(guān)
2)利用1)標(biāo)注得到的數(shù)據(jù)集,訓(xùn)練svm模型。
具體地,訓(xùn)練svm模型的步驟流程如圖4所示,具體說明如下:
2a)根據(jù)1)中的郵件討論數(shù)據(jù)標(biāo)注結(jié)果,隨機抽取1/2cve相關(guān)郵件和2倍于cve相關(guān)郵件的cve不相關(guān)郵件形成訓(xùn)練集,轉(zhuǎn)到2b)。
2b)使用1)中郵件討論數(shù)據(jù)中隨機抽取1/2剩余部分和2倍于cve相關(guān)郵件的cve不相關(guān)郵件形成測試集,轉(zhuǎn)到2c)。
2c)對訓(xùn)練集使用機器學(xué)習(xí)的svm算法進(jìn)行模型訓(xùn)練,得到中間的svm模型,轉(zhuǎn)到2d)
2d)使用2b)形成的測試集對2c)得到的臨時svm模型進(jìn)行測試,對測試結(jié)果進(jìn)行評估,若召回率和準(zhǔn)確率達(dá)到滿意值則該svm模型即為最終svm模型,否則轉(zhuǎn)到2a)。
3)利用2)得到的svm模型對新的linux討論主題下的郵件進(jìn)行自動化分類和自動化形成分類結(jié)果說明;
具體地,自動化分類和自動化分類結(jié)果說明的步驟流程如圖2所示,具體說明如下:
3a)提取討論主題下的所有郵件的標(biāo)題,發(fā)送者,發(fā)送時間,郵件內(nèi)容的關(guān)鍵詞提取、各個回復(fù)之間的間隔時間以及郵件所在的網(wǎng)頁鏈接,轉(zhuǎn)到3b)。
3b)利用3a)得到的數(shù)據(jù)和2)得到的svm模型形成特征向量,轉(zhuǎn)到3c)。
3c)將3b)得到的特征向量作為輸入輸入給svm模型,得到預(yù)測結(jié)果,轉(zhuǎn)到3d)。
3d)對特征向量中各個特征對預(yù)測結(jié)果帶來的影響進(jìn)行計算,并形成預(yù)測結(jié)果說明。
以上實施例僅用于說明本發(fā)明的技術(shù)方案而非對其進(jìn)行限制,本領(lǐng)域的普通技術(shù)人員可以對本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,本發(fā)明的保護范圍應(yīng)以權(quán)利要求所述為準(zhǔn)。