本發明涉及人工智能,尤其涉及一種基于改進akc卷積的源代碼脆弱性檢測方法及相關裝置。
背景技術:
1、近年來,隨著計算機科學的發展,社會各個領域的相關軟件層出不窮;然而,隨之而來的是軟件漏洞的迅速增加,并展現出復雜性與多樣性的特點,這些復雜的軟件漏洞給社會生產帶來了許多挑戰;代碼脆弱性是指軟件代碼中存在的一些缺陷或漏洞,這些缺陷與漏洞容易導致軟件在遭受惡意攻擊時表現出不安全的行為。脆弱性可能源于設計上的缺陷、編碼錯誤、系統配置問題或安全策略不足;在軟件開發過程中,識別與修復這些脆弱性是確保軟件安全的關鍵步驟;根據美國國家漏洞數據庫(nvd)的最新數據,截止至2024年,大約有15萬個漏洞被記錄在數據庫中,這是一個十分龐大的數量;因此,一個高效、穩定、自動化的源代碼脆弱性檢測系統對保障系統穩健型與可靠性是十分必要的。
2、早期的源代碼脆弱性檢測方法大多是基于源代碼相似性來進行比對與檢測,或基于某些專家制定的規則,來進行對比分析,從而找出代碼中存在脆弱性的部分,識別潛在的漏洞威脅;然而,這種傳統方法存在一定的局限性,基于代碼相似度的漏洞檢測方法容易存在誤報率與漏報率較高的問題,相似度算法如果設計得不夠精細,容易將正常的代碼誤報為漏洞;如果漏洞的代碼表達形式與已知的漏洞模式不完全相同,系統也無法正確識別;而基于規則的漏洞檢測方法也同樣存在一些問題,例如規則的覆蓋面不夠廣,無法覆蓋所有已知與未知的漏洞,同時規則的編寫也較為復雜,編寫準確的規則可能非常困難,需要深入理解漏洞的機理和代碼的上下文,頻繁地更新規則,以保持漏洞的檢測準確性。
3、近年來,深度學習領域發展迅速,給漏洞檢測領域帶來了很大的革新;深度學習的方法可以自動從海量的源碼數據中自動學習脆弱性源碼的特征與模式,不需要人為進行干預,可以與很多方法進行組合,擴展性高;此外,通過深度學習的方法可以檢測一些較為復雜的漏洞,能夠更好地提高漏洞檢測的準確性;深度學習的這些優點使得當前很多源碼脆弱性檢測的方法都在深度學習的基礎上進行研究。
4、隨著近幾年深度學習技術的發展,涌現出了許多將深度學習技術結合源代碼脆弱性檢測的方法,其中包括使用大模型輔助脆弱源代碼的分析與檢測,并將大模型的檢測結果作為新的數據集,微調預訓練的檢測模型,從而提高源代碼脆弱性檢測預訓練模型的訓練精度,將代碼處理成純文本的表現形式,使用自然語言處理的方法對代碼進行嵌入,還有使用靜態工具,將代碼處理成圖結構,輸入圖神經網絡進行分析,或通過分析代碼結構圖分析代碼,生成圖像結構的數據,再輸入卷積網絡進行檢測;雖然以上方法都各有其獨特的有點,但仍有許多可以改進的地方;在早期的漏洞檢測研究中,有許多方法使用公開或自定義的漏洞集,使用相似性匹配算法來匹配漏洞集中相似的漏洞,定位漏洞產生的片段,從而達到檢測漏洞的目的,然而,現實世界中的漏洞是動態變化的,這種方法可能會導致現實世界中的漏洞無法完全匹配,只能檢測部分存在于既定漏洞集中的漏洞,泛化性不高;從而導致在現實應用中出現漏檢的情況。
技術實現思路
1、本發明的目的在于克服現有技術的不足,本發明提供了一種基于改進akc卷積的源代碼脆弱性檢測方法及相關裝置,與現有的多種源代碼脆弱性檢測方法相比,在檢測的精度、誤報率等數據上都在一定程度上得到了提高。
2、為了解決上述技術問題,本發明實施例提供了一種基于改進akc卷積的源代碼脆弱性檢測方法,所述方法包括:
3、獲得待檢測源代碼,對所述待檢測源代碼進行代碼預處理,形成預處理后的待檢測源代碼;
4、基于靜態工具對預處理后的待檢測源代碼進行分析處理,并根據分析結果生成程序依賴圖;
5、基于中預設算法對所述程序依賴圖進行圖像轉換處理,生成轉換圖像,所述轉換圖像由rgb圖像格式的向量組合而成;
6、將所述轉換圖像輸入代碼脆弱性檢測模型中進行檢測處理,獲得所述待檢測源代碼的脆弱性檢測結果,所述代碼脆弱性檢測模型嵌入有改進的可改變卷積核akc結構;改進的akc結構由定義初始采樣位置、注意力結構和可變形卷積運算組成。
7、可選的,所述對所述待檢測源代碼進行代碼預處理,形成預處理后的待檢測源代碼,包括:
8、識別所述待檢測源代碼中的注釋信息,并對識別到的注釋信息進行刪除操作,獲得刪除后的待檢測源代碼;
9、獲得刪除后的待檢測源代碼中的手動定義的非規范的變量名稱以及手動定義的非規范的函數名稱;
10、將手動定義的非規范的變量名稱一一映射為規范的符號名稱,同時將將手動定義的非規范的函數名稱一一映射為規范的函數名稱,形成預處理后的待檢測源代碼。
11、可選的,所述基于靜態工具對預處理后的待檢測源代碼進行分析處理,并根據分析結果生成程序依賴圖,包括:
12、基于所述靜態工具對預處理后的待檢測源代碼進行分析,生成代碼控制流圖,所述代碼控制流圖中的一個節點代表一個函數語句,且所述代碼控制流圖的邊都是有向邊,兩個節點之間的有向邊表示兩個語句之間的執行順序與分支關系;
13、基于所述代碼控制流圖的節點與節點之間的依賴性生成所述程序依賴圖。
14、可選的,所述基于預設算法對所述程序依賴圖進行圖像轉換處理,生成轉換圖像,包括:
15、基于度中心性算法對所述程序依賴圖中的各節點的度中心性進行計算,獲得所述程序依賴圖中各節點的度中心性向量,所述度中心性向量用于表征節點中心性的度量的向量,且節點對應度中心性的度量值越大,表征該節點越重要;
16、基于接近中心性算法對所述程序依賴圖中的各節點之間的接近中心性進行計算,獲得所述程序依賴圖中各節點的接近中心性向量,所述接近中心性向量用于表征節點到其他節點的最短路徑的平均長度的向量,且該節點越接近其他節點,其接近中心性越高;
17、基于二階中心性算法對所述程序依賴圖中的節點二階中心性進行計算處理,獲得所述程序依賴圖中各節點的二階中心性向量,所述二階中心性向量用于表征節點隨機游走返回時間的標準偏差的向量;
18、基于所述程序依賴圖中各節點的度中心性向量、接近中心性向量以及二階中心性向量生成所述轉換圖像。
19、可選的,所述基于所述程序依賴圖中各節點的度中心性向量、接近中心性向量以及二階中心性向量生成所述轉換圖像,包括:
20、將所述度中心性向量中的所有向量與度中心性算法計算得到的數值相乘處理,并對第一相乘結果逐一排序形成第一更新向量;
21、將接近中心性向量中的所有向量與接近中心性算法計算得到的數值相乘處理,并對第二相乘結果逐一排序形成第二更新向量;
22、將二階中心性向量中的所有向量與二階中心性算法計算得到的數值相乘處理,并對第三相乘結果逐一排序形成第三更新向量;
23、將所述第一更新向量、所述第二更新向量以及所述第三更新向量按照rgb圖像的格式進行組合處理,生成所述轉換圖像。
24、可選的,所述初始采樣位置的定義為將采樣網格生成常規采樣網格,并以所述常規采樣網格為中心定義初始采樣位置;
25、所述注意力結構用于將輸入節點的特征集x映射到query(q)、key(k)、value(v),query(q)表示給定請求查詢q,key(k)表示給定鍵值k,value(v)表示給定屬性值v,且q=xwq、k=xwk、v=xwv。
26、可選的,所述注意力結構的計算如下:
27、
28、其中,dout表示q的維度;wq、wk、wv表示需要訓練的三個不同的權重參數;
29、對于節點xv和xu,自注意計算過程如下:
30、
31、f(xu)=wvxv;
32、其中,<.,.>表示兩個節點之間的點乘的積。
33、另外,本發明實施例還提供了一種基于改進akc卷積的源代碼脆弱性檢測裝置,所述裝置包括:
34、預處理模塊:用于獲得待檢測源代碼,對所述待檢測源代碼進行代碼預處理,形成預處理后的待檢測源代碼;
35、圖生成模塊:用于基于靜態工具對預處理后的待檢測源代碼進行分析處理,并根據分析結果生成程序依賴圖;
36、圖轉換模塊:用于基于中預設算法對所述程序依賴圖進行圖像轉換處理,生成轉換圖像,所述轉換圖像由rgb圖像格式的向量組合而成;
37、檢測模塊:用于將所述轉換圖像輸入代碼脆弱性檢測模型中進行檢測處理,獲得所述待檢測源代碼的脆弱性檢測結果,所述代碼脆弱性檢測模型嵌入有改進的可改變卷積核akc結構;改進的akc結構由定義初始采樣位置、注意力結構和可變形卷積運算組成。
38、另外,本發明實施例還提供了一種電子設備,所述電子設備包括處理器及存儲器,所述存儲器用于存儲指令,所述處理器用于調用所述存儲器中的指令,使得所述電子設備執行如上述中任一項所述的源代碼脆弱性檢測方法。
39、另外,本發明實施例還提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲計算機指令,當所述計算機指令在電子設備上運行時,使得所述電子設備執行如上述中任一項所述的源代碼脆弱性檢測方法。
40、在本發明實施例中,通過對待檢測源代碼進行代碼預處理,形成預處理后的待檢測源代碼;基于靜態工具對預處理后的待檢測源代碼進行分析處理,并根據分析結果生成程序依賴圖;基于中預設算法對程序依賴圖進行圖像轉換處理,生成轉換圖像,轉換圖像由rgb圖像格式的向量組合而成;將轉換圖像輸入代碼脆弱性檢測模型中進行檢測處理,獲得待檢測源代碼的脆弱性檢測結果,代碼脆弱性檢測模型嵌入有改進的可改變卷積核akc結構;與現有的多種源代碼脆弱性檢測方法相比,在檢測的精度、誤報率等數據上都在一定程度上得到了提高。