1.一種基于跨合約重入語義圖的重入漏洞智能檢測方法;該方法首先對智能合約代碼進(jìn)行程序分析,得到每個合約的語義圖,分析調(diào)用合約與被調(diào)用合約之間的調(diào)用關(guān)系,通過添加合約之間的函數(shù)調(diào)用控制流、函數(shù)參數(shù)傳遞的數(shù)據(jù)流、函數(shù)返回值數(shù)據(jù)流和基于fallback機(jī)制的控制流,得到包含全局上下文信息的跨合約語義圖;然后,針對引發(fā)重入漏洞的fallback機(jī)制,對跨合約語義圖中面向重入漏洞的關(guān)鍵節(jié)點(diǎn)進(jìn)行雙向約簡,通過去除與重入漏洞無關(guān)的節(jié)點(diǎn)得到跨合約重入語義圖;最后,以跨合約重入語義圖的矢量化結(jié)果作為輸入,應(yīng)用序列模型學(xué)習(xí)跨合約重入語義圖的語義特征,最終實現(xiàn)重入漏洞智能檢測;該方法包括下列步驟:
2.根據(jù)權(quán)利要求1所述的基于跨合約重入語義圖的重入漏洞智能檢測方法,其特征在于,在步驟1)中,生成跨合約語義圖;針對智能合約代碼進(jìn)行程序分析,構(gòu)建每個合約的語義圖,分析調(diào)用合約與被調(diào)用合約之間的調(diào)用關(guān)系,添加合約之間的函數(shù)調(diào)用控制流、函數(shù)參數(shù)傳遞的數(shù)據(jù)流、函數(shù)返回值數(shù)據(jù)流和基于fallback機(jī)制的控制流,得到包含全局上下文信息的跨合約語義圖。
3.根據(jù)權(quán)利要求1所述的基于跨合約重入語義圖的重入漏洞智能檢測方法,其特征在于,在步驟2)中,生成跨合約重入語義圖;針對引發(fā)重入漏洞的fallback機(jī)制,對跨合約語義圖中面向重入漏洞的關(guān)鍵節(jié)點(diǎn)進(jìn)行雙向約簡,通過去除與重入漏洞無關(guān)的節(jié)點(diǎn)得到跨合約重入語義圖。
4.根據(jù)權(quán)利要求1所述的基于跨合約重入語義圖的重入漏洞智能檢測方法,其特征在于,在步驟3)中,重入漏洞智能檢測;將面向重入漏洞跨合約語義圖的矢量化結(jié)果作為輸入,應(yīng)用序列模型學(xué)習(xí)跨合約重入語義圖的語義特征,進(jìn)而實現(xiàn)重入漏洞智能檢測。