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