国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于激活漏洞能力條件的軟件漏洞自動分類框架

2019-06-14 05:47王飛雪
關(guān)鍵詞:開發(fā)人員分類器漏洞

王飛雪,李 芳

(1.重慶人文科技學(xué)院 計算機(jī)工程學(xué)院, 重慶 401524; 2.重慶大學(xué) 計算機(jī)學(xué)院, 重慶 400044)

隨著軟件系統(tǒng)的發(fā)展,軟件漏洞識別變得越來越重要[1-3]。能導(dǎo)致未經(jīng)授權(quán)的用戶破壞系統(tǒng)安全策略的特定類型的缺陷稱為漏洞或安全漏洞。漏洞是信息系統(tǒng)安全領(lǐng)域的重大威脅[4]。例如,2012年,F(xiàn)LAME病毒攻擊了中東地區(qū)使用微軟操作系統(tǒng)的計算機(jī),該病毒利用操作系統(tǒng)的數(shù)字簽名欺騙漏洞進(jìn)行自我隱藏[5]。計算機(jī)應(yīng)急響應(yīng)小組稱,軟件開發(fā)中的大量漏洞是在其他系統(tǒng)中重復(fù)檢測到的漏洞。

目前,關(guān)于安全漏洞和缺陷分類策略分析方面的文獻(xiàn)較少。對影響失效再現(xiàn)性條件的缺陷分類的研究中,在軟件bug類型方面引入了兩個定義[6-8]:① 玻爾bug(bohr bug,BB),在測試階段容易再現(xiàn)的bug; ② 曼德博bug(mandel bug,MB),在測試階段難以重現(xiàn)的bug。BB是可預(yù)知的,其激活和錯誤傳播并不復(fù)雜。如果讓軟件在相同條件下運行, bug可以再次顯現(xiàn)。MB是另一種類型的軟件缺陷,具有復(fù)雜的故障激活或錯誤傳播條件,在復(fù)雜條件下觸發(fā),且沒有規(guī)律,不容易重現(xiàn)。采用BB和MB分類法來解決安全性缺陷,從重現(xiàn)性角度分析漏洞。在本文中,具有BB和MB特征的安全漏洞分別稱為BV(bohr vulnerability)和MV(mandel vulnerability)。

對于缺陷分類,文獻(xiàn)[9]通過文本挖掘bug數(shù)據(jù)庫提出了一種隱藏影響bug識別方法,利用錯誤報告的文本描述來提取文本信息,文本挖掘過程中提取錯誤報告的語法信息并壓縮信息以便于操作,然后利用壓縮信息生成呈現(xiàn)給分類器的特征向量。文獻(xiàn)[10] 提出了手動分類的自動替代方法,能根據(jù)漏洞描述自動對漏洞進(jìn)行分類,并使用神經(jīng)網(wǎng)絡(luò)和樸素貝葉斯方法評估了該方法。文獻(xiàn)[11]中提出了一種新的軟件漏洞分類方法,該方法基于漏洞特征,包括錯誤或資源消耗的累積、嚴(yán)格的時序要求以及環(huán)境與軟件之間復(fù)雜的交互。

對于軟件缺陷分類的研究,文獻(xiàn)[12]中提出一種軟件缺陷檢測和分類方法,并集成數(shù)據(jù)挖掘技術(shù)對大型軟件庫中的缺陷進(jìn)行識別和分類。文獻(xiàn)[13]提出了一種名為USES的基于文本挖掘的解決方案,用于根據(jù)故障觸發(fā)器的概念對錯誤進(jìn)行分類,該方法適用于文本錯誤報告、BB和MB分類以及USES分類。由于文本中可能存在噪聲,這兩種技術(shù)無法提供準(zhǔn)確的結(jié)果,基于錯誤報告的分類方法性能高度依賴術(shù)語選擇和噪聲消除的有效性。

針對軟件漏洞分類中存在的問題,本文提出一種軟件漏洞分類框架,它能夠有效區(qū)分BV和MV,從文本報告和漏洞代碼修復(fù)中提取特征,然后采用不同的機(jī)器學(xué)習(xí)技術(shù)(隨機(jī)森林、C4.5決策樹、Logistic回歸和樸素貝葉斯)來構(gòu)建靜態(tài)模型,選擇具有最高F值(精確度和召回的加權(quán)平均值)的模型來識別未見漏洞的類別。該方法評估了從Bugzilla收集的Mozilla Firefox發(fā)布的580個發(fā)布后漏洞(發(fā)布后發(fā)生的漏洞)。結(jié)果表明:該方法可以通過C4.5決策樹獲得69%MV的F值。所提框架能夠識別風(fēng)險文件,指導(dǎo)開發(fā)人員增加對故障部件的測試工作。

1 軟件漏洞分類框架

本文軟件漏洞分類框架包括兩個階段:訓(xùn)練階段和部署階段。訓(xùn)練階段將一組漏洞與漏洞報告、漏洞代碼修復(fù)和已知漏洞類別相關(guān)聯(lián)。由于所有特征可能不適合區(qū)分MV和BV,因此找到了最相關(guān)的特征。不同機(jī)器學(xué)習(xí)算法(隨機(jī)森林、C4.5決策樹、Logistic回歸和樸素貝葉斯)被用來建立適當(dāng)?shù)姆诸?。選擇具有最高F值的分類器,并將其傳遞到部署階段。

部署階段有2個輸入:訓(xùn)練階段的模型和未知類別的漏洞,用于提取對漏洞進(jìn)行分類的最具辨別力特征的值。最終,確定漏洞是否屬于BV或MV類別。軟件漏洞分類框架具體過程見圖1。

圖1 軟件漏洞自動分類框架

1.1 文本特征提取

在大多數(shù)軟件問題研究中,未明確提及激活漏洞的條件,而本文研究中分析了可能與激活條件具有直接或間接關(guān)系的特征。某些特征已成功用于缺陷分類,如修復(fù)時間和嚴(yán)重性應(yīng)用在分析大型OSS(開源軟件)項目的bug報告中,安全漏洞位置可以作為漏洞分類的分析維度。本文選擇4個主要維度:修復(fù)時間(time to fix,TTFX)、開發(fā)人員、安全漏洞位置和嚴(yán)重性,挖掘漏洞報告的不同部分,包括標(biāo)題、描述和摘要,以方便使用Python腳本和C代碼提取特征。具有相應(yīng)提取機(jī)制的特征將在以下內(nèi)容中描述。

1) 修復(fù)時間(TTFX):TTFX是開發(fā)人員用于解決安全問題的時間段,可以顯示漏洞對安全缺陷管理的影響。由于MV在再現(xiàn)安全性故障方面比BV更復(fù)雜,因此MV可能需要比BV更長的TTFX。

提取機(jī)制:在漏洞存儲庫中,當(dāng)檢測到安全性故障時,將時間記錄為報告日期(reported date,RD)。當(dāng)它被修復(fù)時,時間被報告為修改日期(modified date,MD)。在MD和RD之間的時間內(nèi),漏洞已打開,該時間段包括4個任務(wù):① 由開發(fā)人員重現(xiàn)安全故障;② 認(rèn)識其根本原因;③ 實施和測試所提出的修復(fù)方法;④通過測試驗證修復(fù)方法。雖然MV的預(yù)期TTFX由于其性質(zhì)而高于BV,但不應(yīng)預(yù)先判斷比較。假設(shè)有時漏洞的TTFX可能受到其他因素的影響,例如:涉及的開發(fā)人員可能同時忙于處理大量漏洞,因此,下一個特征考慮了開發(fā)人員的角色。

2) 開發(fā)人員:此特征演示了開發(fā)人員與漏洞類型之間的關(guān)聯(lián)。具有兩個子集:開發(fā)人員數(shù)量(number of developers,NOD)和開發(fā)人員體驗(developer experience,DE)

開發(fā)人員數(shù)量:NOD衡量修復(fù)漏洞所需的安全專家人數(shù)。本文假設(shè)具有復(fù)雜激活條件的漏洞會吸引更多開發(fā)人員。

開發(fā)人員體驗:本文假設(shè)對于難以重現(xiàn)的安全問題,安全測試人員或?qū)<业闹R可以有效地處理類似問題,經(jīng)歷過大量MV的開發(fā)人員可能比其他人能更專業(yè)地解決復(fù)雜的漏洞。

提取機(jī)制:為了識別NOD,計算編寫注釋并嘗試解決安全問題的唯一開發(fā)人員的數(shù)量。有時開發(fā)人員可能會寫1個以上的評論,本文只計算1次。提取分配了漏洞的專家開發(fā)人員(expert developer,ED)的名稱,當(dāng)確定所有漏洞的ED時,檢查數(shù)據(jù)集以確定每個ED解決了多少漏洞。

3) 位置:位置維度表示漏洞出現(xiàn)的位置,位置可以是組件、版本、模塊或文件。提取機(jī)制:在大多數(shù)漏洞存儲庫中,明確記錄了發(fā)生安全漏洞的組件和版本。本研究中,根據(jù)文件識別系統(tǒng)的易受攻擊部分。版本或模塊對于統(tǒng)計分析來說很大,細(xì)節(jié)提取機(jī)制在1.2節(jié)中描述。

4) 嚴(yán)重性:嚴(yán)重性發(fā)現(xiàn)漏洞是否被利用,其后果是從用戶的角度來看嚴(yán)重程度,可以具有不同的級別,例如崩潰、數(shù)據(jù)丟失和內(nèi)存泄漏。否定此特征背后的動機(jī)是實現(xiàn)最終用戶是否因BV和MV引起的安全故障而感知到不同的行為。提取機(jī)制:開發(fā)人員從各自的角度報告每起安全性故障的嚴(yán)重性,可以直接從漏洞數(shù)據(jù)庫的字段中提取此特征值。

1.2 代碼特征提取

以確定源代碼和漏洞類型之間的更改和修復(fù)之間的相關(guān)性定義代碼特征提取部分。代碼修復(fù)的復(fù)雜性是MV復(fù)雜性的一個主要原因,為了測量漏洞代碼修復(fù)的定量復(fù)雜度,提取了3個特征:改變文件的數(shù)量(number of changed files,NOC-F)、改變代碼行的數(shù)量(number of changed (added/deleted) line of code,NOC-LOC)和漏洞修復(fù)熵(vulnerability fix entropy,VFE)。

1) 更改文件數(shù):在軟件系統(tǒng)中,大多數(shù)故障屬于少量模塊。復(fù)雜的代碼X過程需要大量的變化,識別潛在易受攻擊系統(tǒng)的某些部分對測試人員和質(zhì)量管理人員有較大的幫助,這可以指導(dǎo)軟件開發(fā)團(tuán)隊增加對易出現(xiàn)漏洞的系統(tǒng)部分的測試工作,從而提高下一版本中軟件的安全性,還可滿足時間和預(yù)算限制。

2) 更改代碼行的數(shù)量(添加/刪除):假設(shè)更多更改的代碼行來解決安全問題與更多的代碼復(fù)雜度相關(guān)。

3) 漏洞修復(fù)熵:要解決安全問題,可能需要更改多個文件(例如,添加和刪除)。開發(fā)人員通過許多修改來遵循修復(fù)過程并不容易。假設(shè)MV復(fù)雜性的一個原因可能與修復(fù)過程的復(fù)雜性有關(guān),與簡單漏洞BV相比,修復(fù)復(fù)雜漏洞MV可能涉及許多文件,因此預(yù)計MV具有高熵。

提取機(jī)制:漏洞數(shù)據(jù)庫不存儲有關(guān)代碼修復(fù)的信息,本文使用Mercurial分布式源代碼管理工具(一個分布式修訂控制系統(tǒng))來提取有關(guān)源代碼的信息。在本地系統(tǒng)復(fù)制Mozilla Firefox源代碼后下載其提交日志,然后應(yīng)用文本挖掘算法將安全問題映射到已更改的文件。

尋找到數(shù)據(jù)集中的漏洞后,存儲其相關(guān)字段(如父項,日期,文件和摘要)以提取代碼特征。這種集成方法取決于開發(fā)人員的評論,在修訂控制系統(tǒng)中,進(jìn)行了許多更改以增強(qiáng)系統(tǒng)的一部分而不解決任何安全問題。本文專注于C/C++及其頭文件,其他文件類型(如腳本和配置)將被排除在外,從而為每個有風(fēng)險的文件提取代碼特征。在為數(shù)據(jù)集中的漏洞提取風(fēng)險文件后,使用版本控制工具的diff命令來獲取NOC-LOC。

基于已更改文件列表及其對應(yīng)的NOC-LOC,通過應(yīng)用Shannon熵計算漏洞修正熵,定義為:

(1)

其中:v是1個漏洞;n是變化文件的數(shù)量;pi是特定文件i的發(fā)生概率,其被改變以修復(fù)漏洞v。當(dāng)所有文件具有相同的概率值時,熵是最大的(Hn(v)=1),pi=1/n?i∈(1,2,…,n),這意味著大量的文件被改變。另一方面,當(dāng)只有漏洞集中在一個文件中時,熵將是最小的(Hn(v)=0)。為了計算每個漏洞的熵,使用具有相應(yīng)NOC-LOC的改變文件,然后將Shannon的熵應(yīng)用于漏洞熵。漏洞熵的計算過程如下:

通過更改fileA和fileB來解決問題。在fileA中分別添加2行和刪除5行代碼,共7個變化。在fileB中添加4行和刪除1行代碼,共5個變化。為了計算每個文件的概率,將其改變的LOC除以所有更改的行(在這種情況下為12),則有p(fileA)=7/12,p(fileA)=5/12。為了標(biāo)準(zhǔn)化香農(nóng)熵,將等式除以ln(n)。對于該過程,歸一化的Shannons熵是0.980 864。如果所有變化分散在12個更改行而不是2個更改行上,則漏洞x的熵變?yōu)?。

1.3 判別特征選擇與模型生成

所有維度可能沒有足夠的能力來區(qū)分BV和MV類別,這是因為不相關(guān)或冗余的特征會降低分類器的效率和性能。為了解決這個問題,使用Fisher得分(或Fisher內(nèi)核)識別最相關(guān)的特征。該技術(shù)基于標(biāo)準(zhǔn)偏差和特征平均值計算分?jǐn)?shù),通過等式(2)分別計算每個特征的Fisher得分來判別維度。

(2)

在表示具有最具辨別力的漏洞特征之后,需要知道它們與漏洞類型(BV或MV)的關(guān)系,其他系統(tǒng)的關(guān)系可能會發(fā)生變化。模型構(gòu)建器部分的目標(biāo)是構(gòu)建一個可以根據(jù)特征向量學(xué)習(xí)每個類的特征的分類器。

將1組具有對應(yīng)類別(BV或MV)的輸入給予系統(tǒng)以訓(xùn)練模型;然后,模型根據(jù)數(shù)據(jù)集中實例的特征來學(xué)習(xí)BV和MV特征。提供各種機(jī)器學(xué)習(xí)算法用于構(gòu)建模型,每種算法對輸入數(shù)據(jù)做不同的假設(shè),這些假設(shè)會影響分類的性能,不同的技術(shù)有不同的性能。

選擇幾種經(jīng)典機(jī)器學(xué)習(xí)算法,包括隨機(jī)森林(random forest,RF)、C4.5決策樹、Logistic回歸(logistic regression,LR)和樸素貝葉斯(naive bayes,NB),在Weka工具包(懷卡托環(huán)境知識分析)中使用默認(rèn)參數(shù)值實現(xiàn)。

類別預(yù)測器部分使用分類器來標(biāo)識未見漏洞的類別。對于分類器的選擇,采用上述幾種經(jīng)典學(xué)習(xí)算法中性能最優(yōu)的算法來實現(xiàn)類別預(yù)測。通過對分類指標(biāo)的分析,計算漏洞屬于BV或MV的可能性,最后選擇具有最高概率的類別。

2 實驗結(jié)果與分析

使用MFSA(mozilla foundation security advisory)解決安全問題??紤]到用戶數(shù)量(大約2.7億)和代碼行(每個版本有超過200萬LOC)數(shù)量,本研究選擇數(shù)量較大的Mozilla Firefox項目,從不同版本收集安全缺陷,以確保特定版本不會影響分類器。

軟件漏洞分析中大多數(shù)漏洞屬于以下類別:① 內(nèi)存錯誤:內(nèi)存故障會導(dǎo)致內(nèi)存損壞、內(nèi)存安全錯誤和內(nèi)存泄漏;② 空指針:可能導(dǎo)致分割故障;③ 驗證初始化檢查:在沒有任何適當(dāng)初始化的情況下使用資源可能導(dǎo)致信息泄漏或分段錯誤;④ 競爭條件:允許鎖定或鏈接系統(tǒng)資源;⑤ 訪問控制:操作允許獲得適當(dāng)?shù)臋?quán)限以獲得對整個資源的控制。

2005年1月21日——2015年1月13日收集了MFSA中與上述類別相關(guān)的軟件漏洞。盡管假設(shè)在測試階段可以檢測到BV并將其消除,但Mozilla Firefox有非漏洞與BV相關(guān)的釋放后漏洞數(shù)量可忽略不計。一個可能的原因是大型系統(tǒng)的實際測試?yán)щy,或者沒有足夠的測試技術(shù)。此外,擴(kuò)展或修改項目可能給系統(tǒng)帶來新的漏洞。在本文研究中,BV和MV的分布幾乎相似,53%和47%的漏洞分別屬于BV和MV。此外,檢測到漏洞的主要比例(725中的702個)屬于內(nèi)存。BV和MV分布取決于所分析系統(tǒng)的性質(zhì)、系統(tǒng)與硬件設(shè)備或與其開發(fā)的語言交互的頻率。對于使用C/C++開發(fā)的系統(tǒng),由于內(nèi)存由開發(fā)人員管理,所以更容易出現(xiàn)與內(nèi)存相關(guān)的漏洞。

在提取特征值之后,判別特征選擇器部分為其計算Fisher分?jǐn)?shù),然后選擇具有大分?jǐn)?shù)的排名靠前的相關(guān)特征,如表1所示。

表1 TOP判別特征

盡管MV顯示出比BV更復(fù)雜的行為,但由MV引起的感知安全性失敗與由于開發(fā)者的BV導(dǎo)致的安全性失敗沒有顯著差異。本文使用10折交叉驗證來進(jìn)行實驗,其中數(shù)據(jù)集被分為10份,模型學(xué)習(xí)9份,評估1份,所有正確分類實例的平均值表示模型的準(zhǔn)確性。評估指標(biāo)包括準(zhǔn)確率、精確率、召回率和F值。

準(zhǔn)確率(Accuracy)表示正確的分類率,在本研究中表示所有漏洞中正確分類的BV和MV的數(shù)量。

(3)

精確率Precision表示正確分類到所有分類漏洞的比例作為目標(biāo)類別,精度是衡量分類器有效性的重要指標(biāo)。

(4)

召回率Recall也稱為檢測概率,表示正確分類的漏洞與屬于目標(biāo)類別的所有實際漏洞的比例。具有高召回率的模型具有發(fā)現(xiàn)更多漏洞的能力。

(5)

式(3)~(5)中,TP表示被歸類為MV的漏洞數(shù)量,它們都是真正的MV;FP表示被歸類為MV的漏洞數(shù)量,它們是真正的BV;TN表示被歸類為BV的漏洞數(shù)量,它們是真正的BV;FN表示被歸類為BV的漏洞數(shù)量,它們是真正的MV。

F值表示精確度與召回率的加權(quán)調(diào)和平均值,召回率和精確度的值不可能同時較高,因此本文采用F值進(jìn)行最終判斷。

(6)

不同分類算法的性能比較結(jié)果如表2所示。由于基于安全性失敗重現(xiàn)性的漏洞分類沒有相關(guān)工作,將結(jié)果與缺陷分類研究結(jié)果進(jìn)行比較,將其分為BB和MB。

表2 不同分類算法的性能比較 %

所有分類算法的準(zhǔn)確度均超過56.8%,表示基于文本報告和代碼修復(fù)定義度量的效率。具有67%準(zhǔn)確度的C4.5決策樹,可以識別69%的MV。在漏洞分類中,將BV錯誤地視為MV相比不檢測MV更好,因為它們可以保留在系統(tǒng)中并導(dǎo)致嚴(yán)重的安全故障。

因此得出結(jié)論,決策樹方法在準(zhǔn)確性和F值方面比其他方法獲得了更好的結(jié)果。主要原因在于其簡單性和對數(shù)據(jù)集中噪聲的魯棒性。具有67%準(zhǔn)確度的C4.5決策樹可以識別69%的MV。由此認(rèn)為,在漏洞分類中,將BV錯誤地視為MV相比檢測不到MV更好,因為BV在系統(tǒng)中將導(dǎo)致嚴(yán)重的安全故障。

為了體現(xiàn)本文方法的有效性,將本文算法與文獻(xiàn)[13]基于自然語言描述分析缺陷方法進(jìn)行比較。分類器使用C4.5,實驗數(shù)據(jù)庫為Redhat Bugzilla數(shù)據(jù)集,結(jié)果見表3。

表3 不同軟件漏洞算法的性能比較 %

從表中數(shù)據(jù)可得:無論機(jī)器學(xué)習(xí)方法的類型如何,根據(jù)文本錯誤報告,文獻(xiàn)[13]計算的F值范圍為29.8%~61.5%,而本文方法獲得MV的F值在48.3%~70.7%范圍內(nèi),說明了本文方法的有效性。

3 結(jié)束語

本文提出一種自動軟件漏洞分類框架以區(qū)分BV和MV。該方法基于文本報告和代碼修復(fù)定義一組特征,使用不同的機(jī)器學(xué)習(xí)技術(shù)來構(gòu)建分類器,選擇具有最高F值的分類器實現(xiàn)分類判別。解決方案對Mozilla Firefox項目收集的580個漏洞進(jìn)行了評估。結(jié)果顯示,具有十折交叉實驗結(jié)果的C4.5決策樹實現(xiàn)了最高的F值(69%)識別不可見漏洞類別。此外,該框架能夠檢測包含BV和MV的文件。與其他方法相比,本文方法在準(zhǔn)確性和MV識別性能方面優(yōu)于現(xiàn)有方法,證明了本文方法的有效性。在下一步工作中,將根據(jù)軟件復(fù)雜性指標(biāo)研究BV和MV特征。

猜你喜歡
開發(fā)人員分類器漏洞
漏洞
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
基于差異性測度的遙感自適應(yīng)分類器選擇
基于實例的強(qiáng)分類器快速集成方法
三明:“兩票制”堵住加價漏洞
漏洞在哪兒
高鐵急救應(yīng)補(bǔ)齊三漏洞
后悔了?教你隱藏開發(fā)人員選項
基于層次化分類器的遙感圖像飛機(jī)目標(biāo)檢測
一種基于置換的組合分類器剪枝方法