System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本公開涉及人工智能,尤其涉及一種軟件漏洞檢測方法和裝置。
技術介紹
1、軟件漏洞一直是威脅軟件安全的重要因素。軟件漏洞檢測是提高軟件質量和安全性的關鍵手段,在軟件工程領域中具有極其重要的地位和意義。
2、現有的很多商業化檢測方法和工具系統通常使用傳統的軟件的靜態或動態分析技術,對待檢測軟件源代碼文件進行漏洞檢測。例如,依賴于專家人工分析已知各類漏洞生成漏洞規則,并基于漏洞規則進行漏洞檢測。
3、然而,由于受到人為因素等的影響,上述軟件漏洞檢測方法普遍具有較高誤報率和漏報率,且可檢測漏洞種類也很受限。
4、
技術介紹
部分的內容僅僅是專利技術人個人所知曉的信息,并不代表上述信息在本公開申請日之前已經進入公共領域,也不代表其可以成為本公開的現有技術。
技術實現思路
1、本公開提供一種軟件漏洞檢測方法和裝置,用以解決上述技術問題中的至少一種。
2、第一方面,本公開提供一種軟件漏洞檢測方法,包括:
3、獲得待檢測軟件源代碼文件;
4、生成所述待檢測軟件源代碼文件的方法代碼漏洞特征向量數據;
5、將所述方法代碼漏洞特征向量數據輸入至預先訓練好的軟件漏洞檢測模型,得到并輸出所述待檢測軟件源代碼文件的漏洞檢測結果,其中,所述軟件漏洞檢測模型的基礎網絡為結合了雙向門控循環單元和注意力機制的神經網絡模型bigru-att,且所述軟件漏洞檢測模型為所述bigru-att學習預測軟件源代碼文件樣本對應的漏洞檢測結果的預測能力
6、在一些實施例中,所述生成所述待檢測軟件源代碼文件的方法代碼漏洞特征向量數據,包括:
7、采用成員方法提取和標記算法,將所述待檢測軟件源代碼文件轉換為代碼塊集,其中,所述代碼塊集中包括多個方法代碼塊;
8、采用抽象語法樹ast提取算法生成每一方法代碼塊的ast特征信息;
9、將所述ast特征信息和所述代碼塊集合并,得到與所述待檢測軟件源代碼文件對應的方法代碼漏洞特征數據;
10、采用word2vec嵌入將所述方法代碼漏洞特征數據轉化為方法代碼漏洞特征向量數據。
11、在一些實施例中,所述bigru-att包括:bigru層、注意力機制、全連接層、激活函數層;其中,
12、所述bigru層用于對所述方法代碼漏洞特征向量數據進行編碼,并通過前后兩個方向的gru得到兩個隱藏狀態,且對所述兩個隱藏狀態進行拼接;
13、所述注意力機制用于將每個時刻的拼接后的隱藏狀態進行加權求和,得到序列表示;
14、所述全連接層用于對所述序列表示進行線性變換;
15、所述激活函數層用于對線性變換結果進行激活,得到漏洞檢測結果。
16、在一些實施例中,所述注意力機制包括:全連接層、展平層、注意力層、重復輸入層、轉置層、乘法層和求和層;其中,
17、所述bigru層的輸出依次經過所述全連接層和展平層,得到注意力權重向量;
18、所述注意力層用于對所述向量進行softmax操作,得到注意力權重向量;
19、所述重復輸入層用于將所述向量進行重復操作,直至得到與所述bigru層的形狀相匹配的輸出;
20、所述轉置層用于將所述重復輸入層進行轉置操作;
21、所述乘法層用于將所述轉置層的輸出與所述bigru層的輸出進行按元素乘法,得到加權后的隱藏狀態表示;
22、所述求和層用于將所述加權后的隱藏狀態表示沿著時間步的維度進行求和,得到所述序列表示。
23、在一些實施例中,所述軟件漏洞檢測模型是基于代碼漏洞特征向量數據集對所述bigru-att進行訓練、驗證和測試得到的;
24、其中,所述代碼漏洞特征向量數據集中用于對所述bigru-att進行訓練的訓練集是基于多角度數據增強方法mpda進行數據增強得到的,其中,所述訓練集中包括所述軟件源代碼文件樣本。
25、在一些實施例中,所述代碼漏洞特征向量數據集為依次采用抽象語法樹ast提取算法、word2vec嵌入對獲得的軟件漏洞數據集進行處理得到的。
26、在一些實施例中,所述軟件漏洞檢測模型的數量為多個,一種方法代碼對應一個軟件漏洞檢測模型;所述將所述方法代碼漏洞特征向量數據輸入至預先訓練好的軟件漏洞檢測模型,得到并輸出所述待檢測軟件源代碼文件的漏洞檢測結果,包括:
27、將所述方法代碼漏洞特征向量分別輸入至各軟件漏洞檢測模型;
28、基于每一軟件漏洞檢測模型輸出所述待檢測軟件源代碼文件中相應方法代碼對應的漏洞檢測結果,其中,每一軟件漏洞檢測模型的漏洞檢測結果包括用于表征相應的方法代碼是否為漏洞代碼的檢測分數、以及在檢測分數表征方法代碼為漏洞代碼情況下的位置信息。
29、第二方面,本公開提供一種軟件漏洞檢測裝置,包括:
30、獲取單元,用于獲得待檢測軟件源代碼文件;
31、生成單元,用于生成所述待檢測軟件源代碼文件的方法代碼漏洞特征向量數據;
32、確定單元,用于將所述方法代碼漏洞特征向量數據輸入至預先訓練好的軟件漏洞檢測模型,得到并輸出所述待檢測軟件源代碼文件的漏洞檢測結果,其中,所述軟件漏洞檢測模型的基礎網絡為結合了雙向門控循環單元和注意力機制的神經網絡模型bigru-att,且所述軟件漏洞檢測模型為所述bigru-att學習預測軟件源代碼文件樣本對應的漏洞檢測結果的預測能力而得到的。
33、在一些實施例中,所述生成單元具體用于,采用成員方法提取和標記算法,將所述待檢測軟件源代碼文件轉換為代碼塊集,其中,所述代碼塊集中包括多個方法代碼塊;
34、采用抽象語法樹ast提取算法生成每一方法代碼塊的ast特征信息,將所述ast特征信息和所述代碼塊集合并,得到與所述待檢測軟件源代碼文件對應的方法代碼漏洞特征數據,并采用word2vec嵌入將所述方法代碼漏洞特征數據轉化為方法代碼漏洞特征向量數據。
35、在一些實施例中,所述bigru-att包括:bigru層、注意力機制、全連接層、激活函數層;其中,
36、所述bigru層用于對所述方法代碼漏洞特征向量數據進行編碼,并通過前后兩個方向的gru得到兩個隱藏狀態,且對所述兩個隱藏狀態進行拼接;
37、所述注意力機制用于將每個時刻的拼接后的隱藏狀態進行加權求和,得到序列表示;
38、所述全連接層用于對所述序列表示進行線性變換;
39、所述激活函數層用于對線性變換結果進行激活,得到漏洞檢測結果。
40、在一些實施例中,所述注意力機制包括:全連接層、展平層、注意力層、重復輸入層、轉置層、乘法層和求和層;其中,
41、所述bigru層的輸出依次經過所述全連接層和展平層,得到注意力權重向量;
42、所述注意力層用于對所述向量進行softmax操作,得到注本文檔來自技高網...
【技術保護點】
1.一種軟件漏洞檢測方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述生成所述待檢測軟件源代碼文件的方法代碼漏洞特征向量數據,包括:
3.根據權利要求1所述的方法,其特征在于,所述BiGRU-ATT包括:BiGRU層、注意力機制、全連接層、激活函數層;其中,
4.根據權利要求3所述的方法,其特征在于,所述注意力機制包括:全連接層、展平層、注意力層、重復輸入層、轉置層、乘法層和求和層;其中,
5.根據權利要求1所述的方法,其特征在于,所述軟件漏洞檢測模型是基于代碼漏洞特征向量數據集對所述BiGRU-ATT進行訓練、驗證和測試得到的;
6.根據權利要求5所述的方法,其特征在于,所述代碼漏洞特征向量數據集為依次采用抽象語法樹AST提取算法、Word2Vec嵌入對獲得的軟件漏洞數據集進行處理得到的。
7.根據權利要求1所述的方法,其特征在于,所述軟件漏洞檢測模型的數量為多個,一種方法代碼對應一個軟件漏洞檢測模型;所述將所述方法代碼漏洞特征向量數據輸入至預先訓練好的軟件漏洞檢測模型,得到并
8.一種軟件漏洞檢測裝置,其特征在于,包括:
9.一種處理器可讀存儲介質,其特征在于,所述處理器可讀存儲介質存儲有計算機程序,所述計算機程序用于使所述處理器執行權利要求1至7中任一項所述的方法。
10.一種計算機程序產品,包括計算機程序,該計算機程序被處理器執行時實現權利要求1至7中任一項所述方法的步驟。
...【技術特征摘要】
1.一種軟件漏洞檢測方法,其特征在于,所述方法包括:
2.根據權利要求1所述的方法,其特征在于,所述生成所述待檢測軟件源代碼文件的方法代碼漏洞特征向量數據,包括:
3.根據權利要求1所述的方法,其特征在于,所述bigru-att包括:bigru層、注意力機制、全連接層、激活函數層;其中,
4.根據權利要求3所述的方法,其特征在于,所述注意力機制包括:全連接層、展平層、注意力層、重復輸入層、轉置層、乘法層和求和層;其中,
5.根據權利要求1所述的方法,其特征在于,所述軟件漏洞檢測模型是基于代碼漏洞特征向量數據集對所述bigru-att進行訓練、驗證和測試得到的;
6.根據權利要求5所述的方法,其特征在于,所述代碼漏洞特征向量數據...
【專利技術屬性】
技術研發人員:毛斐巧,杜星揚,袁膺翔,白一凡,郭嘉鋒,杜智華,
申請(專利權)人:深圳大學,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。