最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

結(jié)合增強(qiáng)的圖表示學(xué)習(xí)與transformer的漏洞檢測(cè)方法、系統(tǒng)和裝置

文檔序號(hào):41951054發(fā)布日期:2025-05-16 14:11閱讀:5來源:國(guó)知局
結(jié)合增強(qiáng)的圖表示學(xué)習(xí)與transformer的漏洞檢測(cè)方法、系統(tǒng)和裝置

本發(fā)明屬于軟件測(cè)試領(lǐng)域,具體涉及一種結(jié)合增強(qiáng)的圖表示學(xué)習(xí)與transformer的漏洞檢測(cè)方法、系統(tǒng)和裝置。


背景技術(shù):

1、源代碼漏洞檢測(cè)是軟件工程和網(wǎng)絡(luò)安全領(lǐng)域的重要研究方向。隨著軟件系統(tǒng)規(guī)模和復(fù)雜性的增加,代碼中的潛在漏洞對(duì)系統(tǒng)的安全性和穩(wěn)定性構(gòu)成了嚴(yán)重威脅。目前,漏洞檢測(cè)方法主要分為靜態(tài)分析方法、動(dòng)態(tài)分析方法和基于深度學(xué)習(xí)的方法。

2、其中,靜態(tài)分析方法通過檢查源代碼的結(jié)構(gòu)和語法特性,嘗試定位可能存在的漏洞。這類方法包括基于規(guī)則的分析和符號(hào)執(zhí)行等。然而,此類方法對(duì)代碼復(fù)雜性和多樣性具有較強(qiáng)的依賴性,面對(duì)代碼邏輯復(fù)雜或跨函數(shù)調(diào)用的漏洞時(shí),容易產(chǎn)生高誤報(bào)率和漏報(bào)率。動(dòng)態(tài)分析方法通過實(shí)際運(yùn)行程序并監(jiān)控其行為來發(fā)現(xiàn)潛在漏洞,例如模糊測(cè)試和沙箱測(cè)試。這種方法可以有效捕獲動(dòng)態(tài)執(zhí)行中的異常行為,但往往需要較高的計(jì)算資源,并難以覆蓋所有的執(zhí)行路徑。

3、現(xiàn)階段基于深度學(xué)習(xí)的漏洞檢測(cè)模型主要分為兩種,一種是基于序列的模型,即將源代碼轉(zhuǎn)化為token序列輸入到深度學(xué)習(xí)模型中學(xué)習(xí)漏洞特征以及檢測(cè)漏洞,序列化的輸入使代碼的表示具有序列化的信息。一種是基于圖的模型,即將源代碼轉(zhuǎn)換為圖的形式輸入到漏洞檢測(cè)模型中,圖的形式包括ast抽象語法樹、pdg程序依賴圖、cpg代碼屬性圖等,通過轉(zhuǎn)換為圖的形式使代碼的表示具有結(jié)構(gòu)化的信息。以上兩種模型具有各自的優(yōu)缺點(diǎn)。例如,基于序列的模型在學(xué)習(xí)代碼的全局信息上具有優(yōu)勢(shì),尤其是使用大型預(yù)訓(xùn)練模型codebert來學(xué)習(xí)代碼特征時(shí),但基于序列的模型往往忽略了代碼的結(jié)構(gòu)化信息,比如代碼間的依賴關(guān)系,比如數(shù)據(jù)依賴和控制依賴?;趫D的模型能夠結(jié)構(gòu)化地表示代碼,但是其僅能用于表示包含代碼間的依賴關(guān)系,而無法表示代碼的全局信息。

4、此外,基于深度學(xué)習(xí)的漏洞檢測(cè)模型的性能還會(huì)受到數(shù)據(jù)集質(zhì)量的影響。這是因?yàn)楝F(xiàn)實(shí)世界的程序往往很長(zhǎng),有幾百甚至幾千行,而漏洞相關(guān)代碼只占其中的幾十行甚至幾行,而且我們可用的用于訓(xùn)練模型的數(shù)據(jù)集中的漏洞函數(shù)也只占其中很小一部分,這就導(dǎo)致了用于訓(xùn)練模型的數(shù)據(jù)中漏洞類和非漏洞類的比例極不平衡,這就使我們模型更容易學(xué)習(xí)到與漏洞不相關(guān)的特征,從而導(dǎo)致模型的準(zhǔn)確性和泛化性下降。


技術(shù)實(shí)現(xiàn)思路

1、為了解決現(xiàn)有基于深度學(xué)習(xí)的漏洞檢測(cè)方法無法充分挖掘代碼間依賴關(guān)系和全局信息,進(jìn)而導(dǎo)致漏洞檢測(cè)效率和精度較低,模型的準(zhǔn)確性和泛化性不足的問題,本發(fā)明提供了一種結(jié)合增強(qiáng)的圖表示學(xué)習(xí)與transformer的漏洞檢測(cè)方法、系統(tǒng)和裝置。

2、本發(fā)明提供的技術(shù)方案為:

3、一種結(jié)合增強(qiáng)的圖表示學(xué)習(xí)與transformer的漏洞檢測(cè)方法,其包括如下過程:

4、構(gòu)建包含預(yù)處理模塊、特征提取模塊和分類模塊的漏洞檢測(cè)模型。其中,預(yù)處理模塊用于根據(jù)源代碼生成包含所有漏洞相關(guān)的風(fēng)險(xiǎn)節(jié)點(diǎn)的代碼切片及其對(duì)應(yīng)的切片子圖。特征提取模塊包括序列分支和圖分支;序列分支采用codebert模型對(duì)代碼切片進(jìn)行特征提取,得到序列特征向量。圖分支采用包含邊緣注意力(edge?aware,ea)機(jī)制的ggnn模型對(duì)切片子圖進(jìn)行特征提取,得到圖特征向量。在圖分支中,ea機(jī)制用于為數(shù)據(jù)流和控制流的入邊和出邊以及自循環(huán)邊動(dòng)態(tài)分配權(quán)重,并將其融合到節(jié)點(diǎn)的嵌入表示中,進(jìn)而獲取融合異構(gòu)邊信息的節(jié)點(diǎn)表示。最后,特征提取模塊將兩個(gè)分支中得到的序列特征向量與圖特征向量按照預(yù)設(shè)權(quán)重進(jìn)行融合,進(jìn)而得到對(duì)應(yīng)的融合特征向量。分類模塊采用mlp并用于根據(jù)輸入的融合特征向量生成源代碼的漏洞檢測(cè)結(jié)果。

5、獲取大量包含漏洞標(biāo)簽信息的源代碼作為樣本數(shù)據(jù)構(gòu)成原始數(shù)據(jù)集,將原始數(shù)據(jù)集分為訓(xùn)練集和測(cè)試集。將包含聚焦損失lfocal、余弦損失lp和正則化損失lreg的三元損失ltrp作為mlp在訓(xùn)練階段的損失函數(shù),利用訓(xùn)練集和測(cè)試集對(duì)漏洞檢測(cè)模塊進(jìn)行訓(xùn)練和測(cè)試。

6、保留經(jīng)測(cè)試的性能最優(yōu)的漏洞檢測(cè)模型的模型參數(shù),并將其用于對(duì)源代碼進(jìn)行漏洞檢測(cè)。

7、作為本發(fā)明進(jìn)一步的改進(jìn),預(yù)處理模塊根據(jù)源代碼生成代碼切片和切片子圖的過程包括:

8、首先,使用代碼解析工具joern生成源代碼的ast和pdg。然后,根據(jù)checkmarx提供的漏洞語法特征匹配ast中的漏洞風(fēng)險(xiǎn)代碼行,并將其作為切片中心。接著,使用joern以切片中心為起點(diǎn)在pdg上按照數(shù)據(jù)流的邊和控制流的邊進(jìn)行前向和后向遍歷,進(jìn)而得到對(duì)應(yīng)的切片子圖。最后,利用相同的方法生成匹配到的所有切片中心對(duì)應(yīng)的切片子圖;提取切片子圖的代碼行號(hào),由包含切片中心的所有代碼行構(gòu)成所需的代碼切片。

9、作為本發(fā)明進(jìn)一步的改進(jìn),漏洞檢測(cè)模型包括如下的兩種數(shù)據(jù)處理策略:

10、(1)首先,由預(yù)處理模塊識(shí)別源代碼中的所有切片中心,并為每個(gè)切片中心生成一組對(duì)應(yīng)的代碼切片和切片子圖。然后,由特征提取模塊提取每組代碼切片和切片子圖對(duì)應(yīng)的序列特征向量和圖特征向量,并融合得到多個(gè)融合特征向量。最后,由mlp對(duì)各個(gè)融合特征向量進(jìn)行漏洞檢測(cè),并根據(jù)檢測(cè)結(jié)果實(shí)現(xiàn)漏洞定位。

11、(2)首先,由預(yù)處理模塊識(shí)別出源代碼中的所有切片中心,以包含所有切片中心的最短代碼行為代碼切片,并生成代碼切片對(duì)應(yīng)的切片子圖。然后,由特征提取模塊提取出代碼切片和切片子圖對(duì)應(yīng)的序列特征向量和圖特征向量,并融合得到一個(gè)融合特征向量。最后,由mlp對(duì)融合特征向量進(jìn)行漏洞檢測(cè),生成對(duì)應(yīng)的漏洞檢測(cè)結(jié)果。

12、作為本發(fā)明進(jìn)一步的改進(jìn),codebert模型為基于transformer的大規(guī)模預(yù)訓(xùn)練模型,其用于提取代碼切片中包含的序列化的代碼全局信息,進(jìn)而得到一個(gè)256維的序列特征向量。

13、且/或

14、codebert模型依次包括1個(gè)用于進(jìn)行詞匯嵌入和位置編碼的embedding模塊,以及12層包含前饋神經(jīng)網(wǎng)絡(luò)和雙向多頭自注意力機(jī)制的編碼器。

15、作為本發(fā)明進(jìn)一步的改進(jìn),切片子圖中包含多個(gè)節(jié)點(diǎn),以及節(jié)點(diǎn)間的數(shù)據(jù)流入邊、數(shù)據(jù)流出邊、控制流入邊、控制流出邊以及自循環(huán)邊。圖分支采用的ea-ggnn通過ea機(jī)制為不同類型的邊動(dòng)態(tài)分配權(quán)重,將異構(gòu)邊信息有效融合到節(jié)點(diǎn)表示中;并結(jié)合傳統(tǒng)ggnn的迭代機(jī)制捕捉局部依賴關(guān)系和遠(yuǎn)程節(jié)點(diǎn)依賴關(guān)系;進(jìn)而得到切片子圖對(duì)應(yīng)的256維的圖特征向量。

16、作為本發(fā)明進(jìn)一步的改進(jìn),ea機(jī)制動(dòng)態(tài)學(xué)習(xí)每種邊類型對(duì)節(jié)點(diǎn)特征更新的貢獻(xiàn),任意兩個(gè)鄰居節(jié)點(diǎn)i和j之間的邊eij的注意力權(quán)重的表達(dá)式如下:

17、

18、上式中,和分別表示節(jié)點(diǎn)i和j在初始狀態(tài)下的特征向量;wk表示k類型的邊對(duì)應(yīng)的可訓(xùn)練權(quán)重矩陣;a表示用于確定邊的重要性的注意力向量;σ表示激活函數(shù)。

19、作為本發(fā)明進(jìn)一步的改進(jìn),ggnn根據(jù)更新后的所有邊的注意力權(quán)重實(shí)現(xiàn)對(duì)任意節(jié)點(diǎn)的特征向量進(jìn)行更新的表達(dá)式如下:

20、

21、上式中,表示節(jié)點(diǎn)i在第t+1次迭代后的特征向量,nk(i)表示通過類型為k的邊與節(jié)點(diǎn)i相連的鄰居節(jié)點(diǎn)集合;m是所有邊類型的集合;表示第t次迭代后節(jié)點(diǎn)j的特征向量。

22、作為本發(fā)明進(jìn)一步的改進(jìn),三元損失lreg的表達(dá)式如下:

23、

24、上式中,β和δ分別表示余弦損失lp和正則化損失lreg在三元損失ltrp中的權(quán)重;pt代表真實(shí)類別的預(yù)測(cè)概率;表示一個(gè)用于調(diào)整正負(fù)樣本的重要性的平衡因子;γ表示一個(gè)用于調(diào)整分類正確樣本的貢獻(xiàn)度的聚焦參數(shù);xg表示輸入樣本;h(xg)表示xg的潛在表示,h(xsame)表示與h(xg)屬于同一類別的樣本的潛在表示;h(xdiff)表示與h(xg)屬于不同類別的樣本的潛在表示;ε是一個(gè)用于定義最小分離邊界的超參數(shù);d(h(xg),h(xsame))表示h(xg)與h(xsame)之間的余弦距離;d(h(xg),h(xdiff))表示h(xg)與h(xdiff)之間的余弦距離。

25、本發(fā)明還包括一種漏洞檢測(cè)系統(tǒng),其用于根據(jù)輸出的軟件的源代碼生成對(duì)應(yīng)的漏洞檢測(cè)結(jié)果。該漏洞檢測(cè)系統(tǒng)包括一個(gè)代碼獲取單元以及一個(gè)如前述的結(jié)合增強(qiáng)的圖表示學(xué)習(xí)與transformer的漏洞檢測(cè)方法中經(jīng)過訓(xùn)練的漏洞檢測(cè)模型。代碼獲取單元用于獲取待檢測(cè)的軟件的源代碼;漏洞檢測(cè)模型用于根據(jù)輸入的源代碼生成其是否包括漏洞的檢測(cè)結(jié)果。

26、漏洞檢測(cè)模塊包含預(yù)處理模塊、特征提取模塊和分類模塊。預(yù)處理模塊用于根據(jù)源代碼生成包含所有漏洞相關(guān)的風(fēng)險(xiǎn)節(jié)點(diǎn)的代碼切片及其對(duì)應(yīng)的切片子圖。特征提取模塊包括序列分支和圖分支;序列分支采用codebert模型對(duì)代碼切片進(jìn)行特征提取進(jìn)而得到序列特征向量。圖分支采用包含ea機(jī)制的ggnn模型對(duì)切片子圖進(jìn)行特征提取進(jìn)而得到圖特征向量。在圖分支中,ea機(jī)制用于為數(shù)據(jù)流和控制流的入邊和出邊以及自循環(huán)邊動(dòng)態(tài)分配權(quán)重,并將其融合到節(jié)點(diǎn)的嵌入表示中。特征提取模塊將序列特征向量與圖特征向量按照預(yù)設(shè)權(quán)重進(jìn)行融合得到對(duì)應(yīng)的融合特征向量;分類模塊采用mlp并用于根據(jù)輸入的融合特征向量生成源代碼的漏洞檢測(cè)結(jié)果。

27、本發(fā)明還包括一種漏洞檢測(cè)裝置,其包含存儲(chǔ)器、處理器,以及存儲(chǔ)在存儲(chǔ)器內(nèi)并在處理器中運(yùn)行的計(jì)算機(jī)程序。處理器執(zhí)行計(jì)算機(jī)程序時(shí),創(chuàng)建出如前述的漏洞檢測(cè)系統(tǒng),進(jìn)而實(shí)現(xiàn)對(duì)輸入的軟件源代碼中是否存在漏洞進(jìn)行檢測(cè)。

28、本發(fā)明提供的技術(shù)方案,具有如下有益效果:

29、本發(fā)明在漏洞檢測(cè)模型的特征提取部分設(shè)計(jì)了一種全新的ea-ggnn網(wǎng)絡(luò),相較于傳統(tǒng)ggnn模塊,本發(fā)明設(shè)計(jì)的ea-ggnn一方面使用切片來縮小ggnn的輸入大??;另一方面使用邊緣注意力機(jī)制將異構(gòu)邊信息融合到節(jié)點(diǎn)表示中,進(jìn)而能夠活動(dòng)額更加精準(zhǔn)、更加可靠的漏洞相關(guān)的特征信息。

30、與此相對(duì)地,現(xiàn)在的許多方案在面對(duì)不平衡數(shù)據(jù)集時(shí)往往采用smote對(duì)數(shù)據(jù)集中的少數(shù)類進(jìn)行過采樣,而smote具有很大局限性,尤其是在應(yīng)對(duì)真實(shí)世界的復(fù)雜漏洞數(shù)據(jù)時(shí),比如如果少數(shù)類樣本中存在噪聲,smote可能會(huì)利用噪聲樣本生成新的合成樣本,從而降低模型性能,且smote生成的樣本很有可能具有重復(fù)性,降低模型性能。

31、在提供的漏洞檢測(cè)模型在分類部分引入了帶有focal?loss的mlp模塊,這一改進(jìn)可以克服傳統(tǒng)的交叉熵?fù)p失函數(shù)對(duì)不平衡數(shù)據(jù)中的負(fù)樣本(無漏洞代碼)賦予過高權(quán)重,使模型更容易學(xué)習(xí)到漏洞無關(guān)的特征的缺陷。本發(fā)明采用的focal?loss通過動(dòng)態(tài)分配正負(fù)樣本的權(quán)重,使模型面對(duì)不平衡數(shù)據(jù)集時(shí)更關(guān)注漏洞代碼,這大大增加了模型的有效性。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1