国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于語(yǔ)義感知圖神經(jīng)網(wǎng)絡(luò)的智能合約字節(jié)碼漏洞檢測(cè)方法

2022-03-28 06:49:32上官晨晗彭小燕童俊成袁安琪
工程科學(xué)與技術(shù) 2022年2期
關(guān)鍵詞:字節(jié)合約漏洞

趙 波,上官晨晗*,彭小燕,安 揚(yáng),童俊成,袁安琪

(1.武漢大學(xué) 國(guó)家網(wǎng)絡(luò)安全學(xué)院,湖北 武漢 430072;2.上海航天電子通訊設(shè)備研究所,上海 201109;3.武漢大學(xué) 計(jì)算機(jī)學(xué)院,湖北 武漢 430072)

智能合約最早由尼克·薩博在20世紀(jì)90年代提出,能夠通過技術(shù)手段來(lái)強(qiáng)制保證合同條款在條件滿足后被自動(dòng)執(zhí)行,無(wú)需可信第三方的監(jiān)督。而區(qū)塊鏈技術(shù)的出現(xiàn)恰好為智能合約提供了去中心化和不可篡改的可信運(yùn)行平臺(tái)。

隨著區(qū)塊鏈在學(xué)術(shù)界和工業(yè)界的廣泛研究與應(yīng)用,智能合約存在的安全問題開始受到各方關(guān)注。由于智能合約在區(qū)塊鏈上通常用于管理加密數(shù)字資產(chǎn),因此更容易成為攻擊者的目標(biāo)。一旦智能合約存在漏洞遭受攻擊,就可能造成重大經(jīng)濟(jì)損失。2016年,The DAO事件中黑客利用智能合約中的重入漏洞竊取360萬(wàn)以太幣;2017年,Parity錢包提供的智能合約代碼存在代碼注入漏洞導(dǎo)致上億美元資金被凍結(jié)。智能合約已成為區(qū)塊鏈安全的重災(zāi)區(qū),每隔幾個(gè)月就有新的智能合約漏洞被發(fā)現(xiàn)。

智能合約具有在區(qū)塊鏈上交易公開透明、可追溯和不可篡改的優(yōu)勢(shì),然而也因此引入了更多的攻擊面。比如,導(dǎo)致The DAO事件的重入漏洞,就是利用了智能合約的公開性,使惡意攻擊者能夠遞歸調(diào)用受害合約的回退函數(shù)(fallback function)重復(fù)獲得轉(zhuǎn)賬收益。此外,智能合約還有如短地址攻擊、特權(quán)函數(shù)暴露、代碼注入等許多漏洞。據(jù)研究統(tǒng)計(jì),在以太坊中只有1%的智能合約是開源的,絕大多數(shù)智能合約是以字節(jié)碼的形式運(yùn)行在以太坊虛擬機(jī)(EVM)上,且一旦上鏈就不可更改,因此研究基于字節(jié)碼的漏洞檢測(cè)技術(shù)具有重大意義。

傳統(tǒng)智能合約漏洞檢測(cè)方法主要受到代碼漏洞檢測(cè)方法的啟發(fā),依靠符號(hào)執(zhí)行和動(dòng)態(tài)分析方法進(jìn)行漏洞檢測(cè)。主流的智能合約的漏洞檢測(cè)工具如Oyente,是最早的智能合約漏洞分析工具之一,使用符號(hào)執(zhí)行方法分析智能合約字節(jié)碼漏洞,也常被作為其他檢測(cè)方法(例如Maian和Osiris)的基礎(chǔ)。Mythril依靠對(duì)智能合約字節(jié)碼的符號(hào)執(zhí)行,控制流分析和污點(diǎn)檢測(cè)進(jìn)行智能合約漏洞挖掘。Slither是一個(gè)靜態(tài)分析框架,它將智能合約轉(zhuǎn)換為名為SlithIR的中間表示,并應(yīng)用數(shù)據(jù)流和污點(diǎn)跟蹤等程序分析技術(shù)進(jìn)行漏洞挖掘。Smartcheck是基于智能合約源代碼進(jìn)行詞法和語(yǔ)法分析的靜態(tài)分析工具,用于查找漏洞模式和編程中的錯(cuò)誤。Manticore使用符號(hào)執(zhí)行來(lái)查找智能合約字節(jié)碼中可能導(dǎo)致重入漏洞和潛在自毀操作的執(zhí)行路徑。

這些方法存在以下不足:1)自動(dòng)化程度較低,對(duì)智能合約的漏洞分析依賴于分析人員自身的技術(shù)水平與分析經(jīng)驗(yàn)。2)檢測(cè)準(zhǔn)確率較低,誤報(bào)率較高,覆蓋漏洞種類不全面。Durieux等使用經(jīng)過手工分類的智能合約數(shù)據(jù)集對(duì)這些工具進(jìn)行了測(cè)試,發(fā)現(xiàn)這些工具對(duì)漏洞的檢測(cè)率最高僅能達(dá)到27%,且無(wú)法覆蓋所有漏洞種類。在使用過程中,檢測(cè)工具的誤報(bào)率及各類警報(bào)較多。3)拓展性差,適用性低。傳統(tǒng)方法檢測(cè)工具嚴(yán)重依賴專家規(guī)則,但專家規(guī)則適用性有限,無(wú)法覆蓋數(shù)量迅速增長(zhǎng)的智能合約,且過多的規(guī)則會(huì)導(dǎo)致檢測(cè)器龐大且效率低下。

近年來(lái),基于圖神經(jīng)網(wǎng)絡(luò)的方法在傳統(tǒng)代碼漏洞檢測(cè)方向取得了很大成效。圖神經(jīng)網(wǎng)絡(luò)由Scarselli等提出,通過更改神經(jīng)網(wǎng)絡(luò)模型和消息傳遞方式,增加深度學(xué)習(xí)組件,能夠針對(duì)不同數(shù)據(jù)的特點(diǎn)實(shí)現(xiàn)具有不同功能的神經(jīng)網(wǎng)絡(luò)模型。例如:圖卷積神經(jīng)網(wǎng)絡(luò)(GCN)利用卷積層來(lái)更新節(jié)點(diǎn)嵌入;Graph-SAGE能夠利用節(jié)點(diǎn)屬性信息產(chǎn)生未知節(jié)點(diǎn)的歸納式學(xué)習(xí)框架;圖注意力網(wǎng)絡(luò)GAT能夠通過自注意力機(jī)制對(duì)鄰居節(jié)點(diǎn)進(jìn)行聚合,實(shí)現(xiàn)了權(quán)重自適應(yīng)分配。Xu等提出了一種基于圖神經(jīng)網(wǎng)絡(luò)的二進(jìn)制代碼相似度比較方法Gemini,展示出了圖神經(jīng)網(wǎng)絡(luò)在漏洞挖掘領(lǐng)域的巨大潛力。Xu等已經(jīng)證明圖神經(jīng)網(wǎng)絡(luò)具備足夠通過Weisfeiler-Lehman測(cè)試的識(shí)別能力,即能在多項(xiàng)式時(shí)間內(nèi)解決同構(gòu)圖問題,一定程度上解決了傳統(tǒng)基于代碼匹配和符號(hào)執(zhí)行的方法執(zhí)行效率低下的問題。

上述方法雖然解決了傳統(tǒng)方法自動(dòng)化程度低的問題,但仍具有以下不足:1)缺乏對(duì)智能合約字節(jié)碼語(yǔ)義特征的提取,檢測(cè)效果不佳。基于圖神經(jīng)網(wǎng)絡(luò)的智能合約漏洞檢測(cè)方法主要考慮圖結(jié)構(gòu)而缺少對(duì)智能合約字節(jié)碼的語(yǔ)義特點(diǎn)進(jìn)行特征提取,只考慮了神經(jīng)網(wǎng)絡(luò)對(duì)函數(shù)調(diào)用關(guān)系的學(xué)習(xí),導(dǎo)致節(jié)點(diǎn)中大量語(yǔ)義信息丟失,難以生成高質(zhì)量節(jié)點(diǎn)表征(高質(zhì)量的節(jié)點(diǎn)表征能夠用于衡量節(jié)點(diǎn)相似性,同時(shí)也是準(zhǔn)確分類節(jié)點(diǎn)的前提)。2)部分檢測(cè)方法覆蓋的漏洞類型較少,對(duì)于新出現(xiàn)的漏洞不具有很好的適應(yīng)性。

為了解決上述智能合約漏洞檢測(cè)方法存在的問題,本文提出一種基于語(yǔ)義感知的圖神經(jīng)網(wǎng)絡(luò)智能合約漏洞檢測(cè)方法(L-GCN),針對(duì)實(shí)際部署環(huán)境下的智能合約,解決漏洞檢測(cè)方法準(zhǔn)確率低,誤報(bào)率高,難以覆蓋復(fù)雜的智能合約函數(shù)調(diào)用關(guān)系的問題。該方法提出基于智能合約字節(jié)碼的語(yǔ)義提取方式,將自然語(yǔ)言處理的方法應(yīng)用于智能合約字節(jié)碼指令的語(yǔ)義提取,使用語(yǔ)義向量代替低維向量,生成了更高質(zhì)量的節(jié)點(diǎn)表征;利用GCN處理非歐幾里得結(jié)構(gòu)樣本時(shí)具有良好性能的優(yōu)勢(shì),結(jié)合語(yǔ)義信息進(jìn)行漏洞檢測(cè),增強(qiáng)了對(duì)節(jié)點(diǎn)特征的學(xué)習(xí);通過實(shí)驗(yàn)設(shè)計(jì)說明了語(yǔ)義特征對(duì)于智能合約漏洞檢測(cè)的重要性。

1 方法設(shè)計(jì)

本文提出的方法基于智能合約字節(jié)碼實(shí)現(xiàn)。在以太坊中,絕大多數(shù)智能合約以字節(jié)碼的形式運(yùn)行,因此,從字節(jié)碼提取語(yǔ)義信息,并結(jié)合圖神經(jīng)網(wǎng)絡(luò)進(jìn)行漏洞檢測(cè)的方法,更適應(yīng)于智能合約的運(yùn)行環(huán)境。方法整體框架如圖1所示。

圖1 語(yǔ)義感知GCN智能合約漏洞識(shí)別框架Fig. 1 Semantic-aware GCN smart contract vulnerability identification framework

本文方法總體架構(gòu)包括4個(gè)階段:1)智能合約字節(jié)碼生成階段,基于公開數(shù)據(jù)集中智能合約源代碼,根據(jù)合約代碼內(nèi)聲明的編譯器版本進(jìn)行編譯,生成字節(jié)碼;2)圖節(jié)點(diǎn)特征生成階段,從字節(jié)碼中劃分節(jié)點(diǎn),生成CFG;并將其輸入GCN中進(jìn)行訓(xùn)練,生成節(jié)點(diǎn)特征。3)語(yǔ)義特征生成階段,對(duì)每個(gè)節(jié)點(diǎn)內(nèi)的字節(jié)碼指令提取語(yǔ)義信息后生成的詞向量,輸入LSTM網(wǎng)絡(luò)中訓(xùn)練生成語(yǔ)義特征。4)獲得結(jié)果階段,將節(jié)點(diǎn)特征與語(yǔ)義特征的向量表示進(jìn)行拼接后輸入全連接層,映射到樣本標(biāo)記空間,并得到最終的預(yù)測(cè)結(jié)果。下面對(duì)4個(gè)階段進(jìn)行詳細(xì)介紹。

1.1 智能合約字節(jié)碼生成

智能合約在以太坊上部署時(shí)會(huì)以字節(jié)碼的形式運(yùn)行,因此生成智能合約字節(jié)碼作為漏洞檢測(cè)的基礎(chǔ)更符合實(shí)際情況。但當(dāng)前智能合約的公開數(shù)據(jù)集均以源代碼形式發(fā)布,因此需要對(duì)數(shù)據(jù)集進(jìn)行編譯來(lái)生成字節(jié)碼。

智能合約的編譯器版本非常復(fù)雜,不同版本的編譯器互相不兼容,且編譯后的字節(jié)碼也有一定的差異。本文在進(jìn)行編譯的過程中嚴(yán)格按照每個(gè)智能合約源代碼中聲明的編譯器版本進(jìn)行編譯,防止出現(xiàn)因編譯器版本不同產(chǎn)生的字節(jié)碼不同導(dǎo)致對(duì)檢測(cè)效果的干擾。

1.2 圖節(jié)點(diǎn)特征提取

CFG包含智能合約結(jié)構(gòu)信息,能夠表示函數(shù)間的調(diào)用關(guān)系。本文基于智能合約字節(jié)碼指令對(duì)節(jié)點(diǎn)進(jìn)行重新劃分,能夠使函數(shù)調(diào)用關(guān)系更加清晰,使GCN更好地從CFG中學(xué)習(xí)控制特征。Allamanis等研究表明,程序可以轉(zhuǎn)換為符號(hào)圖表示,符號(hào)圖表示能夠保留程序元素之間的語(yǔ)義關(guān)系。Huang等研究表明,在智能合約漏洞識(shí)別過程中,不同函數(shù)的重要性不同。受此啟發(fā),本文從智能合約源代碼中利用函數(shù)調(diào)用關(guān)系重新劃分節(jié)點(diǎn)生成CFG。每個(gè)智能合約生成的CFG由合約中的節(jié)點(diǎn)以及節(jié)點(diǎn)之間的邊表示,下面分別描述如何獲得節(jié)點(diǎn)以及邊。

在對(duì)數(shù)據(jù)集中的源代碼進(jìn)行編譯生成字節(jié)碼后,將字節(jié)碼進(jìn)行反匯編生成字節(jié)碼指令。在確定函數(shù)入口后,只需要找到函數(shù)的結(jié)束指令就能按照函數(shù)劃分出一個(gè)基本塊。對(duì)智能合約字節(jié)碼指令進(jìn)行分析得到表示基本塊結(jié)束的指令總結(jié)如表1所示。每個(gè)節(jié)點(diǎn)表示一個(gè)基本塊,每個(gè)基本塊不一定覆蓋一個(gè)完整函數(shù),因?yàn)楹瘮?shù)內(nèi)部也存在指令跳轉(zhuǎn)。使用集合

V

表示所有CFG中的節(jié)點(diǎn)。

表1 代表基本塊結(jié)束的指令
Tab. 1 End instructions of basic block

指令 作用STOP 停止SELFDESTRUCT 自毀RETURN 返回REVERT 判斷INVALID 無(wú)效SUICIDE 刪除JUMP 跳轉(zhuǎn)JUMPI 跳轉(zhuǎn)

在獲得節(jié)點(diǎn)之后,將節(jié)點(diǎn)之間的調(diào)用關(guān)系看作一條邊,代表前一個(gè)函數(shù)可能會(huì)調(diào)用下一個(gè)函數(shù)。每個(gè)節(jié)點(diǎn)可能調(diào)用多個(gè)節(jié)點(diǎn),也可能被多個(gè)節(jié)點(diǎn)調(diào)用。使用集合

E

表示CFG中的邊。經(jīng)過節(jié)點(diǎn)劃分和邊構(gòu)造后,使用

G

表示CFG,則

G

=(

V

,

E

)。將CFG輸入GCN中進(jìn)行訓(xùn)練,獲得圖的特征。對(duì)于每一層神經(jīng)網(wǎng)絡(luò),都可以用如下的非線性函數(shù)表示:

式中:

l

∈[0,

L

], 其中

L

為網(wǎng)絡(luò)層數(shù);輸入層

H

=

X

,其中

X

為特征矩陣;輸出層

H

=

Z

,其中

Z

為節(jié)點(diǎn)水平的輸出;

f

(·) 為 神經(jīng)網(wǎng)絡(luò)的可微函數(shù);

A

G

的鄰接矩陣。GCN對(duì)圖的分類利用了節(jié)點(diǎn)自身的特征信息及圖的結(jié)構(gòu)信息,學(xué)習(xí)策略如下:

式中:Γ為 圖中帶標(biāo)簽節(jié)點(diǎn)的監(jiān)督損失,Γ為圖結(jié)構(gòu)信息引入的損失,λ為權(quán)重系數(shù),

X

為節(jié)點(diǎn)特征向量矩陣,Δ表示圖的拉普拉斯算子。

GCN模型的分層傳播規(guī)則如下:

式中:=

A

+

I

,

I

為單位矩陣,為加入自循環(huán)的鄰接矩陣,用于將節(jié)點(diǎn)自身信息與所有鄰居節(jié)點(diǎn)進(jìn)行聚合;為矩陣的度矩陣;

W

為第

l

層神經(jīng)網(wǎng)絡(luò)層的權(quán)重矩陣; σ(·)表示線性整流函數(shù)(linear rectification function, ReLU)等非線性激活函數(shù)。

1.3 節(jié)點(diǎn)語(yǔ)義信息提取

第1.2節(jié)生成的CFG圖提供了圖結(jié)構(gòu)信息,CFG圖的節(jié)點(diǎn)是智能合約的基本塊,每個(gè)基本塊由一系列指令構(gòu)成,需要從這些指令中提取特征?;谌斯みx擇特征的低緯度嵌入會(huì)導(dǎo)致大量語(yǔ)義信息的丟失。使用自然語(yǔ)言處理(natural language processing,NLP)模型提取這些指令作為節(jié)點(diǎn)特征能夠最大程度地保留語(yǔ)義信息。

在通過節(jié)點(diǎn)劃分及字節(jié)碼反匯編獲得每個(gè)節(jié)點(diǎn)的字節(jié)碼指令后,將字節(jié)碼指令視為自然語(yǔ)言處理。首先,根據(jù)指令進(jìn)行分詞;然后,將序列映射為向量表示,即將詞語(yǔ)在詞語(yǔ)集合中的下標(biāo)作為詞的表示;最后,將指令向量序列輸入LSTM網(wǎng)絡(luò)中進(jìn)行訓(xùn)練得到語(yǔ)義表征。

考慮到指令信息之間的時(shí)序性、連貫性,使用LSTM網(wǎng)絡(luò)能夠解決梯度消失問題,學(xué)習(xí)到指令間的長(zhǎng)距離依賴關(guān)系,使指令之間的順序性在序列中充分體現(xiàn),最大程度地保留語(yǔ)義特征。

LSTM使用門控機(jī)制,由輸入門、遺忘門和輸出門作為一個(gè)模塊,由多個(gè)結(jié)構(gòu)相同的模塊串聯(lián)形成,當(dāng)指令序列順序通過LSTM網(wǎng)絡(luò)時(shí),這些模塊中的門結(jié)構(gòu)會(huì)進(jìn)行調(diào)節(jié)需要記憶和遺忘的特征,從而得到最終生成的具有長(zhǎng)距離依賴的語(yǔ)義特征。門控機(jī)制的具體公式如下:

式(5)~(10)中:

x

h

分 別為輸入和輸出向量;σ(·)為sigmoid函數(shù);

t

為時(shí)間步長(zhǎng)值;

W

為輸入的權(quán)重;

U

為循環(huán)輸出的權(quán)重;

b

為 偏差向量;運(yùn)算符“°”為逐元素乘法;

c

為存儲(chǔ)單元;

f

為遺忘門向量,控制上一個(gè)時(shí)刻內(nèi)部狀態(tài)

c

需 要遺忘的信息;輸入門向量

i

控制當(dāng)前的內(nèi)部狀態(tài)

c

要保留多少信息;輸出門向量

o

控制當(dāng)前內(nèi)部狀態(tài)

c

需 要輸出哪些信息給外部狀態(tài)

h

。

1.4 結(jié)合特征獲得預(yù)測(cè)結(jié)果

獲得節(jié)點(diǎn)特征和語(yǔ)義信息特征后,將兩種特征進(jìn)行拼接,輸入到全連接層中將兩種特征綜合起來(lái),映射到樣本標(biāo)記空間。

為了減小圖結(jié)構(gòu)數(shù)據(jù)在分類模型中產(chǎn)生的同構(gòu)偏差,獲得全連接層的輸出后,將其輸入邏輯回歸層(softmax layer)進(jìn)行歸一化:

g

z

式中: 為第

i

個(gè)節(jié)點(diǎn)的輸出值;為輸出節(jié)點(diǎn)的個(gè)數(shù);通過softmax函數(shù)可以將輸出轉(zhuǎn)化為概率分布,完成預(yù)測(cè)的目標(biāo)。檢測(cè)無(wú)漏洞為正類樣本,有漏洞為負(fù)類樣本,通過與標(biāo)簽對(duì)比會(huì)有4種情況,即:TP表示將正類預(yù)測(cè)為正類,F(xiàn)N表示將正類預(yù)測(cè)為負(fù)類,F(xiàn)P表示將負(fù)類預(yù)測(cè)為正類,TN表示將負(fù)類預(yù)測(cè)為負(fù)類。采用

n

表示樣本數(shù)量,準(zhǔn)確率(accuracy)表示樣本中正類與負(fù)類分類正確的比例,精確率(precision)表示在預(yù)測(cè)為正類的樣本中真正的正類樣本所占的比例,召回率(recall)表示在所有真正的正類樣本中被正確預(yù)測(cè)的比例,F(xiàn)1分?jǐn)?shù)(F1 score)用于衡量精確率和召回率之間的平衡性。4種指標(biāo)表達(dá)式分別為:

式(12)~(15)中,

F

為準(zhǔn)確率,

F

為精確率,

F

為召回率,

F

為F1分?jǐn)?shù)。

2 實(shí)驗(yàn)評(píng)估

2.1 數(shù)據(jù)集

使用Durieux等收集的47 518個(gè)真實(shí)智能合約數(shù)據(jù)集SmartWild及手工構(gòu)造的具有漏洞的智能合約數(shù)據(jù)集SBcurated。

SmartWild數(shù)據(jù)集收集自真實(shí)世界發(fā)生過交易的智能合約,這些合約經(jīng)過重復(fù)性篩選,是具有潛在漏洞的智能合約,使用真實(shí)的以太坊合約地址作為唯一標(biāo)志。由于智能合約編譯器版本非常多,且各個(gè)版本之間并不兼容,導(dǎo)致從源代碼編譯生成的字節(jié)碼有很大的差異,對(duì)實(shí)驗(yàn)結(jié)果會(huì)產(chǎn)生影響。許多編譯器版本較低的智能合約已經(jīng)很少運(yùn)行在以太坊上。為了更好地模擬現(xiàn)在的智能合約情況,本文在使用數(shù)據(jù)集時(shí),過濾掉了一些編譯器版本過早的智能合約,并對(duì)其余合約進(jìn)行了字節(jié)碼的重復(fù)性篩選,最終使用其中的21 437個(gè)智能合約進(jìn)行實(shí)驗(yàn)。

SBcurated數(shù)據(jù)集由一部分真實(shí)世界中具有漏洞的合同和一部分手工構(gòu)造的具有漏洞的合同組成。該數(shù)據(jù)集中的智能合約被手工標(biāo)記了漏洞的位置和類別,可用于評(píng)估智能合約分析工具識(shí)別漏洞的有效性。該數(shù)據(jù)集共有136個(gè)樣本。

本文在實(shí)驗(yàn)部分使用上述兩種數(shù)據(jù)集進(jìn)行漏洞檢測(cè),并設(shè)計(jì)對(duì)比實(shí)驗(yàn),展示語(yǔ)義信息對(duì)于智能合約漏洞檢測(cè)的有效提升以及檢測(cè)真實(shí)世界中具有漏洞的智能合約的能力。

2.2 實(shí)驗(yàn)設(shè)計(jì)

首先,文獻(xiàn)[14]的研究表明,Mythril與Slither的組合使用兼具準(zhǔn)確性和效率,因此選擇這兩種方法的組合對(duì)SmartWild數(shù)據(jù)集21 437個(gè)智能合約生成標(biāo)簽。使用該數(shù)據(jù)集進(jìn)行訓(xùn)練和測(cè)試,其中,訓(xùn)練集數(shù)量為19 437,測(cè)試集數(shù)量為2 000。使用本文方法(L-GCN)對(duì)這些智能合約進(jìn)行檢測(cè),與Oyente、Smartcheck、Manticore3種傳統(tǒng)檢測(cè)工具以及一種僅使用GCN網(wǎng)絡(luò)不含語(yǔ)義特征的漏洞檢測(cè)方法(簡(jiǎn)稱GCN)進(jìn)行對(duì)比。使用的評(píng)價(jià)指標(biāo)有準(zhǔn)確率(accuracy)、精確率(precision)、召回率(recall)和F1分?jǐn)?shù)(F1 score)。

然后,使用Sbcurated數(shù)據(jù)集中136個(gè)手工分類的智能合約進(jìn)行測(cè)試,用于測(cè)試本文方法(L-GCN)與傳統(tǒng)的Oyente、Smartcheck、Manticore及GCN檢測(cè)方法發(fā)現(xiàn)真實(shí)智能合約漏洞的能力。由于該數(shù)據(jù)集中所有合約均存在漏洞,因此僅對(duì)比準(zhǔn)確率。

2.3 實(shí)驗(yàn)結(jié)果分析

2.3.1 SmartWild數(shù)據(jù)集實(shí)驗(yàn)結(jié)果分析

表2展示了使用5種方法對(duì)SmartWild數(shù)據(jù)集21 437個(gè)真實(shí)智能合約進(jìn)行智能合約漏洞檢測(cè)的性能指標(biāo)結(jié)果。

表2 基于SmartWild數(shù)據(jù)集的性能比較
Tab. 2 Performance comparison based on SmartWild dataset

檢測(cè)方法 準(zhǔn)確率/% 精確率/% 召回率/% F1分?jǐn)?shù)/%Manticore 36.57 31.90 86.32 46.58 Oyente 37.36 33.13 92.73 48.82 Smartcheck 39.72 32.53 81.01 31.09 GCN 68.05 67.42 88.73 76.62 L-GCN 81.40 79.23 92.79 85.48

根據(jù)表2中的實(shí)驗(yàn)數(shù)據(jù),從5種方法的對(duì)比中可以看出,本文提出的L-GCN在4種指標(biāo)上均超過其余4種方法。在4種指標(biāo)中,L-GCN方法在準(zhǔn)確率、精確率以及F1分?jǐn)?shù)上都有較大的提升,但5種方法的召回率差距不大,表明5種方法都更注重對(duì)于具有漏洞的智能合約的檢出率。前4種方法的精確率較低,說明這些方法在檢測(cè)過程中有較高的誤報(bào)率;而L-GCN方法在擁有最高的召回率值同時(shí),提升了精確率值,說明該方法能夠有效降低誤報(bào)率。與GCN方法相比,L-GCN方法的4個(gè)指標(biāo)均有所上升,說明了增加語(yǔ)義信息確實(shí)能提升漏洞檢測(cè)效果。

值得一提的是,Oyente方法擁有極高的召回率值,幾乎與L-GCN方法相同,推測(cè)可能的原因是,Smart-Wild數(shù)據(jù)集使用基于符號(hào)執(zhí)行的智能合約漏洞檢測(cè)方法的組合打標(biāo)簽,對(duì)于同樣基于符號(hào)執(zhí)行的Oyente方法有一定提升。

該實(shí)驗(yàn)結(jié)果表明,加入語(yǔ)義特征能夠有效提升智能合約漏洞檢測(cè)效果,而本文提出基于語(yǔ)義感知圖神經(jīng)網(wǎng)絡(luò)的智能合約漏洞檢測(cè)方法能夠?qū)崿F(xiàn)提升檢測(cè)精度且降低誤報(bào)率的目標(biāo)。

2.3.2 SBcurated數(shù)據(jù)集實(shí)驗(yàn)結(jié)果分析

表3展示了使用5種方法對(duì)SBcurated數(shù)據(jù)集中136個(gè)智能合約進(jìn)行漏洞檢測(cè)的準(zhǔn)確率及檢測(cè)出含有漏洞的智能合約數(shù)。

表3 SBcurated數(shù)據(jù)集準(zhǔn)確率
Tab. 3 Accuracy comparison based on SBcurated dataset

檢測(cè)方法 準(zhǔn)確率/% 含有漏洞的智能合約數(shù)Manticore 79.17 108 Oyente 80.88 110 Smartcheck 71.37 97 GCN 87.50 119 L-GCN 92.65 126

與SmartWild數(shù)據(jù)集相比,SBcurated數(shù)據(jù)集雖然數(shù)據(jù)量較小,但其中的智能合約均采用手工分類,標(biāo)簽的準(zhǔn)確率更高,能夠更好地展現(xiàn)檢測(cè)方法的效果。5種檢測(cè)方法中,Manticore由于檢測(cè)時(shí)間超時(shí)僅檢測(cè)成功48個(gè)樣本并生成了結(jié)果,其余4種方法均完成全部樣本的檢測(cè)。

從表3的指標(biāo)來(lái)看,本文提出的基于語(yǔ)義感知圖神經(jīng)網(wǎng)絡(luò)的智能合約漏洞檢測(cè)方法(L-GCN)的檢測(cè)準(zhǔn)確率和含漏洞的數(shù)目均高于其他4種方法,但提升的效果不如SmartWild數(shù)據(jù)集的明顯。推測(cè)可能的原因是,SmartWild數(shù)據(jù)集中樣本均有漏洞,因此均為正類樣本,此時(shí),準(zhǔn)確率實(shí)際上等同于表2中的召回率指標(biāo)。對(duì)比表2中召回率指標(biāo)和表3的準(zhǔn)確率后也發(fā)現(xiàn),這5種檢測(cè)方法在這兩個(gè)指標(biāo)上的排名幾乎相同。這表明,5種方法在對(duì)有漏洞的合約上都有著較高的檢出率,當(dāng)樣本中據(jù)有漏洞的合約較多時(shí)檢出效果更好,而本文提出的L-GCN方法比其余4種方法依舊有較大提升。

通過對(duì)檢出有漏洞的合約進(jìn)行統(tǒng)計(jì),L-GCN方法檢測(cè)出的所有具有漏洞的合約中,有4個(gè)具有漏洞的合約是前4種方法均未能檢測(cè)出的。

該實(shí)驗(yàn)表明,在檢測(cè)真實(shí)智能合約漏洞時(shí),本文提出的基于語(yǔ)義感知圖神經(jīng)網(wǎng)絡(luò)的智能合約漏洞檢測(cè)方式的檢測(cè)效果更好,并且能夠檢測(cè)出實(shí)驗(yàn)中其他方法未能檢出的含有漏洞的合約。

3 總結(jié)與展望

本文提出了一個(gè)基于語(yǔ)義感知圖神經(jīng)網(wǎng)絡(luò)的智能合約漏洞分析方法,與現(xiàn)有方法相比,將神經(jīng)網(wǎng)絡(luò)對(duì)圖結(jié)構(gòu)良好的處理能力與自然語(yǔ)言處理方法對(duì)語(yǔ)義信息的提取相結(jié)合,在檢測(cè)漏洞的過程中既使用函數(shù)調(diào)用關(guān)系也學(xué)習(xí)節(jié)點(diǎn)自身字節(jié)碼特征,探索了語(yǔ)義信息加入神經(jīng)網(wǎng)絡(luò)進(jìn)行智能合約漏洞檢測(cè)的可能性。經(jīng)過大量實(shí)驗(yàn)表明,基于語(yǔ)義感知圖神經(jīng)網(wǎng)絡(luò)的智能合約漏洞檢測(cè)方法能夠有效提升檢測(cè)精度,降低誤報(bào)率,并且具有檢測(cè)出真實(shí)智能合約中漏洞的能力。本文的工作展示了語(yǔ)義信息和神經(jīng)網(wǎng)絡(luò)結(jié)合的方法在智能合約漏洞檢測(cè)方向的潛力,具有繼續(xù)研究的意義。在未來(lái)的研究工作中,將研究各類智能合約漏洞具體特點(diǎn),對(duì)每類漏洞更具針對(duì)性地進(jìn)行語(yǔ)義信息提取,以達(dá)到更細(xì)致分類的目的。

猜你喜歡
字節(jié)合約漏洞
漏洞
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
簡(jiǎn)談MC7字節(jié)碼
三明:“兩票制”堵住加價(jià)漏洞
漏洞在哪兒
高鐵急救應(yīng)補(bǔ)齊三漏洞
合約必守,誰(shuí)能例外!——對(duì)“情勢(shì)變更”制度不可寄于過高期望
人類進(jìn)入“澤它時(shí)代”
恩平市| 尉氏县| 仪征市| 三穗县| 新密市| 宁远县| 博爱县| 巴里| 九龙坡区| 自贡市| 甘南县| 醴陵市| 尖扎县| 桐柏县| 福海县| 瑞安市| 江山市| 青浦区| 绥滨县| 大宁县| 克东县| 福州市| 宁晋县| 伊金霍洛旗| 得荣县| 岳池县| 临沂市| 铜鼓县| 泊头市| 揭东县| 高碑店市| 景泰县| 鄯善县| 淮北市| 柳州市| 沙田区| 金门县| 宣恩县| 田阳县| 呈贡县| 岗巴县|