本公開的實施例涉及計算機,具體涉及一種基于蒸餾學習的無注釋代碼漏洞檢測方法、裝置、電子設備和計算機可讀介質(zhì)。
背景技術(shù):
1、漏洞檢測是保障軟件系統(tǒng)安全性的重要手段,隨著軟件復雜度的增加,自動化漏洞檢測技術(shù)在維護系統(tǒng)穩(wěn)定性和避免安全風險方面變得越來越關(guān)鍵?,F(xiàn)有的漏洞檢測技術(shù)主要分為兩類:基于程序分析的方法和基于深度學習的方法?;诔绦蚍治龅姆椒ㄒ蕾囶A定義規(guī)則來檢測代碼中的漏洞,但存在明顯局限性。首先,擴展性較差,在處理復雜代碼邏輯或跨文件調(diào)用時效果有限,因為規(guī)則難以涵蓋所有漏洞類型,尤其是需要深入理解代碼語義的漏洞。其次,靜態(tài)分析難以應對動態(tài)行為,例如復雜的控制流、數(shù)據(jù)流和多線程并發(fā)問題,隨著代碼復雜性的增加,其效果逐漸減弱。此外,靜態(tài)分析在處理無注釋代碼時依賴機械化規(guī)則,無法推斷代碼意圖,容易遺漏需要上下文理解的漏洞。大語言模型(largelanguage?models,llms)在代碼生成、補全和漏洞檢測中取得了顯著進展,尤其是在帶有詳細注釋的代碼中表現(xiàn)優(yōu)異。
2、然而,這類模型仍存在以下技術(shù)問題:對上下文的過度依賴:大語言模型在高質(zhì)量代碼中可以通過注釋信息理解代碼的語義和意圖,生成更準確的漏洞檢測結(jié)果。然而,當模型面對無注釋代碼時,缺乏上下文語義支持,導致其推理能力受限,模型很難準確理解復雜邏輯,進而難以有效檢測漏洞。
3、該背景技術(shù)部分中所公開的以上信息僅用于增強對本發(fā)明構(gòu)思的背景的理解,并因此,其可包含并不形成本國的本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。
技術(shù)實現(xiàn)思路
1、本公開的內(nèi)容部分用于以簡要的形式介紹構(gòu)思,這些構(gòu)思將在后面的具體實施方式部分被詳細描述。本公開的內(nèi)容部分并不旨在標識要求保護的技術(shù)方案的關(guān)鍵特征或必要特征,也不旨在用于限制所要求的保護的技術(shù)方案的范圍。
2、本公開的一些實施例提出了一種基于蒸餾學習的無注釋代碼漏洞檢測方法、裝置、電子設備和計算機可讀介質(zhì),來解決以上背景技術(shù)部分提到的技術(shù)問題中的一項或多項。
3、第一方面,本公開的一些實施例提供了一種基于蒸餾學習的無注釋代碼漏洞檢測方法,包括:構(gòu)建教師模型和初始學生模型,其中,上述教師模型的輸入為代碼相關(guān)信息,上述代碼相關(guān)信息包括:代碼、代碼注釋信息和對應的抽象語法樹,輸出為教師軟標簽,上述教師模型包括:嵌入層、多層編碼器、選擇器、交互模塊和分類器,上述多層編碼器包括:多個中間特征提取層,上述多個中間特征提取層中的中間特征提取層用于提取代碼、代碼注釋信息和對應的抽象語法樹的特征;將目標代碼相關(guān)信息輸入至教師模型包括的嵌入層、多層編碼器、選擇器和交互模塊,得到教師特征表示信息,其中,上述目標代碼相關(guān)信息包括:第一目標代碼,第一目標代碼注釋信息和對應的第一目標抽象語法樹;利用上述教師特征表示信息、上述初始學生模型和真實標簽,確定聯(lián)合損失信息;利用上述聯(lián)合損失信息對上述初始學生模型進行蒸餾訓練,得到蒸餾后的學生模型;將目標代碼信息輸入至上述蒸餾后的學生模型,得到檢測結(jié)果,其中,上述目標代碼信息包括:第二目標代碼和對應的第二目標抽象語法樹;響應于上述檢測結(jié)果存在漏洞,生成預警信息,以及將上述預警信息發(fā)送至目標終端以進行顯示。
4、第二方面,本公開的一些實施例提供了一種基于蒸餾學習的無注釋代碼漏洞檢測裝置,包括:構(gòu)建單元,被配置成構(gòu)建教師模型和初始學生模型,其中,上述教師模型的輸入為代碼相關(guān)信息,上述代碼相關(guān)信息包括:代碼、代碼注釋信息和對應的抽象語法樹,輸出為教師軟標簽,上述教師模型包括:嵌入層、多層編碼器、選擇器、交互模塊和分類器,上述多層編碼器包括:多個中間特征提取層,上述多個中間特征提取層中的中間特征提取層用于提取代碼、代碼注釋信息和對應的抽象語法樹的特征;輸入單元,被配置成將目標代碼相關(guān)信息輸入至教師模型包括的嵌入層、多層編碼器、選擇器和交互模塊,得到教師特征表示信息,其中,上述目標代碼相關(guān)信息包括:第一目標代碼,第一目標代碼注釋信息和對應的第一目標抽象語法樹;確定單元,被配置成利用上述教師特征表示信息、上述初始學生模型和真實標簽,確定聯(lián)合損失信息;訓練單元,被配置成利用上述聯(lián)合損失信息對上述初始學生模型進行蒸餾訓練,得到蒸餾后的學生模型;檢測單元,被配置成將目標代碼信息輸入至上述蒸餾后的學生模型,得到檢測結(jié)果,其中,上述目標代碼信息包括:第二目標代碼和對應的第二目標抽象語法樹;顯示單元,被配置成響應于上述檢測結(jié)果存在漏洞,生成預警信息,以及將上述預警信息發(fā)送至目標終端以進行顯示。
5、第三方面,本公開的一些實施例提供了一種電子設備,包括:一個或多個處理器;存儲裝置,其上存儲有一個或多個程序,當一個或多個程序被一個或多個處理器執(zhí)行,使得一個或多個處理器實現(xiàn)如第一方面中任一實現(xiàn)方式描述的方法。
6、第四方面,本公開的一些實施例提供了一種計算機可讀介質(zhì),其上存儲有計算機程序,其中,程序被處理器執(zhí)行時實現(xiàn)如第一方面中任一實現(xiàn)方式描述的方法。
7、本公開的上述各個實施例具有如下有益效果:通過本公開的一些實施例的基于蒸餾學習的無注釋代碼漏洞檢測方法得到的無注釋代碼漏洞檢測方法,對無注釋代碼漏洞檢測的檢測能力有所提高。具體來說,造成相關(guān)的無注釋代碼漏洞檢測能力不足的原因在于:現(xiàn)有技術(shù)依賴注釋信息來理解代碼上下文。基于此,本公開的一些實施例的基于蒸餾學習的無注釋代碼漏洞檢測方法,首先,構(gòu)建教師模型和初始學生模型,其中,上述教師模型的輸入為代碼相關(guān)信息,上述代碼相關(guān)信息包括:代碼、代碼注釋信息和對應的抽象語法樹,輸出為教師軟標簽,上述教師模型包括:嵌入層、多層編碼器、選擇器、交互模塊和分類器,上述多層編碼器包括:多個中間特征提取層,上述多個中間特征提取層中的中間特征提取層用于提取代碼、代碼注釋信息和對應的抽象語法樹的特征。多模態(tài)輸入(代碼、代碼注釋信息和對應的抽象語法樹)可以全面捕捉代碼語義與結(jié)構(gòu)信息,避免單一數(shù)據(jù)的信息缺失。分層中間特征提取層從詞法、句法到語義逐層抽象,可以精準提取多粒度特征。選擇器的使用可以聚焦關(guān)鍵特征,交互模塊融合多源信息,增強模型對復雜代碼模式的表征能力。輸出教師軟標簽(置信度概率分布)而非硬標簽,傳遞“不確定性”信息,可以指導學生模型學習更細致的漏洞關(guān)聯(lián)模式,提升知識遷移效率。然后,將目標代碼相關(guān)信息輸入至教師模型包括的嵌入層、多層編碼器、選擇器和交互模塊,得到教師特征表示信息,其中,上述目標代碼相關(guān)信息包括:第一目標代碼,第一目標代碼注釋信息和對應的第一目標抽象語法樹。生成的教師特征表示信息可以更全面、精準,能有效傳遞復雜代碼的語義知識,為學生模型提供高質(zhì)量監(jiān)督信號。再然后,利用上述教師特征表示信息、上述初始學生模型和真實標簽,確定聯(lián)合損失信息。聯(lián)合損失融合任務監(jiān)督(真實標簽)與知識遷移(教師特征對齊),既約束學生模型學習真實模式,又促使其繼承教師的泛化能力,提升無注釋代碼漏洞檢測的準確率與泛化性。其次,利用上述聯(lián)合損失信息對上述初始學生模型進行蒸餾訓練,得到蒸餾后的學生模型。再其次,將目標代碼信息輸入至上述蒸餾后的學生模型,得到檢測結(jié)果,其中,上述目標代碼信息包括:第二目標代碼和對應的第二目標抽象語法樹。聯(lián)合損失可以融合任務監(jiān)督與知識遷移,蒸餾訓練使學生模型在學習真實模式的同時繼承教師的泛化能力,有效提升無注釋代碼漏洞檢測的準確率與泛化性。最后,響應于上述檢測結(jié)果存在漏洞,生成預警信息,以及將上述預警信息發(fā)送至目標終端以進行顯示。檢測到漏洞后即時生成預警信息并推送至終端顯示,可以確保用戶及時獲取風險提示,縮短漏洞響應時間,提升安全防護的時效性與有效性。