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

?

雙粒度輕量級漏洞代碼切片方法評估模型

2021-12-08 03:04:26張炳文崢趙宇軒王苧任家東
通信學報 2021年11期
關鍵詞:漏洞分類器切片

張炳,文崢,趙宇軒,王苧,任家東

(1.燕山大學信息科學與工程學院,河北 秦皇島 066004;2.河北省軟件工程重點實驗室,河北 秦皇島 066004)

1 引言

漏洞代碼切片,旨在分解大規(guī)模項目源碼為僅含有漏洞相關代碼的較小代碼切片,并以此消除復雜軟件項目中不相關源碼對漏洞檢測結(jié)果的干擾[1-2]。漏洞代碼切片新方法的有效性需要經(jīng)過模型評估來證明。目前,漏洞檢測場景中代碼切片方法評估模型分為編碼模型和機器學習模型兩類:編碼模型以Word2Vec、詞袋模型、詞頻?逆文檔頻率(TF-IDF,term frequency-inverse document frequency)算法[3]為代表;機器學習模型以支持向量機(SVM,support vector machine)、隨機森林(RN,random forest)、樸素貝葉斯(NB,naive Bayes)等傳統(tǒng)模型為主,循環(huán)神經(jīng)網(wǎng)絡(RNN,recurrent neural network)、長短期記憶網(wǎng)絡(LSTM,long short-term memory)、雙向長短期記憶網(wǎng)絡(BLSTM,bi-directional long short-term memory)等深度學習模型為輔[4]。

然而,現(xiàn)有漏洞代碼切片方法評估模型存在以下3 個主要問題。

1) 代碼切片信息抽取不徹底。代碼切片具有豐富的語義與結(jié)構(gòu)信息,對這些信息進行全面、高效的提取,是評估代碼切片方法有效性的前提。雖然SVM、RN 等傳統(tǒng)機器學習模型收斂速度快、內(nèi)存占用小,但是文本形式的代碼切片需要經(jīng)過復雜的詞嵌入過程才能作為此類模型的輸入。并且,在詞嵌入后的模型訓練過程中,單一的傳統(tǒng)機器學習分類器會將不符合或偏離正常模型的切片數(shù)據(jù)視為噪聲,在訓練階段將其忽略,導致漏洞的觸發(fā)環(huán)境、破壞方式、關鍵數(shù)據(jù)等代碼切片中的隱含信息將在特征縮放、特征編碼、模型訓練等多個步驟中大量流失。而這些信息恰恰是比較不同切片方法優(yōu)劣的關鍵。ELMo[5]、Bert[6]等深度學習方法雖然自身集成了詞嵌入過程,但其不僅在訓練過程需要大量標注數(shù)據(jù)與高性能計算的支持,在使用時也需投入一定的模型微調(diào)時間。

2) 模型復雜度高且泛化能力差。只有解決詞嵌入問題,才能使基于自然語言處理(NLP,natural language processing)的深度學習代碼切片評估模型以代碼切片序列作為模型輸入。而解決未登錄詞(OOV,out of vocabulary)問題是解決代碼詞嵌入問題的關鍵[7]。在實際漏洞檢測場景中,存在因代碼序列中出現(xiàn)了訓練數(shù)據(jù)集中未出現(xiàn)過的單詞,而導致編碼失敗的現(xiàn)象,即OOV。由于軟件開發(fā)者可以在編寫程序時自由定義標識符,因此建立包含所有標志符的代碼語料庫,直接將NLP 領域的方法遷移至代碼切片評估中,會導致詞表爆炸問題[6],代碼語料庫將會無限大。而通過固定標識符替代不常見詞匯,不僅不能縮小詞匯表,反而會進一步惡化OOV問題[8]。顯然,為每個漏洞代碼切片方法評估任務人工定制代碼語料庫的解決辦法具有較高的復雜度與極差的泛化能力,將給研究者帶來冗余的研究負荷。

3) 模型評估過程開環(huán)無反饋。適用于NLP 的深度學習模型無法可解釋地遷移到代碼切片方法評估領域。假設代碼切片中出現(xiàn)代表文件名稱的自定義標識符“GPFilename”。無論是將該文件名分解為“GP、Fil、en、ames”[6],還是直接將該標識符映射為“Var_n”,都犧牲了原代碼的可解釋性,丟失了代碼切片的語義信息。同時,雖然現(xiàn)有代碼切片方法評估模型輸出的準確率、馬修斯相關系數(shù)、F1 值等指標仍可以描述新切片方法對漏洞檢測效果的提升程度,但研究者只能基于黑盒的評估模型判斷新切片方法是否有效,卻無法獲取新方法為什么有效、如何改進新方法的相關信息,難以明確人工驗證與改進方向。

針對上述問題,本文創(chuàng)新性地提出了雙粒度輕量級漏洞代碼切片方法評估(VCSE,vulnerability code slicing evaluation)模型,主要包括以下方法。

1) 雙粒度提取代碼切片特征。通過字符、單詞雙層次N-gram[9]模型,捕捉不同粒度、不同窗口大小的單詞與字符混合特征,選擇性地保留代碼切片中相關語義依賴,以統(tǒng)計模型及自然語言處理模型視角獲得切片代碼的離散表示,避免建立龐大的代碼詞匯表。最終,以字、詞雙粒度刻畫代碼切片特征,從而在特征提取階段更徹底的保留代碼切片中隱含的漏洞信息。

2) 輕量級多模型集成分類。在詞嵌入階段,將TF-IDF 算法融入N-gram 模型,以每個Gram 對應的TF-IDF 值作為詞向量分量,在代碼切片向量化的同時繞過OOV 問題。在嵌入后數(shù)據(jù)處理階段,通過構(gòu)造和組合多個簡單機器學習分類器來完成學習任務。利用不同基礎分類器的優(yōu)勢和異構(gòu)性[10],有效提高模型的預測精度和泛化能力,減少單一分類器帶來的誤差。最終,研究者可以更快地迭代自身切片方法,或在更短的時間內(nèi)嘗試其他切片技術。

3) 切片檢測結(jié)果解釋反饋。針對分類正確的代碼切片,結(jié)合其向量表征與對應特征組合,輸出該切片中N-gram 模型捕獲到的漏洞標識詞組。從而明確被正確分類的代碼切片的突出特征,輔助研究者進一步刪減代碼切片中干擾項,優(yōu)化切片方法。

實驗證明,針對代碼切片評估任務,相較于以Word2Vec[11]、CodeBERT[12]、GraphcodeBERT[13]為代表的已完成超大規(guī)模代碼預訓練的深度學習模型,VCSE 基于改進后的N-gram 模型,以TF-IDF 向量表征代碼切片,通過輕量級的異質(zhì)集成模型即可有效判定代碼切片是否包含漏洞,并給出判定依據(jù)。

2 相關工作

對漏洞代碼進行切片能夠使代碼中間表征更細致地刻畫漏洞特征[14],而任何一種漏洞切片方法均需要經(jīng)過恰當?shù)脑u估模型證明其有效性。Li等[15]提出了一種只保留內(nèi)存讀寫相關代碼的切片方法,并通過BLSTM 神經(jīng)網(wǎng)絡模型評估該切片方法的有效性。μVulDeePecker[16]改進了Li 等[15]提出的代碼切片的提取方式,使代碼切片能夠應用在多分類任務中,通過融合代碼注意力特征的更深層LSTM 模型進行評估,并以F1 值為評估指標證明了該切片方法在漏洞多分類任務上的有效性。SySeVR 是一種保留源代碼數(shù)據(jù)與控制依賴的代碼切片方法[17],通過對比4 種類型漏洞代碼切片前后BGRU 模型輸出的F1 值,證明了SySeVR 切片方法的有效性。

上述研究明晰了代碼切片方法有效性評估過程中的關鍵是選擇恰當?shù)拇a中間表征形式與機器學習模型。代碼中間表征形式分為度量、文本、樹和圖4 種。Chowdhury 等[18]以代碼復雜度、耦合和內(nèi)聚性等度量作為中間表征,學習漏洞代碼的度量特征。Mou 等[19]以抽象語法樹作為代碼的中間表征,基于樹結(jié)構(gòu)的卷積網(wǎng)絡捕捉源代碼的語法結(jié)構(gòu)信息。Zhou 等[20]以擴充的代碼屬性圖作為代碼的中間表征,但需借助門圖神經(jīng)網(wǎng)絡。

相較于需要專家干預的度量表征、依賴復雜機器學習模型的樹和圖表征,文本形式的中間代碼表征具有直觀、不需要代碼編譯即可獲得等良好特性。Hindle 等[21]指出編程語言同樣具有自然語言重復性、規(guī)律性、可預測性的特點,為采用自然語言處理模型分析代碼切片的文本形式中間表征提供了理論依據(jù)。Scandariato 等[22]針對源代碼將自然語言處理的文本挖掘方法首次引入軟件漏洞檢測領域。Li 等[15]、μVulDeePecker[16]、SySeVR[17]所用代碼切片評估模型均屬于自然語言處理模型,并采用詞嵌入技術表征文本形式的代碼切片。詞嵌入技術是融合自然語言處理與漏洞代碼切片文本表征的橋梁。OOV 是解決詞嵌入問題面臨的主要困難之一,且該問題在代碼嵌入問題上更加突出?,F(xiàn)有詞嵌入技術分為上下文無關的詞嵌入與基于上下文的詞嵌入2 種類型。Word2Vec、GloVe[23]等上下文無關詞嵌入方法,未能考慮單詞與上下文之間的語義關系且無法對語料庫字典外的單詞進行嵌入。ELMo[5]模型與Bert[6]模型等基于注意力機制的上下文相關的嵌入方法,全面考慮句子中的上下文信息并將其集成到單詞的表示中,并采用字節(jié)對編碼(BPE,byte pair encoding)方法處理OOV 問題,進一步拆分單詞,但是存在模型體量大、復雜度高等問題,僅用于代碼預訓練效果不佳。

因此,VCSE 選擇文本形式作為代碼的中間表征,通過N-gram 模型在考慮代碼上文依賴的同時提取代碼切片雙粒度特征,并以此作為初始語料庫?;赥F-IDF 模型完成詞序列向量化過程,從而繞過OOV 問題?;诖a切片語義及統(tǒng)計特征,設計了高精確率與泛化性能的異質(zhì)集成分類器,進行漏洞預測分析。

3 模型設計

本節(jié)首先介紹VCSE 整體研究框架,其次介紹VCSE 主體構(gòu)成部分:基于TF-IDF 改進的雙粒度N-gram 模型、基于異質(zhì)集成學習的輕量級分類器。研究框架中的評估指標、模型解釋部分因與實驗數(shù)據(jù)聯(lián)系緊密,將在第4 節(jié)實驗評估中詳細展開。

3.1 研究框架

VCSE 總體上分為基于TF-IDF 改進的雙粒度N-gram 模型和基于異質(zhì)集成學習的輕量級分類器兩部分,如圖1 所示。

1) 基于TF-IDF 改進的雙粒度N-gram 模型。以N-gram 捕獲的詞級、字符級雙粒度代碼切片語料作為初始特征組合,針對不同代碼切片,計算各對應特征分量的TF-IDF 值,替代詞嵌入過程,構(gòu)建TF-IDF 向量空間,實現(xiàn)了從代碼切片文本到實數(shù)矩陣的表示。

2) 基于異質(zhì)集成學習的輕量級分類器。利用不同分類器在性能上的優(yōu)勢和結(jié)構(gòu)上的差異,選擇對漏洞代碼切片的檢測效果較佳的邏輯回歸(LR,logistic regression)、決策樹(DT,decision tree)、SVM、RF 作為基礎分類器進行兩輪學習訓練,構(gòu)建了基于集成學習策略的異質(zhì)集成分類器。在保證整體模型輕量化的同時,有效提高了模型的準確度與泛化能力。

3.2 基于TF-IDF 改進的雙粒度N-gram 模型

N-gram 通過長度為N的滑動窗口對序列化文本進行分割,形成長度為N的特征序列,然后根據(jù)設定的頻率閾值對特征進行統(tǒng)計和過濾,形成關鍵的N-gram 特征列表,即基于文本的特征向量。N-gram 模型旨在尋找長度為n的相鄰單詞的所有組合,它不僅可以提取單個單詞,還可以提取單詞的序列,捕捉一些其他方法無法提取的潛在特征,適用于代碼切片語義信息的離散表示。

由于N-gram 模型在固定長度的窗口中分割序列化的文本,因此對代碼切片進行N-gram 特征提取時會丟失部分區(qū)分能力較強的特征。例如:代碼切片中存在函數(shù)

從src 指示的內(nèi)存地址開始,將n個字節(jié)復制到dest 指示的內(nèi)存地址。若觸發(fā)緩沖區(qū)溢出漏洞。則應滿足式(1)~式(5)。

其中,allocate 為地址分配函數(shù),src 為原內(nèi)存地址,dest 為目標內(nèi)存地址,x0、x1、、為分配到的內(nèi)存地址,n為復制字節(jié)數(shù)。

顯然,“memcpy STR len”是識別該緩沖區(qū)漏洞的關鍵特征。然而,如果基于N為1 或2 的N-gram進行特征提取,則提取的特征為“memcpy、STR、len”或“memcpy STR”“STR len”,不能準確表示漏洞特征信息。

此外,隨著N的增加,提取的特征數(shù)量將呈爆炸式增長,不利于后續(xù)的預測工作。表1 顯示了以“memcopy (buf str len)”語句為例,當N分別為1、2 和3 時,分割序列化代碼片段的實例。

表1 序列化代碼片段提取到的N-gram 特征

VCSE 采用詞級與字符級2 種窗口提取雙粒度的代碼切片信息,以保留高信息增益特征。并將TF-IDF 算法融入N-gram 模型,從而完成代碼切片文本的向量表征。

1) 高信息增益特征保留

綜合考慮不同窗口提取的特征和單詞形態(tài)對預測結(jié)果的影響,基于代碼切片提取不同粒度和不同窗口大小的詞與字符級別的N-gram 特征。詞級N-gram 模型在提取特征時以詞為單位,并忽略“(”“)”“;”等無意義定界符特征。字符特征是構(gòu)成軟件代碼的最基本元素,字符級N-gram 模型提取單詞中的標識符和字母作為補充特征,深入研究代碼切片中詞的形態(tài)構(gòu)成。綜合上述2 種提取方式,最終通過字符、詞2 種粒度獲取與漏洞緊密相關的文本特征,從而保留高信息增益特征,增強穩(wěn)健性。

2) OOV 繞過的代碼切片表征方法

為獲得文本形式的代碼切片中間表征,并解決雙粒度的N-gram 模型存在的維數(shù)災難問題,將TF-IDF 算法集成到N-gram 模型,篩選出具有更佳分類能力的特征,以特征項TF-IDF 值的計算替代了詞嵌入過程,從而避免了詞嵌入過程中存在的OOV 問題。

針對代碼切片集合提取不同窗口大小的N-gram 特征,得到詞級特征集與字符級特征集分別為

其中,D為代碼切片數(shù)據(jù)集,di(1≤i≤n)為代碼切片,tj(1≤j≤q)為提取到的特征,S1為詞級特征集,S2為字符級特征集。

在少數(shù)代碼切片中,頻繁出現(xiàn)的特征項顯然具有更好的分類能力。為賦予該類特征更高的權值,基于TF-IDF 算法計算不同特征集代碼切片的特征項頻率與逆文檔頻率,最終計算得到每個特征項的TF-IDF 值。計算方法如式(8)~式(10)所示。

其中,t fi,j、idfi分別為ti的特征項頻率與逆文檔頻率,Ni,j為特征項i出現(xiàn)在dj中次數(shù),Nh,j為dj中第h個特征項出現(xiàn)的次數(shù),tfidfi,j為第i個代碼切片的中間表征中第j個特征項的值。

為了選擇出分類能力強的特征項,分別根據(jù)TF-IDF 值的大小對詞、字符級特征集進行排序。并分別選取排名靠前的特征構(gòu)成詞、字符特征子集。最終,拼接兩子集構(gòu)成VCSE 分類特征。

其中,表示第i個詞或字符級特征對應的TF-IDF值,表示代碼切片的詞或字符級特征表示,Ssub表示拼接后的VCSE 分類特征。

最終代碼切片的文本形式中間表征如表 2所示。

表2 代碼切片的文本形式中間表征示例

3.3 基于異質(zhì)集成學習的輕量級分類器

BLSTM、Bert 等深度學習算法往往針對復雜的語意推斷與意圖識別任務而設計,將其應用于代碼切片方法的評估任務固然能獲得較高的準確率,其高復雜度卻阻礙了切片方法的快速迭代改進,且經(jīng)過BPE 算法分詞后得到的特征嚴重丟失可解釋性。而lightgbm、catboost 等基于基礎分類算法的改進算法雖然優(yōu)化了原有算法的部分缺點,但仍無法完全克服原有單一基礎分類器在某些方面存在的不足,如準確率較高但時間較長、誤報率較低但漏報率較高。模型的性能與選擇的算法和數(shù)據(jù)的特征均密切相關。對于不同代碼切片數(shù)據(jù)集,不同分類器的性能往往是不同的。為了得到各方面穩(wěn)定、高性能的模型,采用異質(zhì)集成策略學習基礎分類器的輸出結(jié)果,并利用各基礎分類器結(jié)構(gòu)和性能優(yōu)勢的多樣性,構(gòu)建穩(wěn)定、泛化能力強的預測模型。

異質(zhì)集成學習預測模型的性能主要取決于2 個因素,一個是基礎分類器的多樣性,另一個是基礎分類器的預測精度。首先,滿足多樣性,選擇LR、DT、RF、NB 和SVM 算法等廣泛應用于對比評估任務、具有較強穩(wěn)定性和適應性、在不同的指標上各有優(yōu)勢的分類算法作為基礎分類器。其次,基礎分類器的預測精度越高、結(jié)構(gòu)差異越大,最終的集成效果會越好。因此,以預測精度為過濾指標進行驗證測試,選擇SVM、LR 兩類線性模型和DT、RF 兩類非線性模型作為基本分類器。

異質(zhì)集成學習策略需要兩輪學習才能得到最終的分類器。針對同一代碼切片數(shù)據(jù)集,首先訓練不同的基本分類器。為了減少弱分類器的訓練誤差,提高模型的泛化性能和預測精度,將每個基本分類器的輸出結(jié)果作為第二輪訓練的輸入,進而得到最終分類器。由于代碼切片方法的評估任務只需檢測輸入代碼切片中是否含有相應漏洞,因此最終分類器只需完成二元分類任務。故在第二輪訓練中使用簡單、低復雜度的LR 作為分類器,具體如圖2 所示。

首先,使用訓練數(shù)據(jù)集來構(gòu)建LR、SVM、DT、RF 這4 個不同的基礎分類器,從而輸出第一輪的預測結(jié)果。

其中,xi為切片特征向量,yi為1 或0 分別代表該代碼切片是否有漏洞。

然后,根據(jù)不同結(jié)構(gòu)基礎分類器的輸出和代碼切片的實際標簽值,構(gòu)造最終分類器的輸入數(shù)據(jù)。最終分類器LR 通過梯度下降算法輸出代碼切片檢測結(jié)果。最小化損失函數(shù)為

其中,ω為待求參數(shù),T為sigmoid 函數(shù)。

最終,VCSE 模型訓練過程如算法1 所示。

算法1VCSE 模型訓練算法

輸入漏洞代碼切片數(shù)據(jù)集D

輸出雙粒度特征集F、切片分類檢測結(jié)果R

1) 針對D中任一代碼切片di,進行小寫化與駝峰化處理。

2) 劃分窗口,獲取大小為N1的字符子序列與大小為N2的詞特征子序列。

3) 遍歷D,并重復步驟1)和步驟2)。

4) 計算每個子序列TF-IDF 值,計算方法如式(8)~式(10)所示。

5) 根據(jù)TF-IDF 值的大小對詞、字符級特征集S1、S2進行排序。

6) 水平拼接排序后S1前N3個特征與及S2前N4個特征,共同構(gòu)成VCSE 分類特征Ssub。

7) 針對任一漏洞切片di,構(gòu)建代碼切片向量的文本形式中間表征向量Vi。若切片中包含Ssub中的特征分量,即將Vi對應位置設為該特征分量在di中的TF-IDF 值。反之,記為0。

8) 遍歷D,并重復步驟7),構(gòu)建訓練數(shù)據(jù)集T。

9) 以T作為異質(zhì)集成分類器輸入,訓練VCSE模型。

4 實驗評估

本節(jié)首先闡述VCSE 所用實驗數(shù)據(jù)集及評估指標。然后最優(yōu)化VCSE 模型參數(shù),確定VCSE 模型。最后一方面以緩沖區(qū)溢出切片數(shù)據(jù)集為例,將VCSE、不同基礎分類器、BLSTM 進行對比,以證明VCSE 優(yōu)于上述模型;另一方面以資源管理、數(shù)組使用、算術表達3 個切片數(shù)據(jù)集為例,將VCSE、TextCNN 與原論文評估模型對比,從而證明相較適用廣泛的深度學習模型,輕量級的VCSE 已足夠滿足代碼切片評估任務需求。

本文實驗的實驗環(huán)境配置如下:CPU 為Intel Xeon,內(nèi)存為12 GB 的Colab 服務器,操作系統(tǒng)版本為Ubuntu 18.04.5 LTS。

4.1 數(shù)據(jù)集及評估指標

代碼切片數(shù)據(jù)集即依據(jù)代碼切片方法處理后的漏洞代碼數(shù)據(jù)集。VCSE 實驗所用代碼切片數(shù)據(jù)以美國國家漏洞庫(NVD,national vulnerability database)與軟件質(zhì)量保證參考數(shù)據(jù)集(SARD,software assurance reference dataset)中部分C/C++程序漏洞代碼為基礎,經(jīng)由Li 等[15]與SySeVR[17]中提出的切片算法處理后得到。具體為來源于NVD數(shù)據(jù)集的1 591 個開源C/C++程序以及取自SARD數(shù)據(jù)集的14 000 個C/C++程序。

依據(jù)切片算法對漏洞代碼切片后可以得到包含緩存區(qū)溢出、資源管理、數(shù)組使用、算術表達4 種不同語法特征的代碼切片數(shù)據(jù)集。隨機選擇其中80%用于VCSE 模型訓練,20%用于測試。代碼切片數(shù)據(jù)集信息如表3 所示。

表3 代碼切片數(shù)據(jù)集信息

由4 種不同類型漏洞代碼切片數(shù)據(jù)集中含有漏洞的代碼切片占比可知,代碼切片數(shù)據(jù)集存在不平衡問題,即含有漏洞的代碼切片數(shù)量遠少于不含漏洞的代碼切片數(shù)量。針對上述問題,VCSE 以誤報率(FPR,false positive rate)、漏報率(FNR,false negative rate)、召回率(TPR,true positive rate)、準確率(P,precision)以及F1 值(F1,F1-measure)綜合評估模型。

其中,TP 表示含有漏洞的代碼切片被分類器檢測成功的數(shù)量,F(xiàn)P 表示不含漏洞的代碼切片被分類器誤檢測的數(shù)量,TN 表示為不含漏洞的代碼切片被分類器正確識別的數(shù)量,F(xiàn)N 表示為含有漏洞的代碼切片未被分類器識別的數(shù)量。

4.2 VCSE 模型參數(shù)最優(yōu)化

不同N值的N-gram 模型在語義特征提取時將采用不同大小的窗口。而N-gram 模型窗口的大小將直接影響VCSE 特征提取階段可以獲得的約束性信息。雖然隨著N值的增加,模型獲得的特征更全面,但是也會造成模型復雜度的指數(shù)級增加。因此,合適的N值應綜合權衡模型性能及復雜度。

通過受試者工作特征(ROC,receiver operating characteristic)曲線,分別對詞級與字符級N-gram模型N取不同值時的特征提取效果進行檢驗,結(jié)果如圖3 和圖4 所示。

由圖3 和圖4 可知,針對詞級的N-gram 特征提取,N=2 時效果最好,其次是1 和3。針對字符級的N-gram 特征提取,N取3~7 時效果最好。綜合考慮時間消耗和性能,最終選取詞級的N值為1、2、3,字符級的N值為3、4、5。

除VCSE 采用的N-gram 模型外,Doc2vec 模型、詞袋模型等均為文本信息常用量化表示方法。以準確率、召回率、F1 值為指標,以Doc2vec 模型、詞袋模型替換N-gram 模型進行對比,結(jié)果如圖5所示。

圖5 結(jié)果表明,VCSE 采用N-gram 模型的準確率、召回率和F1 值分別為92%、89%和90%,與其他3 種模型相比有顯著提高。

4.3 VCSE 評估效果

本節(jié)通過以下兩方面來驗證VCSE 有效性。

1) 驗證VCSE 抽取的特征組合Ssub對代碼切片具有更好的表征效果。

2) 驗證VCSE 對不同代碼切片方法具有普適性。

首先,基于緩存區(qū)溢出漏洞的代碼切片數(shù)據(jù)集,以VCSE 提取的代碼切片對應特征Ssub作為不同基礎分類器的輸入,并將分類效果與基于代碼嵌入及深度學習的VulDeePecker[15]工 具(Word2Vec+BLSTM 分類器)進行對比。對比結(jié)果如表4 所示。

表4 緩存區(qū)溢出類型下的漏洞檢測表現(xiàn)

表4 中,除最簡單的SVM 分類器檢測效果與VulDeePecker[15]中原分類器檢測效果相近外,其余復雜度較高的分類器對代碼切片的檢測效果均優(yōu)于原分類器。初步證明,VCSE 抽取的特征組合Ssub對代碼切片具有更佳表征能力,能夠有效彌補基礎分類算法自身分類能力的不足。

由于SVM、RF 均集成于VCSE 使用的異質(zhì)分類器中,故在僅保留VulDeePecker[15]原分類器(表5中Word2Vec+BLSTM 分類器)與TextCNN 的情況下,基于資源管理漏洞的代碼切片數(shù)據(jù)集,二次驗證VCSE 抽取的特征組合對代碼切片的表征能力,結(jié)果如表5 所示。

表5 資源管理類型下的漏洞檢測表現(xiàn)

由表5 可知,VCSE 在精確率與F1 值上較于VulDeePecker[15]分別提升3.1%、2.5%。進一步證明了VCSE 抽取的特征組合Ssub對代碼切片具有更好的表征效果。

為驗證VCSE 對不同代碼切片方法具有普適性,基于SySeVR[17]中保留源代碼數(shù)據(jù)與控制依賴的切片方法得到的漏洞切片數(shù)據(jù)集,對比VCSE 提出的輕量級異質(zhì)集成分類器、SySeVR[17]原評估模型(Word2Vec+BLSTM 分類器)、TextCNN 算法的漏洞代碼切片檢測表現(xiàn)。結(jié)果分別如表6 和表7所示。

表6 數(shù)組使用類型下的漏洞檢測表現(xiàn)

表7 算術表達類型下的漏洞檢測表現(xiàn)

表6 和表7 中,在算術表達類型下精確率與F1值上較于SySeVR[17]分別提升5.1%、5.4%。雖然相較于SySeVR[17],VCSE 在數(shù)組使用類型下精確率下降1.1%,但F1 值提升了3.2%。F1 值是在綜合考量精確率與召回率的基礎上得到的,更能全面地評估模型,且F1 值提升幅度大于精確率下降幅度。故VCSE 對不同代碼切片方法具有普適性。

在達到上述較優(yōu)效果的同時,VCSE 模型避免了代碼詞匯表的建立,且模型使用的雙粒度特征組合Ssub維數(shù)僅為1 650。傳統(tǒng)的基于代碼詞嵌入的深度學習模型[8],若使用部分特征將代碼詞匯表中詞匯數(shù)目控制在75 000 以內(nèi),則詞匯表僅能包含真實使用場景中20%的詞匯,且僅有17%的詞匯出現(xiàn)頻率為10 次以上,25%的詞匯僅能出現(xiàn)一次。同時,VCSE 使用雙粒度N-gram 模型提取的1 650 維特征組合Ssub具備可解釋性。例如,基于緩存區(qū)溢出類型的漏洞代碼切片提取的Ssub中,含有“malloc”“buffer”“strlen”等內(nèi)存操作關鍵字。其部分特征名稱如圖6 所示。

5 結(jié)束語

本文提出了一種未登錄詞繞過的雙粒度輕量級漏洞代碼切片方法評估模型,融合N-gram 模型與TF-IDF 算法,在繞過OOV 問題的同時更好地表征代碼切片。構(gòu)建輕量級的異質(zhì)集成學習分類器替代高復雜度的深度學習分類器,減輕代碼切片研究人員冗余研究負擔。實驗證明,針對漏洞代碼方法評估領域,VCSE 在不使用Word2Vec 引入高維向量與深度學習模型的前提下,性能及訓練成本均優(yōu)于原有切片方法評估過程使用的深度學習模型。未來工作將考慮基于VCSE 抽取的特征組合Ssub作為漏洞Wordpieces擴充到Bert等深度學習模型詞匯語料庫,修改Bert 模型部分目錄下詞匯語料庫文件,幫助遷移Bert 等深度學習模型到漏洞檢測領域。

猜你喜歡
漏洞分類器切片
漏洞
BP-GA光照分類器在車道線識別中的應用
電子測試(2018年1期)2018-04-18 11:52:35
基于SDN與NFV的網(wǎng)絡切片架構(gòu)
電信科學(2016年11期)2016-11-23 05:07:58
三明:“兩票制”堵住加價漏洞
加權空-譜與最近鄰分類器相結(jié)合的高光譜圖像分類
結(jié)合模糊(C+P)均值聚類和SP-V-支持向量機的TSK分類器
漏洞在哪兒
兒童時代(2016年6期)2016-09-14 04:54:43
腎穿刺組織冷凍切片技術的改進方法
高鐵急救應補齊三漏洞
冰凍切片、快速石蠟切片在中樞神經(jīng)系統(tǒng)腫瘤診斷中的應用價值比較
吴桥县| 景泰县| 黄龙县| 紫云| 贺兰县| 黄梅县| 乌拉特中旗| 绥德县| 太仆寺旗| 巫山县| 克拉玛依市| 宝清县| 那坡县| 巴塘县| 增城市| 布拖县| 大邑县| 城固县| 阿坝县| 北海市| 宣城市| 嘉善县| 静宁县| 惠水县| 南澳县| 阳城县| 徐闻县| 额尔古纳市| 桃园市| 丰城市| 嘉黎县| 同江市| 东兰县| 河间市| 广东省| 施甸县| 三江| 慈溪市| 尉氏县| 盱眙县| 方正县|