本技術(shù)涉及智能合約領(lǐng)域,更具體地說,涉及一種智能合約漏洞檢測方法、裝置、設(shè)備和可移動存儲介質(zhì)。
背景技術(shù):
1、在智能合約開發(fā)領(lǐng)域中,在線問答平臺扮演著至關(guān)重要的角色,開發(fā)者們在這里交流經(jīng)驗、分享知識,并尋求解決編程難題的答案。然而,當(dāng)涉及到安全敏感的代碼片段時,這些平臺上的信息往往存在潛在的風(fēng)險。
2、例如,一個開發(fā)者在其上發(fā)布了一個關(guān)于solidity編程的疑問,并很快收到了一個看似完美的答案,其中包含一個代碼片段。這個代碼片段可能立即解決了他的問題,讓他能夠繼續(xù)推進項目。但是,如果這個代碼片段中隱藏了一個不易察覺的拒絕服務(wù)漏洞,那么后果將是災(zāi)難性的。一旦這個漏洞被惡意攻擊者發(fā)現(xiàn)并利用,它可能會導(dǎo)致整個智能合約系統(tǒng)癱瘓,阻止合法交易的執(zhí)行,甚至可能讓攻擊者竊取資金或數(shù)據(jù)。
3、問題在于,這些代碼片段通常是碎片化的,缺乏完整的上下文和編譯環(huán)境。傳統(tǒng)的智能合約漏洞檢測工具要求輸入的是完整的、可編譯的智能合約代碼,因此它們無法直接應(yīng)用于這些碎片化的代碼片段,現(xiàn)有技術(shù)在處理智能合約代碼片段時存在明顯不足。
4、基于上述情況,本技術(shù)提出一種智能合約漏洞檢測方案,以彌補這一空白,確保智能合約系統(tǒng)的穩(wěn)健運行和安全性。
技術(shù)實現(xiàn)思路
1、有鑒于此,本技術(shù)提供了一種智能合約漏洞檢測方法、裝置、設(shè)備和可移動存儲介質(zhì),首先利用語言模型對代碼片段進行智能補全,恢復(fù)其完整的上下文信息,然后結(jié)合精細化的符號執(zhí)行技術(shù)來深入檢測補全后的代碼中可能存在的漏洞,從而能夠準確的評估代碼片段的安全性,避免因復(fù)用存在漏洞的代碼片段而導(dǎo)致的安全風(fēng)險。
2、一種智能合約漏洞檢測方法,包括:
3、獲取待應(yīng)用的智能合約原始代碼并進行預(yù)處理;
4、利用llm模型和gpt模型對預(yù)處理后的所述智能合約原始代碼進行代碼補全,生成智能合約補全代碼;
5、提取所述智能合約補全代碼中的抽象語法樹,并構(gòu)造控制流圖;
6、根據(jù)所述智能合約原始代碼和所述抽象語法樹對所述控制流圖進行修剪,并基于預(yù)置的漏洞特定模式對修剪后的所述控制流圖進行模式匹配,生成漏洞識別結(jié)果。
7、可選的,利用llm模型和gpt模型對預(yù)處理后的所述智能合約原始代碼進行代碼補全,生成智能合約補全代碼,包括:
8、利用llm模型對預(yù)處理后的所述智能合約原始代碼進行代碼補全,生成第一補全代碼;
9、檢測并識別所述智能合約原始代碼中未被所述llm模型補全的缺陷代碼,并采用gpt模型對所述缺陷代碼進行代碼補全,生成第二補全代碼;
10、合并所述第一補全代碼和所述第二補全代碼,得到智能合約補全代碼。
11、可選的,根據(jù)所述智能合約原始代碼和所述抽象語法樹對所述控制流圖進行修剪,并基于預(yù)置的漏洞特定模式對修剪后的所述控制流圖進行模式匹配,生成漏洞識別結(jié)果,包括:
12、通過遍歷所述抽象語法樹分析識別所述智能合約原始代碼中與漏洞檢測無關(guān)的代碼部分,生成ast分析結(jié)果;
13、根據(jù)所述ast分析結(jié)果,修剪掉所述控制流圖中與漏洞檢測無關(guān)的基本塊和基本邊;
14、基于預(yù)置的漏洞特定模式對修剪后的所述控制流圖進行模式匹配,根據(jù)模式匹配結(jié)果確定漏洞識別結(jié)果。
15、可選的,利用llm模型對預(yù)處理后的所述智能合約原始代碼進行代碼補全,生成第一補全代碼,包括:
16、利用所述llm模型中的結(jié)構(gòu)補全網(wǎng)絡(luò),基于預(yù)置的結(jié)構(gòu)補全需求對預(yù)處理后的所述智能合約原始代碼進行結(jié)構(gòu)補全處理,生成結(jié)構(gòu)補全代碼;
17、利用所述llm模型中的版本適配網(wǎng)絡(luò),基于預(yù)置的版本適配要求對所述結(jié)構(gòu)補全代碼進行版本適配處理,生成第一補全代碼。
18、可選的,提取所述智能合約補全代碼中的抽象語法樹,并構(gòu)造控制流圖,包括:
19、對所述智能合約補全代碼進行解析,并將解析得到源代碼轉(zhuǎn)換為抽象語法樹;
20、通過對所述智能合約補全代碼反編譯得到的字節(jié)碼進行符號執(zhí)行處理以構(gòu)建基本塊,并分析所述各基本塊之間的控制流關(guān)系;
21、根據(jù)構(gòu)建的所述基本塊和所述控制流關(guān)系構(gòu)建控制流圖。
22、可選的,基于預(yù)置的漏洞特定模式對修剪后的所述控制流圖進行模式匹配,根據(jù)模式匹配結(jié)果確定漏洞識別結(jié)果,包括:
23、利用符號執(zhí)行技術(shù)對所述修剪后的控制流圖進行符號執(zhí)行檢測,得到對應(yīng)的執(zhí)行邏輯;
24、根據(jù)預(yù)置的漏洞特定模式對所執(zhí)行邏輯進行模式匹配,按照模式匹配結(jié)果確定所述智能合約原始代碼的漏洞類型并生成漏洞識別結(jié)果。
25、可選的,所述利用符號執(zhí)行技術(shù)對所述修剪后的控制流圖進行符號執(zhí)行檢測,得到對應(yīng)的執(zhí)行邏輯,包括:
26、對所述修剪后的控制流圖進行漏洞檢測信息補全,生成補全控制流圖;
27、利用z3求解器對所述修剪后的控制流圖執(zhí)行約束求解,生成路徑選擇結(jié)果;
28、對所述補全控制流圖和所述路徑選擇結(jié)果進行整合分析,得到與所述修剪后的控制流圖對應(yīng)的執(zhí)行邏輯。
29、一種智能合約漏洞檢測裝置,包括:
30、代碼獲取單元,用于獲取待應(yīng)用的智能合約原始代碼并進行預(yù)處理;
31、合約補全單元,用于利用llm模型和gpt模型對預(yù)處理后的所述智能合約原始代碼進行代碼補全,生成智能合約補全代碼;
32、控制流圖單元,用于提取所述智能合約補全代碼中的抽象語法樹,并構(gòu)造控制流圖;
33、漏洞識別單元,用于根據(jù)所述智能合約原始代碼和所述抽象語法樹對所述控制流圖進行修剪,并基于預(yù)置的漏洞特定模式對修剪后的所述控制流圖進行模式匹配,生成漏洞識別結(jié)果。
34、一種智能合約漏洞檢測設(shè)備,包括存儲器和處理器;
35、所述存儲器,用于存儲程序;
36、所述處理器,用于執(zhí)行所述程序,實現(xiàn)如上述任一項所述的智能合約漏洞檢測方法的各個步驟。
37、一種可讀存儲介質(zhì),其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時,實現(xiàn)如上述任一項所述的智能合約漏洞檢測方法的各個步驟。
38、從上述的技術(shù)方案可以看出,本技術(shù)實施例提供的一種智能合約漏洞檢測方法、裝置、設(shè)備和可移動存儲介質(zhì),獲取待應(yīng)用的智能合約原始代碼并進行預(yù)處理,首先利用llm模型和gpt模型對預(yù)處理后的所述智能合約原始代碼進行代碼補全,生成智能合約補全代碼。之后提取所述智能合約補全代碼中的抽象語法樹,并構(gòu)造控制流圖。根據(jù)所述智能合約原始代碼和所述抽象語法樹對所述控制流圖進行修剪,并基于預(yù)置的漏洞特定模式對修剪后的所述控制流圖進行模式匹配,生成漏洞識別結(jié)果。
39、本技術(shù)利用大型語言模型對碎片化的智能合約代碼片段進行智能補全,有效恢復(fù)了代碼的完整上下文信息,使得原本無法直接分析的代碼片段變得可分析,且大大提高了后續(xù)漏洞檢測的準確性。在代碼補全的基礎(chǔ)上,本技術(shù)采用符號執(zhí)行來深入檢測補全后的代碼中可能存在的智能合約漏洞,發(fā)現(xiàn)潛在的邏輯錯誤和安全漏洞,從而能夠準確的評估代碼片段的安全性,避免因復(fù)用存在漏洞的代碼片段而導(dǎo)致的安全風(fēng)險。此外,本技術(shù)能夠適應(yīng)不同類型的智能合約代碼片段和不同的漏洞類型。隨著技術(shù)的不斷進步和新型漏洞的不斷出現(xiàn),本技術(shù)可通過更新優(yōu)化預(yù)置的漏洞特定模式保持檢測能力的先進性和有效性。