本發(fā)明屬于軟件安全,具體涉及一種基于大語(yǔ)言模型的軟件安全漏洞智能挖掘方法及系統(tǒng)。
背景技術(shù):
1、隨著軟件技術(shù)的迅速發(fā)展,軟件漏洞成為網(wǎng)絡(luò)安全的一大潛在威脅,這些漏洞可能由于開發(fā)過(guò)程中的瑕疵或設(shè)計(jì)缺陷而存在,為不法分子提供了潛在的入侵途徑。軟件漏洞挖掘技術(shù)通過(guò)追蹤軟件運(yùn)行過(guò)程中產(chǎn)生的數(shù)據(jù),分析監(jiān)測(cè)程序執(zhí)行的代碼,能夠及時(shí)發(fā)現(xiàn)系統(tǒng)內(nèi)的安全漏洞,防止黑客利用這些漏洞進(jìn)行攻擊,保障用戶的信息安全和系統(tǒng)穩(wěn)定運(yùn)行。因此,軟件漏洞挖掘的重要性在于及時(shí)發(fā)現(xiàn)并修復(fù)潛在威脅,為用戶提供有效的安全防護(hù)。
2、現(xiàn)有技術(shù)中,如申請(qǐng)?zhí)枮閏n202111612183.9的發(fā)明申請(qǐng)公開了《基于中間語(yǔ)言與遷移表征學(xué)習(xí)的漏洞挖掘系統(tǒng)及方法》,其提出一種基于bilstm(雙向長(zhǎng)短期記憶)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)的代碼漏洞挖掘系統(tǒng),通過(guò)將高級(jí)編程語(yǔ)言轉(zhuǎn)化為中間語(yǔ)言進(jìn)行表示,并利用bilstm網(wǎng)絡(luò)提取代碼特征,再通過(guò)卷積神經(jīng)網(wǎng)絡(luò)判別代碼是否具有漏洞。
3、但是,在使用現(xiàn)有技術(shù)過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題:
4、傳統(tǒng)的基于深度學(xué)習(xí)的代碼漏洞挖掘方法,可解釋性差,不能理解代碼的語(yǔ)義和上下文,且只能判斷是否具有漏洞,無(wú)法給出漏洞準(zhǔn)確分類等信息。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明旨在至少在一定程度上解決上述技術(shù)問題,本發(fā)明提供了一種基于大語(yǔ)言模型的軟件安全漏洞智能挖掘方法、系統(tǒng)、設(shè)備及產(chǎn)品。
2、為了實(shí)現(xiàn)上述目的,本發(fā)明采用以下技術(shù)方案:
3、第一方面,本發(fā)明提供了一種基于大語(yǔ)言模型的軟件安全漏洞智能挖掘方法,包括:
4、獲取漏洞代碼數(shù)據(jù)集,并對(duì)所述漏洞代碼數(shù)據(jù)集進(jìn)行預(yù)處理,得到預(yù)處理后漏洞代碼數(shù)據(jù)集;
5、獲取cwe漏洞數(shù)據(jù),并基于所述cwe漏洞數(shù)據(jù)構(gòu)建得到cwe漏洞庫(kù);
6、基于所述預(yù)處理后漏洞代碼數(shù)據(jù)集構(gòu)建得到程序依賴圖集;
7、根據(jù)所述程序依賴圖集創(chuàng)建得到樣本數(shù)據(jù)集,獲取預(yù)訓(xùn)練大語(yǔ)言模型,并利用所述樣本數(shù)據(jù)集,采用輕量級(jí)微調(diào)方法對(duì)所述預(yù)訓(xùn)練大語(yǔ)言模型進(jìn)行訓(xùn)練,得到軟件安全漏洞智能挖掘模型;
8、接收待測(cè)代碼,并基于所述軟件安全漏洞智能挖掘模型和所述cwe漏洞庫(kù)對(duì)所述待測(cè)代碼進(jìn)行漏洞挖掘處理,得到漏洞挖掘結(jié)果。
9、在一個(gè)可能的設(shè)計(jì)中,所述漏洞代碼數(shù)據(jù)集中包括多個(gè)代碼中間件;對(duì)應(yīng)地,對(duì)所述漏洞代碼數(shù)據(jù)集進(jìn)行預(yù)處理,得到預(yù)處理后漏洞代碼數(shù)據(jù)集,包括:
10、基于minhash算法,獲取所述漏洞代碼數(shù)據(jù)集中各代碼中間件的代碼片段,并基于各代碼中間件的代碼片段構(gòu)建得到代碼片段集合,并獲取所述代碼片段集合中各代碼片段的minhash簽名;
11、基于lsh算法,將所述代碼片段集合中各代碼片段的minhash簽名作為高維向量,構(gòu)建得到lsh哈希表;
12、將所述lsh哈希表中相同哈希表位置中的minhash簽名逐對(duì)進(jìn)行相似性計(jì)算,當(dāng)計(jì)算得到的相似度高于預(yù)設(shè)閾值時(shí),保留一個(gè)代表性簽名,并去除其余相似的minhash簽名,得到去重后的minhash簽名,再將去重后的minhash簽名映射回對(duì)應(yīng)的代碼片段,以構(gòu)建得到預(yù)處理后漏洞代碼數(shù)據(jù)集。
13、在一個(gè)可能的設(shè)計(jì)中,所述預(yù)處理后漏洞代碼數(shù)據(jù)集中包括多個(gè)去重后代碼中間件;對(duì)應(yīng)地,基于所述預(yù)處理后漏洞代碼數(shù)據(jù)集構(gòu)建得到程序依賴圖集,包括:
14、將所述預(yù)處理后漏洞代碼數(shù)據(jù)集中的各去重后代碼中間件分別構(gòu)造為抽象語(yǔ)法樹,從各抽象語(yǔ)法樹中提取得到代碼基本塊,同時(shí)根據(jù)各抽象語(yǔ)法樹中的控制流轉(zhuǎn)移語(yǔ)句提取得到連接代碼基本塊之間的控制流關(guān)系;
15、以所述代碼基本塊為節(jié)點(diǎn),以所述控制流關(guān)系為控制流邊,構(gòu)建得到與各去重后代碼中間件對(duì)應(yīng)的控制流圖;
16、獲取所述控制流圖中各節(jié)點(diǎn)的數(shù)據(jù)流依賴關(guān)系,并以所述數(shù)據(jù)流依賴關(guān)系為數(shù)據(jù)依賴邊,在所述控制流圖的基礎(chǔ)上構(gòu)建得到與各去重后代碼中間件對(duì)應(yīng)的程序依賴圖,各程序依賴圖組成程序依賴圖集。
17、在一個(gè)可能的設(shè)計(jì)中,構(gòu)建得到程序依賴圖后,所述方法還包括:
18、對(duì)所述程序依賴圖進(jìn)行剪枝處理,得到與各去重后代碼中間件對(duì)應(yīng)的剪枝后程序依賴圖,以便基于各剪枝后程序依賴圖構(gòu)建得到樣本數(shù)據(jù)集。
19、在一個(gè)可能的設(shè)計(jì)中,根據(jù)所述程序依賴圖集創(chuàng)建得到樣本數(shù)據(jù)集,包括:
20、分別為所述程序依賴圖集中的程序依賴圖分配漏洞標(biāo)簽,并將各漏洞標(biāo)簽與其對(duì)應(yīng)的程序依賴圖進(jìn)行綁定;
21、根據(jù)各綁定有漏洞標(biāo)簽的程序依賴圖創(chuàng)建得到樣本數(shù)據(jù)集;其中,所述樣本數(shù)據(jù)集中包括按預(yù)設(shè)比例對(duì)各綁定有漏洞標(biāo)簽的程序依賴圖進(jìn)行劃分得到的訓(xùn)練集、測(cè)試集和驗(yàn)證集。
22、在一個(gè)可能的設(shè)計(jì)中,所述預(yù)訓(xùn)練大語(yǔ)言模型采用deepseek-coder-6.7b-instruct大語(yǔ)言模型,所述deepseek-coder-6.7b-instruct大語(yǔ)言模型的頂部設(shè)置有分類頭;所述輕量級(jí)微調(diào)方法采用p-tuning微調(diào)方法。
23、在一個(gè)可能的設(shè)計(jì)中,所述漏洞挖掘結(jié)果包括漏洞標(biāo)簽預(yù)測(cè)結(jié)果及指定漏洞信息;對(duì)應(yīng)地,基于所述軟件安全漏洞智能挖掘模型和所述cwe漏洞庫(kù)對(duì)所述待測(cè)代碼進(jìn)行漏洞挖掘處理,得到漏洞挖掘結(jié)果,包括:
24、獲取與所述待測(cè)代碼對(duì)應(yīng)的待測(cè)程序依賴圖;
25、將所述待測(cè)程序依賴圖輸入所述軟件安全漏洞智能挖掘模型中,以便所述軟件安全漏洞智能挖掘模型對(duì)所述待測(cè)程序依賴圖進(jìn)行推理預(yù)測(cè),得到漏洞標(biāo)簽預(yù)測(cè)結(jié)果;
26、從所述cwe漏洞庫(kù)中查詢與所述漏洞標(biāo)簽預(yù)測(cè)結(jié)果匹配的指定漏洞信息。
27、第二方面,本發(fā)明提供了一種基于大語(yǔ)言模型的軟件安全漏洞智能挖掘系統(tǒng),用于實(shí)現(xiàn)如上述任意一項(xiàng)所述的基于大語(yǔ)言模型的軟件安全漏洞智能挖掘方法;所述基于大語(yǔ)言模型的軟件安全漏洞智能挖掘系統(tǒng)包括:
28、樣本數(shù)據(jù)集獲取模塊,用于獲取漏洞代碼數(shù)據(jù)集,并對(duì)所述漏洞代碼數(shù)據(jù)集進(jìn)行預(yù)處理,得到預(yù)處理后漏洞代碼數(shù)據(jù)集;還用于基于所述預(yù)處理后漏洞代碼數(shù)據(jù)集構(gòu)建得到程序依賴圖集,并根據(jù)所述程序依賴圖集創(chuàng)建得到樣本數(shù)據(jù)集;
29、模型訓(xùn)練模塊,與所述樣本數(shù)據(jù)集獲取模塊通信連接,用于獲取預(yù)訓(xùn)練大語(yǔ)言模型,并利用所述樣本數(shù)據(jù)集,采用輕量級(jí)微調(diào)方法對(duì)所述預(yù)訓(xùn)練大語(yǔ)言模型進(jìn)行訓(xùn)練,得到軟件安全漏洞智能挖掘模型;
30、cwe漏洞庫(kù)構(gòu)建模塊,用于獲取cwe漏洞數(shù)據(jù),并基于所述cwe漏洞數(shù)據(jù)構(gòu)建得到cwe漏洞庫(kù);
31、漏洞挖掘模塊,與所述模型訓(xùn)練模塊和所述cwe漏洞庫(kù)構(gòu)建模塊通信連接,用于接收待測(cè)代碼,并基于所述軟件安全漏洞智能挖掘模型和所述cwe漏洞庫(kù)對(duì)所述待測(cè)代碼進(jìn)行漏洞挖掘處理,得到漏洞挖掘結(jié)果。
32、第三方面,本發(fā)明提供了一種電子設(shè)備,包括:
33、存儲(chǔ)器,用于存儲(chǔ)計(jì)算機(jī)程序指令;以及,
34、處理器,用于執(zhí)行所述計(jì)算機(jī)程序指令從而完成如上述任意一項(xiàng)所述的基于大語(yǔ)言模型的軟件安全漏洞智能挖掘方法的操作。
35、第四方面,本發(fā)明提供了一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序或指令,所述計(jì)算機(jī)程序或所述指令在被計(jì)算機(jī)執(zhí)行時(shí)實(shí)現(xiàn)如上述任意一項(xiàng)所述的基于大語(yǔ)言模型的軟件安全漏洞智能挖掘方法。
36、本發(fā)明的有益效果為:
37、本發(fā)明公開了一種基于大語(yǔ)言模型的軟件安全漏洞智能挖掘方法、系統(tǒng)、設(shè)備及產(chǎn)品,可自動(dòng)、高效、準(zhǔn)確地挖掘出軟件源代碼中潛在的安全漏洞,且能夠得到完整的漏洞挖掘結(jié)果。具體地,本發(fā)明采用預(yù)訓(xùn)練大語(yǔ)言模型作為軟件安全漏洞智能挖掘模型的初始模型,通過(guò)將漏洞代碼數(shù)據(jù)集中代碼數(shù)據(jù)抽象表示為程序依賴圖,并根據(jù)所述程序依賴圖集創(chuàng)建得到樣本數(shù)據(jù)集,再利用所述樣本數(shù)據(jù)集對(duì)預(yù)訓(xùn)練大語(yǔ)言模型進(jìn)行輕量級(jí)微調(diào)訓(xùn)練,以便基于得到的軟件安全漏洞智能挖掘模型實(shí)現(xiàn)對(duì)待測(cè)代碼的軟件安全漏洞智能挖掘處理,在此過(guò)程中,本發(fā)明利用大語(yǔ)言模型對(duì)自然語(yǔ)言及代碼語(yǔ)言的強(qiáng)大理解能力實(shí)現(xiàn)軟件安全漏洞智能挖掘,同時(shí)可更好地捕捉待測(cè)代碼中的依賴關(guān)系、調(diào)用關(guān)系以及邏輯流程,有助于識(shí)別隱藏在代碼背后的潛在漏洞,進(jìn)而提高本發(fā)明對(duì)軟件代碼中潛在安全漏洞的挖掘能力。此外,傳統(tǒng)的代碼漏洞檢測(cè)方法由于只對(duì)模型做了二分類訓(xùn)練,或者受限于其神經(jīng)網(wǎng)絡(luò)性能,往往只能做到代碼有無(wú)漏洞的檢測(cè),無(wú)法對(duì)漏洞進(jìn)行分類以及給出漏洞描述,而本發(fā)明在對(duì)待測(cè)代碼進(jìn)行漏洞挖掘處理前,通過(guò)收集開源漏洞數(shù)據(jù),構(gòu)建得到cwe漏洞庫(kù),由此可在采用所述軟件安全漏洞智能挖掘模型對(duì)待測(cè)代碼進(jìn)行漏洞挖掘處理時(shí),將大語(yǔ)言模型的預(yù)測(cè)結(jié)果與cwe漏洞庫(kù)中數(shù)據(jù)進(jìn)行關(guān)聯(lián),并可在檢測(cè)到待測(cè)代碼中存在潛在漏洞時(shí),基于cwe漏洞庫(kù)進(jìn)一步對(duì)漏洞進(jìn)行識(shí)別,以便得到包括漏洞的詳細(xì)描述、漏洞影響以及緩解措施等漏洞挖掘結(jié)果,可以更好地發(fā)現(xiàn)軟件代碼中存在的安全問題,以便用戶和軟件廠商及時(shí)修復(fù)。
38、本發(fā)明的其他有益效果將在具體實(shí)施方式中進(jìn)一步進(jìn)行說(shuō)明。