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