本技術(shù)屬于漏洞類型分類領(lǐng)域,更具體地,涉及一種基于偽標(biāo)簽學(xué)習(xí)的安全補(bǔ)丁分類方法及系統(tǒng)。
背景技術(shù):
1、在當(dāng)前的軟件工程領(lǐng)域,開(kāi)源軟件已被廣泛應(yīng)用于商業(yè)/非商業(yè)產(chǎn)品的軟件供應(yīng)鏈中。與此同時(shí),開(kāi)源軟件的漏洞也被廣泛傳播,下游開(kāi)源軟件用戶需要及時(shí)發(fā)現(xiàn)并修復(fù)上游開(kāi)源軟件中的漏洞。在漏洞修復(fù)過(guò)程中,漏洞類型信息十分重要,它可以幫助開(kāi)發(fā)者了解漏洞的根本原因、可能的影響和要部署的緩解措施類型。因此,對(duì)安全補(bǔ)丁按照漏洞類型進(jìn)行分類十分重要。
2、研究者們提出了許多方法來(lái)進(jìn)行安全補(bǔ)丁的分類,其中,基于深度學(xué)習(xí)的方法因其能夠自動(dòng)從代碼中提取特征、識(shí)別復(fù)雜模式而引起了廣泛關(guān)注。這些方法在安全補(bǔ)丁漏洞類型的分類中取得了一定的進(jìn)展,尤其是在減少人工干預(yù)和提高分類效率方面,顯示了其強(qiáng)大的潛力。然而,盡管基于深度學(xué)習(xí)的技術(shù)取得了一定的成果,其分類性能仍然存在一定的局限性,主要原因在于缺乏高質(zhì)量的訓(xùn)練數(shù)據(jù),但當(dāng)前的標(biāo)注數(shù)據(jù)集的獲取存在不少挑戰(zhàn)。
3、一方面,人工代碼審查往往需要具備深厚的專家知識(shí),不僅時(shí)間成本高,而且容易受到人為偏差的影響。另一方面,利用現(xiàn)有的靜態(tài)分析工具生成標(biāo)注數(shù)據(jù)集雖然在一定程度上能夠加速標(biāo)注過(guò)程,但其生成的數(shù)據(jù)存在較高的誤報(bào)率,進(jìn)一步影響了數(shù)據(jù)的質(zhì)量和模型的訓(xùn)練效果。
4、因此,在當(dāng)前的深度學(xué)習(xí)方法中,如何利用無(wú)標(biāo)簽數(shù)據(jù)進(jìn)行有效學(xué)習(xí),克服標(biāo)注數(shù)據(jù)不足的瓶頸,提高分類的準(zhǔn)確性和魯棒性,是當(dāng)前技術(shù)中亟待解決的關(guān)鍵問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、針對(duì)現(xiàn)有技術(shù)的缺陷,本技術(shù)的目的在于提供一種基于偽標(biāo)簽學(xué)習(xí)的安全補(bǔ)丁分類方法及系統(tǒng),旨在解決目前安全補(bǔ)丁漏洞類型分類準(zhǔn)確率不高的問(wèn)題。
2、為實(shí)現(xiàn)上述目的,第一方面,本技術(shù)提供了一種基于偽標(biāo)簽學(xué)習(xí)的安全補(bǔ)丁分類方法,包括:
3、獲取待分類的安全補(bǔ)?。?/p>
4、對(duì)所述安全補(bǔ)丁進(jìn)行特征提取,得到關(guān)鍵語(yǔ)義特征;
5、將所述關(guān)鍵語(yǔ)義特征輸入到訓(xùn)練好的安全補(bǔ)丁模型中,得到所述安全補(bǔ)丁的分類結(jié)果;
6、其中,所述安全補(bǔ)丁模型是通過(guò)對(duì)安全相關(guān)補(bǔ)丁數(shù)據(jù)集和無(wú)標(biāo)簽補(bǔ)丁數(shù)據(jù)集進(jìn)行關(guān)鍵語(yǔ)義信息提取,并根據(jù)所述關(guān)鍵語(yǔ)義信息進(jìn)行偽標(biāo)簽學(xué)習(xí)得到的。
7、可選地,所述安全補(bǔ)丁模型的獲取方法包括:
8、排除與安全無(wú)關(guān)的修復(fù)內(nèi)容,提取與漏洞相關(guān)的關(guān)鍵變量,并利用代碼切片技術(shù)結(jié)合數(shù)據(jù)流分析確定漏洞觸發(fā)點(diǎn),根據(jù)關(guān)鍵變量和漏洞觸發(fā)點(diǎn)整合為關(guān)鍵語(yǔ)義信息;
9、利用有標(biāo)簽安全補(bǔ)丁的訓(xùn)練集訓(xùn)練得到初始教師模型,利用初始教師模型為無(wú)標(biāo)簽安全補(bǔ)丁生成偽標(biāo)簽,通過(guò)共識(shí)算法結(jié)合所述關(guān)鍵語(yǔ)義信息篩選出高質(zhì)量偽標(biāo)簽樣本并加入有標(biāo)簽安全補(bǔ)丁的訓(xùn)練集對(duì)初始教師模型進(jìn)行迭代訓(xùn)練,直至得到訓(xùn)練好的安全補(bǔ)丁分類模型。
10、可選地,所述關(guān)鍵語(yǔ)義信息提取的過(guò)程具體包括:
11、分析所述安全相關(guān)補(bǔ)丁數(shù)據(jù)集的補(bǔ)丁的代碼修改,標(biāo)注代碼修改塊是否與安全修復(fù)相關(guān),得到候選樣本集;
12、利用相似補(bǔ)丁檢索法從候選樣本集中選取安全相關(guān)補(bǔ)丁數(shù)據(jù)集的輸入補(bǔ)丁的相似樣本,根據(jù)所述相似樣本構(gòu)造少樣本提示;
13、利用大語(yǔ)言模型根據(jù)所述少樣本提示排除安全補(bǔ)丁中與漏洞無(wú)關(guān)的代碼修改塊;
14、對(duì)安全補(bǔ)丁的代碼修改進(jìn)行分析總結(jié)修補(bǔ)特征,根據(jù)修補(bǔ)類型和修補(bǔ)行類型設(shè)計(jì)提取規(guī)則,利用所述提取規(guī)則提取代碼修改中的關(guān)鍵變量;
15、根據(jù)不同的漏洞類型制定相應(yīng)的漏洞觸發(fā)點(diǎn)規(guī)則,基于所述關(guān)鍵變量和漏洞觸發(fā)點(diǎn)規(guī)則進(jìn)行數(shù)據(jù)流分析,直至分析到達(dá)預(yù)設(shè)深度,得到符合所述漏洞觸發(fā)點(diǎn)規(guī)則的代碼數(shù)據(jù);
16、根據(jù)所述代碼數(shù)據(jù)、關(guān)鍵變量以及代碼數(shù)據(jù)和關(guān)鍵變量之間的數(shù)據(jù)流,確定漏洞相關(guān)代碼以作為所述關(guān)鍵語(yǔ)義信息。
17、可選地,所述安全補(bǔ)丁分類模型的訓(xùn)練過(guò)程包括:
18、確定所述初始教師模型包括代碼修改分類模型和文本描述分類模型;
19、利用標(biāo)注了漏洞類型標(biāo)簽的安全補(bǔ)丁代碼修改訓(xùn)練代碼修改分類模型,利用標(biāo)注了漏洞類型標(biāo)簽的安全補(bǔ)丁文本描述訓(xùn)練文本描述分類模型;
20、分別利用代碼修改分類模型和文本描述分類模型為無(wú)標(biāo)簽安全補(bǔ)丁的進(jìn)行代碼修改預(yù)測(cè)和文本描述預(yù)測(cè),生成偽標(biāo)簽;
21、采用基于代碼修改和文本描述的共識(shí)算法并結(jié)合關(guān)鍵語(yǔ)義信息,對(duì)生成的偽標(biāo)簽進(jìn)行確認(rèn),篩選得到高質(zhì)量的偽標(biāo)簽樣本,加入有標(biāo)簽安全補(bǔ)丁的訓(xùn)練集,對(duì)初始教師模型進(jìn)行迭代訓(xùn)練,直至得到訓(xùn)練好的安全補(bǔ)丁分類模型。
22、可選地,所述數(shù)據(jù)流分析的過(guò)程包括:
23、構(gòu)建代碼的數(shù)據(jù)流圖;
24、在所述數(shù)據(jù)流圖中定位所述關(guān)鍵變量的目標(biāo)節(jié)點(diǎn);
25、從所述目標(biāo)節(jié)點(diǎn)出發(fā)遍歷以匹配漏洞觸發(fā)點(diǎn),在遇到函數(shù)調(diào)用語(yǔ)句的情況下調(diào)整到被調(diào)用函數(shù)的程序依賴圖并繼續(xù)遍歷,直至到達(dá)預(yù)設(shè)深度,得到符合所述漏洞觸發(fā)點(diǎn)規(guī)則的代碼數(shù)據(jù)。
26、可選地,所述初始教師模型訓(xùn)練過(guò)程的損失函數(shù)的計(jì)算方法包括:
27、計(jì)算有標(biāo)簽安全補(bǔ)丁的預(yù)測(cè)值和實(shí)際標(biāo)簽之間的第一損失;
28、計(jì)算偽標(biāo)簽樣本的預(yù)測(cè)值和偽標(biāo)簽之間的第二損失;
29、將所述第一損失和第二損失的加權(quán)和作為模型訓(xùn)練的總損失。
30、可選地,偽標(biāo)簽的獲取過(guò)程包括:
31、對(duì)安全補(bǔ)丁的文本描述和代碼修改的預(yù)測(cè)結(jié)果進(jìn)行概率排序,分別選取前k個(gè)類別;
32、若前k個(gè)類別中存在相同類別,則選擇具有最大平均概率的類別作為偽標(biāo)簽;若前k個(gè)類別中不存在相同類別,將當(dāng)前樣本丟棄。
33、第二方面,本技術(shù)還提供一種基于偽標(biāo)簽學(xué)習(xí)的安全補(bǔ)丁分類系統(tǒng),包括:
34、獲取模塊,用于獲取待分類的安全補(bǔ)??;
35、特征提取模塊,用于對(duì)所述安全補(bǔ)丁進(jìn)行特征提取,得到關(guān)鍵語(yǔ)義特征;
36、分類模塊,用于將所述關(guān)鍵語(yǔ)義特征輸入到訓(xùn)練好的安全補(bǔ)丁模型中,得到所述安全補(bǔ)丁的分類結(jié)果;
37、其中,所述安全補(bǔ)丁模型是通過(guò)對(duì)安全相關(guān)補(bǔ)丁數(shù)據(jù)集和無(wú)標(biāo)簽補(bǔ)丁數(shù)據(jù)集進(jìn)行關(guān)鍵語(yǔ)義信息提取,并根據(jù)所述關(guān)鍵語(yǔ)義信息進(jìn)行偽標(biāo)簽學(xué)習(xí)得到的。
38、可選地,所述安全補(bǔ)丁模型包括:
39、關(guān)鍵語(yǔ)義信息提取模塊,用于排除與安全無(wú)關(guān)的修復(fù)內(nèi)容,提取與漏洞相關(guān)的關(guān)鍵變量,并利用代碼切片技術(shù)結(jié)合數(shù)據(jù)流分析確定漏洞觸發(fā)點(diǎn),根據(jù)關(guān)鍵變量和漏洞觸發(fā)點(diǎn)整合為關(guān)鍵語(yǔ)義信息;
40、偽標(biāo)簽學(xué)習(xí)模塊,用于利用有標(biāo)簽安全補(bǔ)丁的訓(xùn)練集訓(xùn)練得到初始教師模型,利用初始教師模型為無(wú)標(biāo)簽安全補(bǔ)丁生成偽標(biāo)簽,通過(guò)共識(shí)算法結(jié)合所述關(guān)鍵語(yǔ)義信息篩選出高質(zhì)量偽標(biāo)簽樣本并加入有標(biāo)簽安全補(bǔ)丁的訓(xùn)練集對(duì)初始教師模型進(jìn)行迭代訓(xùn)練,直至得到訓(xùn)練好的安全補(bǔ)丁分類模型。
41、第三方面,本技術(shù)提供一種電子設(shè)備,包括:至少一個(gè)存儲(chǔ)器,用于存儲(chǔ)程序;至少一個(gè)處理器,用于執(zhí)行存儲(chǔ)器存儲(chǔ)的程序,當(dāng)存儲(chǔ)器存儲(chǔ)的程序被執(zhí)行時(shí),處理器用于執(zhí)行第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式所描述的方法。
42、第四方面,本技術(shù)提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,當(dāng)計(jì)算機(jī)程序在處理器上運(yùn)行時(shí),使得處理器執(zhí)行第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式所描述的方法。
43、第五方面,本技術(shù)提供一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)計(jì)算機(jī)程序產(chǎn)品在處理器上運(yùn)行時(shí),使得處理器執(zhí)行第一方面或第一方面的任一種可能的實(shí)現(xiàn)方式所描述的方法。
44、可以理解的是,上述第二方面至第五方面的有益效果可以參見(jiàn)上述第一方面中的相關(guān)描述,在此不再贅述。
45、總體而言,通過(guò)本技術(shù)所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,具有以下有益效果:
46、(1)本技術(shù)通過(guò)利用有標(biāo)簽的安全補(bǔ)丁數(shù)據(jù)集以及無(wú)標(biāo)簽補(bǔ)丁數(shù)據(jù)集生成偽標(biāo)簽,能夠在數(shù)據(jù)量有限的情況下擴(kuò)展訓(xùn)練集,從而顯著提升分類模型的學(xué)習(xí)效果和準(zhǔn)確性。結(jié)合關(guān)鍵語(yǔ)義信息的學(xué)習(xí),模型能夠更好地理解和分類補(bǔ)丁的特性,尤其是與漏洞修復(fù)高度相關(guān)的變量。本技術(shù)通過(guò)精細(xì)化的訓(xùn)練方式提高模型在真實(shí)場(chǎng)景中對(duì)安全補(bǔ)丁的分類有效性,提高安全補(bǔ)丁的分類準(zhǔn)確率和魯棒性。
47、(2)本技術(shù)通過(guò)共識(shí)算法篩選高質(zhì)量的偽標(biāo)簽樣本,通過(guò)從不同來(lái)源的補(bǔ)丁中提取關(guān)鍵特征,結(jié)合相似度檢索與少樣本提示,增加了訓(xùn)練數(shù)據(jù)的多樣性,使得模型能夠應(yīng)對(duì)更復(fù)雜的補(bǔ)丁形式和修復(fù)類型。在有效增強(qiáng)模型泛化能力的同時(shí),能夠降低過(guò)擬合的風(fēng)險(xiǎn)。
48、(3)本技術(shù)通過(guò)自動(dòng)提取關(guān)鍵語(yǔ)義特征,利用代碼切片技術(shù)和數(shù)據(jù)流分析來(lái)識(shí)別漏洞觸發(fā)點(diǎn),實(shí)現(xiàn)了補(bǔ)丁分類過(guò)程的自動(dòng)化。自動(dòng)化的提取與確認(rèn)過(guò)程不僅降低了人工干預(yù)的需求,還大幅提高了處理速度與效率。相比傳統(tǒng)的手動(dòng)標(biāo)注過(guò)程,模型訓(xùn)練和偽標(biāo)簽生成的快速迭代使得整個(gè)補(bǔ)丁分類的工作流更加高效,能夠在短時(shí)間內(nèi)適應(yīng)快速變化的安全環(huán)境,提高了整體的反應(yīng)能力。
49、(4)本技術(shù)通過(guò)提取與漏洞類型高度相關(guān)的關(guān)鍵語(yǔ)義信息作為模型輸入樣本,從而顯著提高了樣本質(zhì)量,使得模型更容易學(xué)習(xí)到漏洞類型的特征。相比于傳統(tǒng)的偽標(biāo)簽學(xué)習(xí)方法,本技術(shù)采用基于補(bǔ)丁文本和代碼修改的共識(shí)算法來(lái)篩選偽標(biāo)簽樣本,在保證了偽標(biāo)簽準(zhǔn)確性的同時(shí)也保證了偽標(biāo)簽樣本數(shù)量充足。本技術(shù)的偽標(biāo)簽學(xué)習(xí)模塊可與現(xiàn)有基于深度學(xué)習(xí)的安全補(bǔ)丁分類方法結(jié)合,進(jìn)一步增強(qiáng)其分類效果。