本申請(qǐng)涉及代碼漏洞修復(fù),更具體地說,本申請(qǐng)涉及一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法。
背景技術(shù):
1、基于靜態(tài)程序分析的代碼漏洞修復(fù)是一種通過對(duì)源代碼進(jìn)行全面的靜態(tài)分析,以識(shí)別代碼中的潛在漏洞,并提供相應(yīng)的修復(fù)建議的技術(shù)手段,利用靜態(tài)分析技術(shù),開發(fā)者可以在軟件開發(fā)的早期階段發(fā)現(xiàn)并修復(fù)潛在的漏洞,從而減少后期測(cè)試和運(yùn)行時(shí)的風(fēng)險(xiǎn)。
2、近年來隨著大語言模型的發(fā)展,其在軟件工程領(lǐng)域的應(yīng)用也越來越廣泛。其中一個(gè)重要的應(yīng)用是使用大語言模型對(duì)代碼的代碼漏洞進(jìn)行修復(fù),在使用大語言模型的過程中,除了模型自身的能力之外,生成的結(jié)果的質(zhì)量很大程度上取決于輸入的質(zhì)量。因此,如何利用靜態(tài)程序分析提高漏洞修復(fù)所需的上下文質(zhì)量,以提高代碼漏洞修復(fù)過程中大語言模型的生成結(jié)果質(zhì)量是業(yè)界面臨的難題。
技術(shù)實(shí)現(xiàn)思路
1、本申請(qǐng)?zhí)峁┮环N基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,可以利用靜態(tài)程序分析提高漏洞修復(fù)所需的上下文質(zhì)量,以提高代碼漏洞修復(fù)過程中大語言模型的生成結(jié)果質(zhì)量。
2、本申請(qǐng)?zhí)峁┮环N基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,所述修復(fù)方法包括如下步驟:
3、使用靜態(tài)程序分析工具對(duì)目標(biāo)代碼進(jìn)行漏洞掃描,得到目標(biāo)代碼的基礎(chǔ)漏洞信息;
4、在所述基礎(chǔ)漏洞信息中提取漏洞污染路徑,對(duì)所述漏洞污染路徑進(jìn)行節(jié)點(diǎn)提取,得到所述漏洞污染路徑的多個(gè)污染傳播節(jié)點(diǎn),通過目標(biāo)代碼確定各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息;
5、分別對(duì)各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息進(jìn)行語義提取,進(jìn)而得到各個(gè)污染傳播節(jié)點(diǎn)的代碼語義特征向量,對(duì)各個(gè)代碼語義特征向量進(jìn)行鄰域編碼,得到各個(gè)污染傳播節(jié)點(diǎn)對(duì)應(yīng)的代碼上下文表示,根據(jù)所有的代碼上下文表示生成目標(biāo)代碼的邏輯代碼上下文;
6、獲取預(yù)先訓(xùn)練的大語言模型,基于所述大語言模型、所述漏洞污染路徑和所述邏輯代碼上下文對(duì)目標(biāo)代碼進(jìn)行漏洞修復(fù)。
7、在本實(shí)施例中,根據(jù)目標(biāo)代碼的語言類型選擇靜態(tài)程序分析工具。
8、在本實(shí)施例中,目標(biāo)代碼的基礎(chǔ)漏洞信息包括污染點(diǎn)來源、漏洞污染路徑、過濾函數(shù)和污染爆發(fā)點(diǎn)。
9、在本實(shí)施例中,對(duì)所述漏洞污染路徑進(jìn)行節(jié)點(diǎn)提取,得到所述漏洞污染路徑的多個(gè)污染傳播節(jié)點(diǎn)具體包括:
10、對(duì)于所述漏洞污染路徑中的每個(gè)傳播節(jié)點(diǎn),獲取傳播節(jié)點(diǎn)的處理函數(shù);
11、提取所述處理函數(shù)對(duì)污染數(shù)據(jù)的處理結(jié)果;
12、根據(jù)所述處理結(jié)果確定所述傳播節(jié)點(diǎn)對(duì)應(yīng)的節(jié)點(diǎn)異常值,進(jìn)而得到所述漏洞污染路徑中每個(gè)傳播節(jié)點(diǎn)的節(jié)點(diǎn)異常值;
13、依據(jù)所有的節(jié)點(diǎn)異常值篩選出所述漏洞污染路徑的多個(gè)污染傳播節(jié)點(diǎn)。
14、在本實(shí)施例中,通過目標(biāo)代碼確定各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息具體包括:
15、對(duì)于各個(gè)污染傳播節(jié)點(diǎn),在目標(biāo)代碼中提取污染傳播節(jié)點(diǎn)的邏輯代碼,將所述邏輯代碼作為所述污染傳播節(jié)點(diǎn)的邏輯代碼信息,進(jìn)而得到各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息。
16、在本實(shí)施例中,分別對(duì)各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息進(jìn)行語義提取,進(jìn)而得到各個(gè)污染傳播節(jié)點(diǎn)的代碼語義特征向量具體包括:
17、對(duì)于各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息,對(duì)邏輯代碼信息進(jìn)行結(jié)構(gòu)轉(zhuǎn)換,得到結(jié)構(gòu)轉(zhuǎn)換后的邏輯代碼信息;
18、對(duì)所述結(jié)構(gòu)轉(zhuǎn)換后的邏輯代碼信息進(jìn)行語義特征提取,進(jìn)而得到污染傳播節(jié)點(diǎn)對(duì)應(yīng)的數(shù)據(jù)流特征、控制流特征和安全特征;
19、通過所述數(shù)據(jù)流特征、所述控制流特征和所述安全特征構(gòu)建所述污染傳播節(jié)點(diǎn)的代碼語義特征向量,進(jìn)而得到各個(gè)污染傳播節(jié)點(diǎn)的代碼語義特征向量。
20、在本實(shí)施例中,對(duì)各個(gè)代碼語義特征向量進(jìn)行鄰域編碼,得到各個(gè)污染傳播節(jié)點(diǎn)對(duì)應(yīng)的代碼上下文表示具體包括:
21、獲取深度學(xué)習(xí)模型;
22、對(duì)于各個(gè)污染傳播節(jié)點(diǎn),將污染傳播節(jié)點(diǎn)的代碼語義特征向量輸入到所述深度學(xué)習(xí)模型中進(jìn)行鄰域信息編碼,得到所述污染傳播節(jié)點(diǎn)的代碼鄰域表示;
23、使用所述深度學(xué)習(xí)模型中解碼器對(duì)所述代碼鄰域表示進(jìn)行解碼,得到污染傳播節(jié)點(diǎn)對(duì)應(yīng)的代碼上下文表示,進(jìn)而得到各個(gè)污染傳播節(jié)點(diǎn)對(duì)應(yīng)的代碼上下文表示。
24、在本實(shí)施例中,根據(jù)所有的代碼上下文表示生成目標(biāo)代碼的邏輯代碼上下文是將所有代碼上下文表示組成的信息集合作為目標(biāo)代碼的邏輯代碼上下文。
25、在本實(shí)施例中,所述大語言模型是指codex大語言模型。
26、在本實(shí)施例中,基于所述大語言模型、所述漏洞污染路徑和所述邏輯代碼上下文對(duì)目標(biāo)代碼進(jìn)行漏洞修復(fù)是將所述漏洞污染路徑和所述邏輯代碼上下文輸入到所述大語言模型中生成對(duì)目標(biāo)代碼的漏洞修復(fù)建議。
27、本申請(qǐng)公開的實(shí)施例提供的技術(shù)方案具有以下有益效果:
28、通過使用靜態(tài)程序分析工具對(duì)目標(biāo)代碼進(jìn)行漏洞掃描,得到目標(biāo)代碼的基礎(chǔ)漏洞信息;在所述基礎(chǔ)漏洞信息中提取漏洞污染路徑,對(duì)所述漏洞污染路徑進(jìn)行節(jié)點(diǎn)提取,得到所述漏洞污染路徑的多個(gè)污染傳播節(jié)點(diǎn),通過目標(biāo)代碼確定各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息;分別對(duì)各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息進(jìn)行語義提取,進(jìn)而得到各個(gè)污染傳播節(jié)點(diǎn)的代碼語義特征向量,對(duì)各個(gè)代碼語義特征向量進(jìn)行鄰域編碼,得到各個(gè)污染傳播節(jié)點(diǎn)對(duì)應(yīng)的代碼上下文表示,根據(jù)所有的代碼上下文表示生成目標(biāo)代碼的邏輯代碼上下文;獲取預(yù)先訓(xùn)練的大語言模型,基于所述大語言模型、所述漏洞污染路徑和所述邏輯代碼上下文對(duì)目標(biāo)代碼進(jìn)行漏洞修復(fù)。
29、由此可見本申請(qǐng)中,首先,通過靜態(tài)程序分析提取漏洞污染路徑并識(shí)別污染傳播節(jié)點(diǎn),有助于準(zhǔn)確定位漏洞,并且通過對(duì)污染傳播節(jié)點(diǎn)的邏輯代碼信息進(jìn)行詳細(xì)提取,確保了大語言模型能夠獲取到每個(gè)污染傳播節(jié)點(diǎn)的具體操作、數(shù)據(jù)依賴、潛在風(fēng)險(xiǎn)等信息;然后,利用語義提取與鄰域編碼技術(shù),確保所有污染傳播節(jié)點(diǎn)的語義信息被精確傳遞,可以避免漏洞上下文丟失,通過將所有代碼上下文表示組合為整體的邏輯代碼上下文,可以為大語言模型提供了整個(gè)漏洞傳播鏈條的信息;最后,通過將漏洞污染路徑和邏輯代碼上下文輸入大語言模型,可以幫助理解漏洞的傳播鏈條和代碼邏輯,確保生成的修復(fù)建議與目標(biāo)代碼的實(shí)際情況匹配,以提高代碼漏洞修復(fù)過程中大語言模型的生成結(jié)果質(zhì)量。
30、綜上所述,本申請(qǐng)采用的技術(shù)方案可以利用靜態(tài)程序分析提高漏洞修復(fù)所需的上下文質(zhì)量,以提高代碼漏洞修復(fù)過程中大語言模型的生成結(jié)果質(zhì)量。
1.一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,所述修復(fù)方法包括如下步驟:
2.如權(quán)利要求1所述的一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,根據(jù)目標(biāo)代碼的語言類型選擇靜態(tài)程序分析工具。
3.如權(quán)利要求1所述的一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,目標(biāo)代碼的基礎(chǔ)漏洞信息包括污染點(diǎn)來源、漏洞污染路徑、過濾函數(shù)和污染爆發(fā)點(diǎn)。
4.如權(quán)利要求1所述的一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,對(duì)所述漏洞污染路徑進(jìn)行節(jié)點(diǎn)提取,得到所述漏洞污染路徑的多個(gè)污染傳播節(jié)點(diǎn)具體包括:
5.如權(quán)利要求1所述的一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,通過目標(biāo)代碼確定各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息具體包括:
6.如權(quán)利要求1所述的一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,分別對(duì)各個(gè)污染傳播節(jié)點(diǎn)的邏輯代碼信息進(jìn)行語義提取,進(jìn)而得到各個(gè)污染傳播節(jié)點(diǎn)的代碼語義特征向量具體包括:
7.如權(quán)利要求1所述的一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,對(duì)各個(gè)代碼語義特征向量進(jìn)行鄰域編碼,得到各個(gè)污染傳播節(jié)點(diǎn)對(duì)應(yīng)的代碼上下文表示具體包括:
8.如權(quán)利要求1所述的一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,根據(jù)所有的代碼上下文表示生成目標(biāo)代碼的邏輯代碼上下文是將所有代碼上下文表示組成的信息集合作為目標(biāo)代碼的邏輯代碼上下文。
9.如權(quán)利要求1所述的一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,所述大語言模型是指codex大語言模型。
10.如權(quán)利要求1所述的一種基于靜態(tài)程序分析的代碼漏洞修復(fù)方法,其特征在于,基于所述大語言模型、所述漏洞污染路徑和所述邏輯代碼上下文對(duì)目標(biāo)代碼進(jìn)行漏洞修復(fù)是將所述漏洞污染路徑和所述邏輯代碼上下文輸入到所述大語言模型中生成對(duì)目標(biāo)代碼的漏洞修復(fù)建議。