張小松 牛偉納 黃世平 孫裕儼 賀哲遠(yuǎn)
智能合約是區(qū)塊鏈三大特點(diǎn)之一,也是區(qū)塊鏈具有應(yīng)用價(jià)值和靈活性的領(lǐng)域.本質(zhì)上,智能合約是一段用特定腳本語言實(shí)現(xiàn)的代碼,不可避免地存在安全漏洞風(fēng)險(xiǎn).如何及時(shí)準(zhǔn)確地檢查出各種智能合約的漏洞,就成為區(qū)塊鏈安全研究的重點(diǎn)和熱點(diǎn).為了檢測智能合約漏洞,研究者提出了各種分析方法,包括符號(hào)執(zhí)行、形式化驗(yàn)證和模糊測試等.隨著人工智能技術(shù)的快速發(fā)展,越來越多基于深度學(xué)習(xí)的方法被提出,并且在多個(gè)研究領(lǐng)域取得了很好的效果.目前,針對(duì)基于深度學(xué)習(xí)的智能合約漏洞檢測方法并沒有被詳細(xì)地調(diào)查和分析.本文首先簡要介紹了智能合約的概念以及智能合約漏洞相關(guān)的安全事件;然后對(duì)基于深度學(xué)習(xí)的方法中常用的智能合約特征進(jìn)行分析;同時(shí)對(duì)智能合約漏洞檢測中常用的深度學(xué)習(xí)模型進(jìn)行描述.此外,為了進(jìn)一步推動(dòng)基于深度學(xué)習(xí)的智能合約漏洞檢測方法的研究,本文將近年來基于深度學(xué)習(xí)的智能合約漏洞檢測方法根據(jù)其特征提取形式進(jìn)行了總結(jié)分類,從文本處理、靜態(tài)分析和圖像處理3個(gè)角度進(jìn)行了分析介紹;最后,總結(jié)了該領(lǐng)域面臨的挑戰(zhàn)和未來的研究方向.
區(qū)塊鏈; 以太坊; 智能合約; 漏洞檢測; 深度學(xué)習(xí)
TP311A2023.020001
收稿日期: 2022-12-09
基金項(xiàng)目: 國家自然科學(xué)基金聯(lián)合基金(U19A2066); 四川省自然科學(xué)基金(2022NSFSC0871); 深圳市杰出人才培養(yǎng)經(jīng)費(fèi)資助
通訊作者: 張小松.E-mail: johnsonzxs@uestc.edu.cn
A survey of smart contract vulnerability detection methods based on deep learning
ZHANG Xiao-Song1,2,3, NIU Wei-Na1, HUANG Shi-Ping1, SUN Yu-Yan1, HE Zhe-Yuan1
(1. School of Computer Science and Engineering, University of Electronic Science and Technology of China, Chengdu 611731, China; 2. Jiaozi Fintech Center, Chengdu 610095, China;? 3. Engineering Research Center of Blockchain Security and Platform Technology, Ministry of Education, Chengdu 611731, China)
Smart contract is one of the three major characteristics of blockchain and an area where blockchain has application value and flexibility. In essence, a smart contract is a piece of code implemented in a specific scripting language, which inevitably has the risk of security vulnerabilities. How to accurately and timely detect the vulnerabilities of various smart contracts has become the focus and hotspot of blockchain security research. To detect vulnerabilities in smart contracts, researchers have proposed various analysis methods, including symbolic execution, formal verification and fuzzing. With the rapid development of artificial intelligence technology, more and more deep learning-based methods have been proposed and have achieved good results in several research areas. Currently, deep learning-based smart contract vulnerability detection methods have not been investigated and analyzed in detail. This paper introduces the concept of smart contracts and security events related to smart contract vulnerabilities, then outlines commonly used smart contract features and describes the deep learning models commonly used in smart contract vulnerability detection. To promote the research of deep learning-based smart contract vulnerability detection methods, this paper summarizes and classifies recent deep learning-based smart contract vulnerability detection methods according to their feature extraction forms and analyzes them from three perspectives: text processing, static analysis, and image processing. Finally, the paper summarizes the challenges and future research directions in this field.
Blockchain; Ethereum; Smart contract; Vulnerability detection; Deep learning
1 引 言區(qū)塊鏈技術(shù)[1]最早可以追溯到2008年中本聰比特幣白皮書[2]的出版.緊接著2009年比特幣正式發(fā)行,使區(qū)塊鏈技術(shù)展現(xiàn)出廣闊的應(yīng)用前景,吸引了學(xué)術(shù)界和業(yè)界的廣泛關(guān)注,拉開了區(qū)塊鏈1.0的序幕.隨著對(duì)區(qū)塊鏈技術(shù)的不斷深入研究,區(qū)塊鏈技術(shù)不再局限于單純的去中心化貨幣交易.智能合約在區(qū)塊鏈上的實(shí)現(xiàn),加速了區(qū)塊鏈技術(shù)在加密貨幣之外其他領(lǐng)域的應(yīng)用.而第一個(gè)支持開發(fā)智能合約的區(qū)塊鏈即以太坊[3]的發(fā)布,標(biāo)志著區(qū)塊鏈2.0時(shí)代的開始.通過區(qū)塊鏈的去中心化共識(shí)機(jī)制,智能合約允許相互不信任的用戶在不需要任何第三方可信機(jī)構(gòu)的情況下完成數(shù)據(jù)交換或交易,是區(qū)塊鏈最具有應(yīng)用價(jià)值的領(lǐng)域.隨后出現(xiàn)了越來越多支持智能合約的區(qū)塊鏈平臺(tái).截至目前,僅以太坊上就存在超過5000萬份智能合約,而以太坊本身的市值也超過1500億美元,是最廣泛使用的支持智能合約的區(qū)塊鏈平臺(tái).作為在區(qū)塊鏈中運(yùn)行的程序,控制著區(qū)塊鏈上大量資金的智能合約不可避免地存在由程序缺陷導(dǎo)致的安全漏洞[4,5].因此,如何準(zhǔn)確及時(shí)地檢查出各種智能合約的漏洞,成為區(qū)塊鏈安全研究的重點(diǎn)和熱點(diǎn).
為了確保智能合約的安全性,越來越多的研究人員開始研究智能合約的漏洞檢測技術(shù),開發(fā)了各種工具來檢測和預(yù)防現(xiàn)有的智能合約漏洞[6].采用的技術(shù)主要有符號(hào)執(zhí)行[7-10]、形式化驗(yàn)證[11,12]和模糊測試[13,14].符號(hào)執(zhí)行是應(yīng)用最廣泛的方法.它是指在程序執(zhí)行過程中將不確定的輸入轉(zhuǎn)化為符號(hào)值,通常結(jié)合約束求解器對(duì)程序執(zhí)行路徑進(jìn)行求解.符號(hào)執(zhí)行可以實(shí)現(xiàn)更準(zhǔn)確、更全面的程序分析,但由于程序分支和循環(huán)的影響,通常會(huì)面臨路徑爆炸等問題.形式化驗(yàn)證主要是采用嚴(yán)格的可演繹的描述語言或邏輯來描述程序的屬性和特征,并使用數(shù)學(xué)邏輯證明和推理來構(gòu)建形式化規(guī)范,以確定安全屬性設(shè)置是否符合預(yù)期.但是形式化驗(yàn)證方法需要較強(qiáng)的邏輯推理能力,且自動(dòng)化程度較低.模糊測試使用隨機(jī)生成的測試樣本作為智能合約的輸入,通過監(jiān)控智能合約的執(zhí)行過程判斷是否觸發(fā)程序漏洞或其他異常行為.模糊測試方法能夠有效檢測合約漏洞,但需要事先獲取智能合約的源碼和ABI接口信息.
近年來,基于深度學(xué)習(xí)的程序分析方法在安全檢測領(lǐng)域逐漸流行[15].深度學(xué)習(xí)方法自動(dòng)化程度高,可以從大量的數(shù)據(jù)中提取出程序的隱藏特征,突破了基于規(guī)則的傳統(tǒng)漏洞檢測方法的局限.本文通過調(diào)研近幾年基于深度學(xué)習(xí)的智能合約漏洞檢測方法,總結(jié)深度學(xué)習(xí)在智能合約漏洞檢測領(lǐng)域的應(yīng)用現(xiàn)狀,討論目前工作中存在的問題和挑戰(zhàn),并針對(duì)不足之處探討未來的研究方向和思路.
2 智能合約
2.1 智能合約概述
智能合約的概念在1997年由Szabo首次提出[16].Szabo將智能合約定義為一套以數(shù)字形式定義的承諾,以及合約參與方可以在上面執(zhí)行這些承諾的協(xié)議.直到2015年以太坊的出現(xiàn),智能合約這一概念才得以付諸實(shí)踐.
Solidity[17]是專門用來編寫智能合約的圖靈完備的編程語言.以太坊智能合約主要通過Solidity編寫,由函數(shù)、事件和狀態(tài)變量等組成.編譯完成后,智能合約代碼被轉(zhuǎn)換為以太坊虛擬機(jī)EVM字節(jié)碼,然后通過合約創(chuàng)建交易部署在以太坊區(qū)塊鏈上.智能合約成功創(chuàng)建后,會(huì)有一個(gè)唯一的地址標(biāo)識(shí),生成一個(gè)智能合約賬戶.
以太坊智能合約賬戶由可執(zhí)行代碼、合約地址、私有狀態(tài)變量和以太幣余額組成.一個(gè)包含目標(biāo)智能合約地址和調(diào)用參數(shù)的交易可以實(shí)現(xiàn)對(duì)智能合約的調(diào)用.以太坊虛擬機(jī)(Ethereum Virtual Machine, EVM)是一個(gè)基于堆棧的虛擬機(jī),提供了一個(gè)與網(wǎng)絡(luò)隔離的運(yùn)行時(shí)環(huán)境來執(zhí)行智能合約代碼.
以太坊的蓬勃發(fā)展讓更多人意識(shí)到智能合約的重要價(jià)值,因此出現(xiàn)了越來越多的支持智能合約運(yùn)行的區(qū)塊鏈,基于智能合約實(shí)現(xiàn)的區(qū)塊鏈應(yīng)用數(shù)量也井噴式增加[18].
2.2 智能合約應(yīng)用
區(qū)塊鏈技術(shù)和智能合約催化了去中心化應(yīng)用(Decentralized Application,DApp)市場的發(fā)展.DApp是可以自主運(yùn)行的應(yīng)用程序,通過使用智能合約,在區(qū)塊鏈系統(tǒng)上執(zhí)行.與傳統(tǒng)應(yīng)用程序一樣,DApp為用戶提供一些功能,前端可以由已有的技術(shù)構(gòu)建.但是與傳統(tǒng)應(yīng)用程序不同的是,由于后端基于區(qū)塊鏈系統(tǒng)實(shí)現(xiàn),DApp無需人工干預(yù)即可執(zhí)行,也不屬于任何一個(gè)組織或者實(shí)體,具有去中心化屬性.DApp無需信任和透明的性質(zhì)推動(dòng)了去中心化金融(Decentralized Finance, DeFi)的發(fā)展,越來越多的組織和開發(fā)者開始在區(qū)塊鏈上開發(fā)自己的DApp.根據(jù)Dune網(wǎng)站上的數(shù)據(jù)統(tǒng)計(jì)[19],區(qū)塊鏈上智能合約的數(shù)量逐年持續(xù)增長.如圖1所示,目前以太坊上部署的智能合約已經(jīng)超過了5000萬份.CoinMarketCap的數(shù)據(jù)顯示,以智能合約為技術(shù)支持的DeFi市場的市值超過430億美元[20].這表明智能合約具有巨大的市場潛力.與此同時(shí),在醫(yī)療保健[21,22]、供應(yīng)鏈[23,24]和物聯(lián)網(wǎng)[25,26]等非金融領(lǐng)域也出現(xiàn)了大量基于區(qū)塊鏈的應(yīng)用.
2.3 智能合約安全
近年來智能合約攻擊事件層出不窮.2016年6月,黑客利用去中心化自治組織(Decentralized Autonomous Organization)合約的重入漏洞竊取了價(jià)值約6000萬美元的以太幣[27].2017年7月,由于Parity Multi-Sig Wallet合約的delegatecall漏洞[28],近3億美元的以太幣被凍結(jié).2018年4月,惡意攻擊者借助Beauty Chain合約的整數(shù)溢出漏洞[29],發(fā)布了無限數(shù)量的BEC令牌,使得BEC市值蒸發(fā)為零.2019年5月,Binance Exchange被黑客入侵,導(dǎo)致7000多個(gè)比特幣被盜[30].2022年10月7日,由加密貨幣交易所幣安孵化,全球最活躍的公鏈之一的BNB Chain被黑客攻擊,黑客利用跨鏈橋(可以幫助實(shí)現(xiàn)不同區(qū)塊鏈之間的資產(chǎn)流動(dòng))漏洞分兩次共獲取200萬枚BNB,價(jià)值約5.66億美元[31].如圖2所示,根據(jù)成都鏈安安全團(tuán)隊(duì)歷年數(shù)據(jù)統(tǒng)計(jì),區(qū)塊鏈上因安全事件導(dǎo)致的經(jīng)濟(jì)損失呈逐年上升趨勢(shì).相關(guān)分析表明,超過80%的安全事件都是由智能合約漏洞引起的[32].區(qū)塊鏈安全形勢(shì)愈發(fā)嚴(yán)峻.
3 深度學(xué)習(xí)概述
深度學(xué)習(xí)屬于人工智能領(lǐng)域,被廣泛應(yīng)用于計(jì)算機(jī)視覺、語音識(shí)別和自然語言處理等領(lǐng)域.將深度學(xué)習(xí)應(yīng)用于智能合約漏洞檢測已經(jīng)成為一個(gè)趨勢(shì).
典型的深度學(xué)習(xí)是一個(gè)包含多個(gè)隱藏層的神經(jīng)網(wǎng)絡(luò),每一層包含不同的神經(jīng)元,每個(gè)神經(jīng)元具有不同的權(quán)重和激活函數(shù).深度學(xué)習(xí)最顯著的價(jià)值在于能夠自動(dòng)提取和抽象數(shù)據(jù)的高階特征,避免了繁瑣的人工特征提取過程.
3.1 深度學(xué)習(xí)模型
通過總結(jié)智能合約漏洞檢測中使用的深度學(xué)習(xí)模型發(fā)現(xiàn),目前的檢測模型主要有卷積神經(jīng)網(wǎng)絡(luò)( Convolutional Neural Network,CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)( Recurrent Neural Network, RNN)和圖卷積神經(jīng)網(wǎng)絡(luò)( Graph Convolutional Network, GCN).
(1) 卷積神經(jīng)網(wǎng)絡(luò).卷積神經(jīng)網(wǎng)絡(luò)是一種用于處理圖像數(shù)據(jù)等具有網(wǎng)格結(jié)構(gòu)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò).其一般結(jié)構(gòu)包括卷積層、池化層、全連接層和輸出層.與其他深度學(xué)習(xí)模型相比,卷積神經(jīng)網(wǎng)絡(luò)在圖像和語音識(shí)別方面可以給出更好的結(jié)果.卷積神經(jīng)網(wǎng)絡(luò)使用卷積核來共享參數(shù),顯著減少了參數(shù)數(shù)量并使用了局部數(shù)據(jù)信息.
(2) 循環(huán)神經(jīng)網(wǎng)絡(luò).循環(huán)神經(jīng)網(wǎng)絡(luò)是一種用于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò).循環(huán)神經(jīng)網(wǎng)絡(luò)已成功應(yīng)用于許多時(shí)間序列問題,例如自然語言處理、語音識(shí)別和機(jī)器翻譯.RNN對(duì)序列中的每個(gè)元素和之前計(jì)算的輸出執(zhí)行相同的操作.因此,RNN由兩個(gè)輸入(當(dāng)前狀態(tài)和前一個(gè)狀態(tài))結(jié)合起來確定網(wǎng)絡(luò)的最終輸出.
(3) 圖卷積神經(jīng)網(wǎng)絡(luò).圖卷積神經(jīng)網(wǎng)絡(luò)是一種用于圖結(jié)構(gòu)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò).GCN廣泛應(yīng)用于許多與圖結(jié)構(gòu)數(shù)據(jù)相關(guān)的問題,如蛋白質(zhì)結(jié)構(gòu)預(yù)測、化合物穩(wěn)定性預(yù)測和社交網(wǎng)絡(luò)分析等.GCN可以看作一種消息傳遞網(wǎng)絡(luò),圖中每個(gè)節(jié)點(diǎn)根據(jù)自己的特征生成消息向量,消息通過邊傳遞給鄰居節(jié)點(diǎn),然后每個(gè)節(jié)點(diǎn)通過聚合鄰居節(jié)點(diǎn)的消息更新自身的特征向量.
3.2 用于深度學(xué)習(xí)的智能合約特征
基于深度學(xué)習(xí)的智能合約漏洞檢測方法需要從智能合約中提取漏洞相關(guān)特征,智能合約特征的結(jié)構(gòu)決定了深度學(xué)習(xí)模型可以從中學(xué)習(xí)到的漏洞相關(guān)信息.下面以圖3所示的智能合約代碼為例,分別介紹深度學(xué)習(xí)方法中常用的智能合約特征.
(1) 字節(jié)碼和操作碼.智能合約最終被編譯為字節(jié)碼才能被EVM執(zhí)行,字節(jié)碼以十六進(jìn)制表示.操作碼是人類可讀的字節(jié)碼表示,圖3所示智能合約對(duì)應(yīng)的操作碼如圖4所示.
(2) 控制流圖.控制流圖(Control Flow Graph, CFG)是一種用于表示程序可以處理的所有可能的執(zhí)行路徑的圖.一般使用智能合約的操作碼構(gòu)建CFG.CFG中,每個(gè)節(jié)點(diǎn)代表一個(gè)基本塊,每個(gè)基本塊只有一個(gè)入口和一個(gè)出口,基本塊之間通過程序跳轉(zhuǎn)連接.圖3智能合約生成的控制流圖如圖5所示.
(3) 抽象語法樹.抽象語法樹(Abstract Syntax Tree, AST)是一種用于推理書面語言的數(shù)據(jù)結(jié)構(gòu).使用編譯器將源代碼轉(zhuǎn)換為數(shù)據(jù)結(jié)構(gòu)樹,其中每個(gè)節(jié)點(diǎn)代表源代碼的一個(gè)句法元素,樹形圖顯示程序中每個(gè)元素的流向.在不破壞結(jié)構(gòu)化信息的情況下,AST可以提供源代碼的詳細(xì)信息.圖3所示智能合約的抽象語法樹如圖6所示.
4 基于深度學(xué)習(xí)的智能合約漏洞檢測
如表1所示,根據(jù)其特征提取方法,將基于深度學(xué)習(xí)的智能合約漏洞檢測模型分為三類,分別是基于文本處理、基于靜態(tài)分析和基于圖像處理的漏洞檢測.
基于文本處理的方法將智能合約源代碼、字節(jié)碼和操作碼當(dāng)作連續(xù)的文本序列,使用自然語言處理方法,提取智能合約漏洞的語義信息和特征.基于靜態(tài)分析的方法在使用靜態(tài)分析的基礎(chǔ)上,利用分析結(jié)果如AST、CFG等進(jìn)一步提取智能合約的結(jié)構(gòu)特征,豐富漏洞相關(guān)信息.基于圖像處理的方法,通過將智能合約字節(jié)碼或操作碼序列進(jìn)行切片組合,構(gòu)建灰度圖矩陣,然后應(yīng)用圖像處理的方法提取特征并構(gòu)建模型.
4.1 基于文本處理的漏洞檢測
文獻(xiàn)[33]使用序列學(xué)習(xí)的方法檢測智能合約漏洞.將操作碼序列中的操作碼轉(zhuǎn)換為one-hot向量表示,通過嵌入算法轉(zhuǎn)換為更低維度的向量,同時(shí)捕獲操作碼之間的序列關(guān)系,然后將得到的向量序列輸入到LSTM[34]模型中.在包含62萬份以太坊智能合約的數(shù)據(jù)集上對(duì)模型進(jìn)行訓(xùn)練,實(shí)驗(yàn)結(jié)果表明,序列學(xué)習(xí)的方法優(yōu)于基于符號(hào)執(zhí)行的分析工具.訓(xùn)練的模型準(zhǔn)確率和F1分?jǐn)?shù)分別為99.57%和86.04%.文獻(xiàn)[35]將預(yù)訓(xùn)練方法與AWD-LSTM[36]模型相結(jié)合,提出了一種基于預(yù)訓(xùn)練編碼器的智能合約漏洞檢測方法.該方法首先使用相同長度的輸入輸出向量訓(xùn)練常規(guī)架構(gòu)的AWD-LSTM模型,得到包含操作碼語義信息的預(yù)訓(xùn)練編碼器,然后將常規(guī)架構(gòu)中的解碼器替換成用于多分類的全連接層網(wǎng)絡(luò),實(shí)現(xiàn)智能合約多漏洞檢測.
文獻(xiàn)[37]提出了一個(gè)智能合約漏洞檢測框架ESCORT.該框架分為兩個(gè)部分.第一個(gè)部分是一個(gè)通用的特征提取器,應(yīng)用GRU[38]模型提取智能合約字節(jié)碼序列的特征;第二個(gè)部分是一個(gè)多分支結(jié)構(gòu),每一個(gè)分支針對(duì)一個(gè)漏洞類型進(jìn)行檢測.該框架通過遷移學(xué)習(xí)快速支持新漏洞的檢測,當(dāng)一個(gè)新的漏洞被識(shí)別時(shí),構(gòu)建一個(gè)該漏洞的數(shù)據(jù)集,然后在模型上增加一個(gè)新的分支,凍結(jié)通用特征提取器和其他分支的參數(shù),利用構(gòu)建的新數(shù)據(jù)集對(duì)新分支進(jìn)行訓(xùn)練,從而克服了傳統(tǒng)模型的可擴(kuò)展性和泛化性限制.
文獻(xiàn)[39]提出了一種基于多任務(wù)學(xué)習(xí)的智能合約漏洞檢測模型,由共享層和特定任務(wù)層組成.該模型構(gòu)建了基于注意力機(jī)制的共享層網(wǎng)絡(luò),用于學(xué)習(xí)智能合約操作碼序列的關(guān)鍵特征.特定任務(wù)層分為檢測和識(shí)別兩部分,檢測任務(wù)用于檢測智能合約是否存在漏洞,使用CNN構(gòu)建二元分類網(wǎng)絡(luò);識(shí)別任務(wù)用于識(shí)別漏洞類別,使用CNN構(gòu)建多標(biāo)簽分類網(wǎng)絡(luò).特定任務(wù)層接收共享層提取的特征作為輸入,然后針對(duì)自身的特定任務(wù)進(jìn)行訓(xùn)練.為了緩解智能合約數(shù)據(jù)集的類不平衡問題,采取了對(duì)有漏洞樣本進(jìn)行過采樣、對(duì)無漏洞樣本進(jìn)行欠采樣的方法.實(shí)驗(yàn)表明,多任務(wù)學(xué)習(xí)可以在多個(gè)任務(wù)之間共享特征,提高執(zhí)行速度.
CBGRU[40]是一種混合深度學(xué)習(xí)模型.混合模型結(jié)合了不同深度學(xué)習(xí)模型的優(yōu)點(diǎn),更有利于分類任務(wù).CBGRU模型由嵌入層、特征提取層和分類層組成.嵌入層主要將字符級(jí)的智能合約源碼處理成符合神經(jīng)網(wǎng)絡(luò)輸入的矩陣表示.該模型分別使用Word2Vec[41]和FastText[42]進(jìn)行詞嵌入,作為特征提取層的兩個(gè)輸入分支.其中,Word2Vec的嵌入結(jié)果作為CNN模型的輸入;FastText的嵌入結(jié)果作為BiGRU模型的輸入.最后在分類層將兩個(gè)分支提取的特征通過連接層進(jìn)行特征融合,使用Softmax層進(jìn)行分類.該模型在包含47 587個(gè)真實(shí)且唯一的智能合約數(shù)據(jù)集SmartBugs Dataset-wild[43]上進(jìn)行訓(xùn)練.實(shí)驗(yàn)結(jié)果表明,CBGRU模型在針對(duì)智能合約漏洞的檢測任務(wù)中具有更高的準(zhǔn)確性,對(duì)重入漏洞、時(shí)間戳依賴漏洞和無限循環(huán)漏洞的檢測準(zhǔn)確率分別為93.30%、93.02%和93.16%.
當(dāng)智能合約代碼被重寫后,漏洞檢測將會(huì)變得困難.針對(duì)這一問題,文獻(xiàn)[44]擴(kuò)展了自然語言處理的PV-DM[45]模型,實(shí)現(xiàn)智能合約代碼的向量化.提出了一個(gè)智能合約漏洞檢測靜態(tài)分析工具Eth2Vec.Eth2Vec由EVM提取器和PV-DM模型兩個(gè)模塊組成.EVM提取器對(duì)EVM字節(jié)碼進(jìn)行語法分析,為每一個(gè)合約創(chuàng)建指令級(jí)、塊級(jí)、函數(shù)級(jí)和合約級(jí)的多級(jí)結(jié)構(gòu)數(shù)據(jù);PV-DM模型將該數(shù)據(jù)作為輸入,為每個(gè)智能合約生成對(duì)應(yīng)的向量,然后通過計(jì)算與已知漏洞合約的向量相似性來識(shí)別測試合約中的漏洞.實(shí)驗(yàn)表明,Eth2Vec的檢測能力高于基于SVM的方法,且對(duì)于代碼重寫具有很好的魯棒性.
SCVDIE[46]是一個(gè)基于信息圖和集成學(xué)習(xí)的智能合約漏洞檢測方法.該方法從收集的智能合約操作碼中計(jì)算操作碼共現(xiàn)頻率,構(gòu)建操作碼共現(xiàn)矩陣.通過預(yù)定義規(guī)則識(shí)別智能合約的關(guān)鍵操作碼序列,基于共現(xiàn)關(guān)系構(gòu)建信息圖來表示智能合約的漏洞模式信息.信息圖中節(jié)點(diǎn)由操作碼組成,操作碼之間根據(jù)共現(xiàn)頻率和出現(xiàn)順序進(jìn)行連接.為了將節(jié)點(diǎn)轉(zhuǎn)換為向量矩陣表示,提取每個(gè)智能合約信息圖的所有路徑,構(gòu)建操作碼序列集合,使用該集合訓(xùn)練Word2Vec等嵌入模型.得到操作碼序列的向量表示后,將其輸入到集成學(xué)習(xí)模型中進(jìn)行模型訓(xùn)練.集成學(xué)習(xí)模型由兩部分組成.第一部分包括CNN、RNN、RCNN、DNN、GRU和BiGRU,用于提取操作碼序列的局部特征;第二部分是Transformer[47]模型,用于提取全局特征,最后基于權(quán)重值將兩種特征進(jìn)行集成輸出智能合約漏洞的預(yù)測概率.實(shí)驗(yàn)結(jié)果表明,該方法明顯優(yōu)于靜態(tài)分析工具,且集成學(xué)習(xí)模型能夠有效地整合全局和局部知識(shí),進(jìn)而提高檢測精度.
上述智能合約漏洞檢測方法,將智能合約源碼以及字節(jié)碼、操作碼序列看作自然語言進(jìn)行處理,可以很方便地將自然語言處理領(lǐng)域的模型遷移到智能合約漏洞檢測中,并且取得不錯(cuò)的效果.但是編程語言與自然語言不同,編程語言是結(jié)構(gòu)化的,信息之間具有明確的結(jié)構(gòu)關(guān)系.例如函數(shù)調(diào)用、數(shù)據(jù)之間的依賴等.基于文本處理的方法僅僅關(guān)注代碼中的序列關(guān)系,忽略了最重要的結(jié)構(gòu)信息,無法學(xué)習(xí)到代碼的結(jié)構(gòu)特征.
4.2 基于靜態(tài)分析的漏洞檢測
文獻(xiàn)[48]中提出了一種結(jié)合靜態(tài)分析的智能合約漏洞檢測方法.由于智能合約的源碼大部分無法獲取,該方法收集智能合約的字節(jié)碼序列,并將其反編譯為EVM操作碼序列.然后利用靜態(tài)分析方法通過操作碼序列構(gòu)建控制流圖CFG,在CFG上進(jìn)行深度優(yōu)先遍歷得到一個(gè)新的具有智能合約執(zhí)行順序信息的操作碼序列.最后,應(yīng)用N-gram和TFIDF模型將操作碼序列轉(zhuǎn)換為向量表示,將向量輸入到神經(jīng)網(wǎng)絡(luò)中進(jìn)行訓(xùn)練和分類.
文獻(xiàn)[49]首次提出了基于圖神經(jīng)網(wǎng)絡(luò)的智能合約漏洞檢測方法.該方法包括圖生成、圖歸一化和圖神經(jīng)網(wǎng)絡(luò)訓(xùn)練三個(gè)部分.在圖生成階段,將智能合約源碼轉(zhuǎn)換為智能合約圖,智能合約圖包含三類節(jié)點(diǎn)和四類邊.三類節(jié)點(diǎn)包括主節(jié)點(diǎn)、次級(jí)節(jié)點(diǎn)和回調(diào)函數(shù)節(jié)點(diǎn).主節(jié)點(diǎn)表示合約自定義函數(shù)或內(nèi)置函數(shù).這些函數(shù)是與特定漏洞相關(guān)的.如針對(duì)重入漏洞,主節(jié)點(diǎn)表示call.value()函數(shù)以及調(diào)用call.value()的函數(shù);次級(jí)節(jié)點(diǎn)表示主要節(jié)點(diǎn)函數(shù)調(diào)用中涉及到的關(guān)鍵變量;回調(diào)函數(shù)節(jié)點(diǎn)表示外部智能合約的回調(diào)函數(shù).四類邊分別是控制流邊、數(shù)據(jù)流邊、順序執(zhí)行邊和回調(diào)函數(shù)調(diào)用邊,用于表示不同節(jié)點(diǎn)間的執(zhí)行和調(diào)用關(guān)系.在圖歸一化階段,為了降低計(jì)算復(fù)雜度,只保留智能合約圖中的主節(jié)點(diǎn),然后將與主節(jié)點(diǎn)相關(guān)聯(lián)的次級(jí)節(jié)點(diǎn)和回調(diào)函數(shù)節(jié)點(diǎn)的特征融合到主節(jié)點(diǎn)特征中.圖神經(jīng)網(wǎng)絡(luò)訓(xùn)練階段,區(qū)別于傳統(tǒng)的消息傳播機(jī)制,提出了一種按照時(shí)間順序沿著邊更新傳遞信息的新型消息傳播機(jī)制TMP.TMP更加符合智能合約執(zhí)行的順序特征.實(shí)驗(yàn)表明,新型消息傳播機(jī)制比傳統(tǒng)消息傳播機(jī)制具有更好的檢測效果.
文獻(xiàn)[50,51]對(duì)文獻(xiàn)[49]的工作進(jìn)行了擴(kuò)展,提出了一個(gè)結(jié)合專家模式的自動(dòng)漏洞檢測系統(tǒng).該系統(tǒng)分別為重入、時(shí)間戳依賴和無限循環(huán)三種漏洞設(shè)計(jì)了相應(yīng)的專家模式.它使用多層感知機(jī)將提取的專家模式編碼為特征向量,然后使用注意力編碼器網(wǎng)絡(luò)將專家模式特征和TMP圖神經(jīng)網(wǎng)絡(luò)提取的圖特征進(jìn)行融合.注意力編碼器使用注意力機(jī)制計(jì)算出智能合約圖特征和每個(gè)專家模式特征之間的權(quán)重,突出特征的重要性,使專家模式特征的融合具有可解釋性.實(shí)驗(yàn)表明,融合專家模式的方法與最先進(jìn)的技術(shù)相比有顯著的改進(jìn).
文獻(xiàn)[52]提出了一種雙注意力圖卷積神經(jīng)網(wǎng)絡(luò)(DA-GCN)來檢測智能合約的漏洞.該模型利用智能合約的CFG提取特征,考慮到CFG的基本塊級(jí)別無法獲取某些細(xì)粒度的信息,進(jìn)一步按照基本塊出現(xiàn)的順序構(gòu)建操作碼序列.DA-GCN由圖卷積模塊、雙注意力模塊和分類模塊組成.圖卷積模塊將CFG作為輸入,提取CFG級(jí)別的特征;雙注意力模塊分別提取CFG級(jí)別和操作碼級(jí)別的注意力系數(shù),賦予與漏洞最相關(guān)的部分更大的權(quán)重;最后在分類模塊中將圖卷積模塊和雙注意力模塊中提取的特征進(jìn)行拼接,送入分類器中進(jìn)行漏洞檢測.實(shí)驗(yàn)表明,DA-GCN在重入和時(shí)間戳依賴兩種漏洞的檢測上具有很好的檢測性能.
文獻(xiàn)[53]提出了一種用于智能合約漏洞檢測的基于圖嵌入的字節(jié)碼匹配方法.該方法將與漏洞相關(guān)的數(shù)據(jù)分為四類.第一類是CALLDATALOAD、CALLER、CALLVALUE等指令調(diào)用的交易數(shù)據(jù),第二類是BLOCKHASH、TIMESTAMP等指令調(diào)用的區(qū)塊數(shù)據(jù),第三類是SLOAD指令調(diào)用的存儲(chǔ)數(shù)據(jù),第四類是CALL等指令的調(diào)用返回值.該方法模擬執(zhí)行操作碼構(gòu)造控制流圖,同時(shí)跟蹤上述四類數(shù)據(jù)的數(shù)據(jù)流和控制流,結(jié)合REVERT、INVALID等異常終止指令,對(duì)操作碼序列進(jìn)行切分,得到操作碼序列切片.由于Solidity編譯器版本的不同,相同的源代碼可以轉(zhuǎn)換為具有不同的DUP/SWAP指令的操作碼序列.為了減少這種差異,在切片中忽略了這些指令.根據(jù)上述的切分方法,得到每一個(gè)目標(biāo)智能合約的切片和已知漏洞的切片.針對(duì)每一個(gè)切片,將每一個(gè)操作碼看作一個(gè)圖節(jié)點(diǎn),利用圖嵌入方法Graph2Vec[54]將切片轉(zhuǎn)換成向量表示,然后計(jì)算候選切片與已知漏洞切片的余弦距離來測量切片間的相似性,值越高.說明候選切片有漏洞的可能性越大.
文獻(xiàn)[55]提出了一種基于關(guān)鍵數(shù)據(jù)流圖和預(yù)訓(xùn)練模型的智能合約漏洞檢測框架Peculiar.該框架利用修改后的tree-sitter工具將智能合約源代碼解析為AST,在AST中識(shí)別變量序列,然后根據(jù)變量之間的數(shù)據(jù)流向關(guān)系構(gòu)數(shù)據(jù)流圖DFG,從DFG提取與關(guān)鍵變量相關(guān)的數(shù)據(jù)節(jié)點(diǎn)構(gòu)成的子圖即CDFG,最后將CDFG作為輸入對(duì)GraphCodeBert[56]模型進(jìn)行預(yù)訓(xùn)練,結(jié)合下游分類模型進(jìn)行漏洞檢測.
文獻(xiàn)[57]開發(fā)了第一個(gè)系統(tǒng)的、模塊化的基于深度學(xué)習(xí)的智能合約漏洞檢測框架DeeSCVHunter.該框架包含了8個(gè)主流的深度學(xué)習(xí)模型和3個(gè)嵌入方案.該框架提出了漏洞候選切片(VCS)的概念,首先在智能合約源代碼中匹配與漏洞相關(guān)的候選語句(CS),如call.value()、block.timestamp等,然后根據(jù)控制流和數(shù)據(jù)流匹配與候選語句相關(guān)的語句構(gòu)成漏洞候選切片,使用嵌入方案將其轉(zhuǎn)換為向量,作為深度學(xué)習(xí)模型的輸入進(jìn)行訓(xùn)練.
EtherGIS[58]是一種利用圖神經(jīng)網(wǎng)絡(luò)和專家知識(shí)從智能合約控制流圖CFG中提取圖特征的漏洞檢測框架.EtherGIS結(jié)合專家知識(shí),通過分析多種漏洞觸發(fā)機(jī)制,構(gòu)建敏感EVM指令語料庫.根據(jù)語料庫確定CFG中節(jié)點(diǎn)的特征,同時(shí)根據(jù)控制流的觸發(fā)類型確定邊的特征,最終生成相應(yīng)的屬性圖.使用GNN聚合整個(gè)圖的屬性和結(jié)構(gòu)特征,作為分類模型的輸入進(jìn)行漏洞檢測.此外,采用AutoML來自動(dòng)化整個(gè)深度學(xué)習(xí)的優(yōu)化過程.實(shí)驗(yàn)結(jié)果表明,EtherGIS可以有效地檢測智能合約中的漏洞.
上述智能合約漏洞檢測方法將靜態(tài)分析與深度學(xué)習(xí)相結(jié)合,使用靜態(tài)分析方法提取智能合約代碼的結(jié)構(gòu)信息,包括控制流圖CFG、抽象語法樹AST和數(shù)據(jù)流圖DFG等,通過深度學(xué)習(xí)方法特別是圖神經(jīng)網(wǎng)絡(luò)將結(jié)構(gòu)特征映射到向量空間,進(jìn)一步提高了智能合約漏洞的檢測效果.
4.3 基于圖像處理的漏洞檢測
智能合約的一些漏洞只出現(xiàn)在一個(gè)函數(shù)中.基于這一發(fā)現(xiàn),文獻(xiàn)[59]提出了切片矩陣的概念.將“RETURN”操作碼作為函數(shù)的分割點(diǎn),對(duì)合約操作碼進(jìn)行分割.然后提取每個(gè)片段的操作碼特征,并將其組合成一個(gè)切片矩陣,每個(gè)矩陣的大小為82*75.為了進(jìn)行比較分析,創(chuàng)建了三個(gè)模型,分別是基于操作碼特征的神經(jīng)網(wǎng)絡(luò)(Neural Network Based on Opcode Feature,NNBOOF)、基于切片矩陣的卷積神經(jīng)網(wǎng)絡(luò)(Convolution Neural Network Based on Slice Matrix,CNNBOSM)和基于操作碼特征的隨機(jī)森林模型(Random Forest Based on Opcode Feature,RFBOOF).實(shí)驗(yàn)表明,在RFBOOF的表現(xiàn)最好,但CNNBOSM的表現(xiàn)好于NNDOOF.
文獻(xiàn)[60]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的輕量級(jí)智能合約漏洞檢測模型SC-VDM.EVM中的操作碼是用兩位的十六進(jìn)制數(shù)表示的,所以將兩位字節(jié)碼分成一組來分割字節(jié)碼序列.然后用字節(jié)碼組成一個(gè)矩陣,并將每一組字節(jié)碼轉(zhuǎn)換為十進(jìn)制,使每一組數(shù)據(jù)都在0~255的范圍內(nèi),從而將矩陣轉(zhuǎn)換成一個(gè)灰度圖.得到灰度圖后,將其輸入到CNN模型中進(jìn)行訓(xùn)練.由于不同合約的大小不同,因此得到的灰度圖大小也是不一樣的,導(dǎo)致CNN模型中的全連接層會(huì)得到不同大小的特征圖.SC-VDM在全連接層前加入了一個(gè)SPP層將不同特征圖轉(zhuǎn)換為統(tǒng)一的大小.SC-VDM在檢測重入漏洞上表現(xiàn)最好,且檢測時(shí)間大大縮短,每個(gè)智能合約僅需0.021 s.
CodeNet[61]是一種新的CNN體系架構(gòu),在保持智能合約語義和上下文的同時(shí)對(duì)智能合約進(jìn)行漏洞檢測.為了生成CNN體系架構(gòu)的輸入,預(yù)處理階段將固定的字節(jié)碼序列轉(zhuǎn)換為RGB圖像,字節(jié)碼中每三個(gè)字節(jié)被映射成RGB像素.為了保留字節(jié)碼的語義和上下文信息,CodeNet將二維的RGB圖像修改成一維的形式.由于帶有步幅的卷積操作會(huì)丟失像素級(jí)的特征,即破壞智能合約的語義和上下文信息,CodeNet使用非步幅卷積操作,同時(shí)采用深度可分離卷積緩解非步幅卷積帶來的計(jì)算量和參數(shù)增加的問題.
上述智能合約漏洞檢測方法從圖像處理的角度將智能合約進(jìn)行向量化,通過將智能合約轉(zhuǎn)化為二維圖像,使用圖像處理方法學(xué)習(xí)智能合約的圖像模式.然而進(jìn)行圖像轉(zhuǎn)換的方式一般都比較簡單直接,缺乏可解釋性,還需要做進(jìn)一步的研究.
5 挑戰(zhàn)與未來研究方向
5.1 數(shù)據(jù)集
神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練主要依賴于數(shù)據(jù)集.目前提出的基于深度神經(jīng)網(wǎng)絡(luò)的智能合約漏洞檢測模型大多數(shù)都是在自己構(gòu)建的數(shù)據(jù)集上進(jìn)行評(píng)估,導(dǎo)致不同模型之間的指標(biāo)無法準(zhǔn)確地進(jìn)行比較.因此迫切需要一個(gè)統(tǒng)一的數(shù)據(jù)集作為智能合約漏洞檢測模型的評(píng)估基準(zhǔn).
現(xiàn)階段已經(jīng)有一些公開的智能合約數(shù)據(jù)集.Ghaleb等[62]開源了包含7種不同漏洞的9369個(gè)智能合約構(gòu)建的數(shù)據(jù)集.但是這些智能合約是通過對(duì)正常智能合約進(jìn)行漏洞注入而得到的,可能會(huì)與區(qū)塊鏈上真實(shí)的漏洞智能合約有所不同.Durieux等[43]構(gòu)建了一個(gè)名為SmartBugs的數(shù)據(jù)集.該數(shù)據(jù)集包含兩部分,一部分包含69個(gè)智能合約和115個(gè)標(biāo)記的漏洞,另一部分包含以太坊上47 398份唯一的智能合約,并且使用9個(gè)靜態(tài)分析工具進(jìn)行了漏洞標(biāo)記.然而由于靜態(tài)分析工具存在誤報(bào),所以無法保證智能合約的標(biāo)簽真實(shí)性.此外,類不平衡的問題也會(huì)影響模型的訓(xùn)練和評(píng)估.
5.2 基于動(dòng)態(tài)特征
現(xiàn)階段的智能合約漏洞檢測模型大多基于源代碼、字節(jié)碼序列、CFG和AST等靜態(tài)特征進(jìn)行學(xué)習(xí)和檢測.然而靜態(tài)分析獲得的特征是有限的,智能合約漏洞大多是在運(yùn)行時(shí)發(fā)生的.如何將智能合約的運(yùn)行時(shí)動(dòng)態(tài)特征結(jié)合起來擴(kuò)展模型的特征表示空間,應(yīng)該成為未來的一個(gè)研究方向.SODA[63]是一個(gè)在線智能合約漏洞檢測框架,通過對(duì)EVM虛擬機(jī)進(jìn)行代碼插樁,收集智能合約運(yùn)行時(shí)的相關(guān)信息,結(jié)合預(yù)定義的規(guī)則分析智能合約是否包含漏洞.可以將此類工具收集到的智能合約運(yùn)行時(shí)信息作為動(dòng)態(tài)特征幫助模型更好地學(xué)習(xí)智能合約漏洞的特征表示.
此外,對(duì)區(qū)塊鏈上產(chǎn)生的交易信息進(jìn)行分析,可以深入挖掘智能合約與用戶間的相互關(guān)系[64],并用于智能合約漏洞檢測和溯源[65].Chen等[66]設(shè)計(jì)并實(shí)現(xiàn)了以太坊數(shù)據(jù)收集系統(tǒng)DataEther,成功獲取區(qū)塊、交易、合約等信息用于進(jìn)一步分析.可以利用此類工具構(gòu)建智能合約相關(guān)交易信息數(shù)據(jù)集,使用深度學(xué)習(xí)方法結(jié)合智能合約交易信息提取漏洞相關(guān)行為模式進(jìn)行漏洞檢測.
5.3 模型可解釋性
神經(jīng)網(wǎng)絡(luò)模型是典型的黑盒模型,模型進(jìn)行檢測的依據(jù)和原因?qū)θ藗儊碚f是未知的.現(xiàn)有的智能合約漏洞檢測研究,并沒有將精力放在解釋模型的檢測行為上.無法理解模型如何檢測智能合約漏洞的原因會(huì)導(dǎo)致模型的實(shí)用性受到質(zhì)疑,無法保證模型檢測結(jié)果的可靠性.
注意力機(jī)制可以作為解釋模型的一種手段.借助注意力機(jī)制,模型可以選擇與檢測目標(biāo)相關(guān)性較高的部分.如源代碼中與漏洞相關(guān)的關(guān)鍵代碼片段、CFG中與漏洞相關(guān)的節(jié)點(diǎn)和子圖等.結(jié)合注意力機(jī)制為可解釋的基于深度學(xué)習(xí)的智能合約漏洞檢測提供了研究方向.
6 結(jié) 論
隨著人工智能技術(shù)的興起以及在各個(gè)領(lǐng)域的研究應(yīng)用,大量基于深度學(xué)習(xí)的智能合約漏洞檢測模型涌現(xiàn).本文對(duì)近年來提出的智能合約漏洞檢測模型進(jìn)行了詳細(xì)地介紹,總結(jié)了現(xiàn)有基于深度學(xué)習(xí)的智能合約漏洞檢測的研究進(jìn)展,并提出了該領(lǐng)域面臨的挑戰(zhàn)和未來可能的研究方向.
參考文獻(xiàn):
[1] Huang K, Mu Y, Rezaeibagha F, et al. Design and analysis of cryptographic algorithms in blockchain[M].Boca Raton: CRC Press, 2021.
[2] Nakamoto S. Bitcoin: A peer-to-peer electronic cash system [EB/OL]. [2022-10-11].https://www.debr.io/article/21260-bitcoin-a-peer-to-peer-electronic-cash-system, 2008.
[3] Buterin V. A next-generation smart contract and decentralized application platform[EB/OL]. [2022-10-11].https://finpedia.vn/wp-content/uploads/2022/02/Ethereum_white_paper-a_next_generation_smart_contract_and_decentralized_application_platform-vitalik-buterin.pdf, 2014.
[4] Chen J, Xia X, Lo D, et al. Defining smart contract defects on ethereum[J].IEEE T Software Eng, 2020, 48: 327.
[5] Li X, Jiang P, Chen T, et al. A survey on the security of blockchain systems [J]. Future Gener Comp Sy, 2020, 107: 841.
[6] Chen T, Li X, Wang Y, et al. An adaptive gas cost mechanism for ethereum to defend against under-priced dos attacks [C]//Proceedings of the International Conference on Information Security Practice and Experience. Cham, Switzerland:Springer, Cham, 2017.
[7] Luu L, Chu D H, Olickel H, et al. Making smart contracts smarter[C]//Proceedings of the 2016 ACM SIGSAC conference on computer and communications security. Vienna Austria:SIGSAC,2016: 254.
[8] Kalra S, Goel S, Dhawan M, et al. Zeus: analyzing safety of smart contracts [C]//Ndss. San Diego:[s. n.],2018: 1.
[9] Tsankov P, Dan A, Drachsler-Cohen D, et al. Securify: Practical security analysis of smart contracts[C]//Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. Toronto Canada: SIGSAC, 2018: 67.
[10] Chen T, Li Z, Zhang Y, et al. A large-scale empirical study on control flow identification of smart contracts [C]//Proceedings of the 2019 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). Porto de Galinhas, Brazil: IEEE, 2019: 1.
[11] Bhargavan K, Delignat-Lavaud A, Fournet C, et al. Formal verification of smart contracts: Short paper[C]//Proceedings of the 2016 ACM workshop on programming languages and analysis for security. Vienna Austria: SIGSAC, 2016: 91.
[12] Yang Z, Lei H. Fether: An extensible definitional interpreter for smart-contract verifications in coq[J]. IEEE Access, 2019, 7: 37770.
[13] Jiang B, Liu Y, Chan W K. Contractfuzzer: fuzzing smart contracts for vulnerability detection [C]//Proceedings of the 2018 33rd IEEE/ACM International Conference on Automated Software Engineering (ASE). Montpellier, France: IEEE, 2018: 259.
[14] Chen T, Zhang Y, Li Z, et al. Tokenscope: Automatically detecting inconsistent behaviors of cryptocurrency tokens in ethereum [C]//Proceedings of the 2019 ACM SIGSAC Conference on Computer and Communications Security. London United Kingdom: SIGSAC, 2019: 1503.
[15] Zeng P, Lin G, Pan L, et al. Software vulnerability analysis and discovery using deep learning techniques: a survey[J]. IEEE Access, 2020, 8: 197158.
[16] Szabo N. Formalizing and securing relationships on public networks [J]. First Monday, 1997, 2: 1.
[17] Dannen C. Introducing Ethereum and solidity [M]. Berkeley: Apress, 2017.
[18] 張小松. 區(qū)塊鏈安全技術(shù)與應(yīng)用[M]. 北京: 科學(xué)出版社, 2021.
[19] Dune. Ethereum smart contracts creation [DB/OL].[2022-11-02]. https://dune.com/queries/1712220.
[20] Top DeFi Tokens by market capitalization[DB/OL].[2022-11-10].https://coinmarketcap.com/view/defi/.
[21] Shae Z, Tsai J J P. On the design of a blockchain platform for clinical trial and precision medicine[C]//Proceedings of the 2017 IEEE 37th International Conference on Distributed Computing Systems (ICDCS). Atlanta: IEEE, 2017: 1972.
[22] Zhang P, White J, Schmidt D C, et al. FHIRChain: applying blockchain to securely and scalably share clinical data [J]. Comput Struct Biotec, 2018, 16: 267.
[23] Kim H M, Laskowski M. Toward an ontology-driven blockchain design for supply-chain provenance [J]. Intell Syst Account, 2018, 25: 18.
[24] Figorilli S, Antonucci F, Costa C, et al. A blockchain implementation prototype for the electronic open source traceability of wood along the whole supply chain [J]. Sensors, 2018, 18: 3133.
[25] Guan Z, Si G, Zhang X, et al. Privacy-preserving and efficient aggregation based on blockchain for power grid communications in smart communities[J]. IEEE Commun Mag, 2018, 56: 82.
[26] Huang K, Zhang X, Mu Y, et al. Building redactable consortium blockchain for industrial Internet-of-Things[J]. IEEE T Ind Inform, 2019, 15: 3670.
[27] DAO. The DAO (organization)[EB/OL].[2022-10-24]. https://en.w-ikipedia.org/wiki/The_DAO_(organization).
[28] Breidenbach L, Daian P, Juels A, et al. An In-Depth look at the parity Multisig Bug[EB/OL].[2022-10-24].https://hackingdistributed.com/2017/07/22/deep-dive-parity-bug.
[29] p0n1. A disastrous vulnerability found in smart contracts of BeautyChain(BEC)[EB/OL]. [2022-10-24]. https://medium.com/secbit-media/a-disastrous-vulnerability-found-in-smart-contracts-of-beautychain-bec-dbf24ddbc30e.
[30] Allen i. 幣安遭黑客洗劫7000比特幣, 價(jià)值約4100萬美金[EB/OL]. [2022-10-24]. https://www.freebuf.com/news/203024.html.
[31] 觀網(wǎng)財(cái)經(jīng). 幣安旗下區(qū)塊鏈項(xiàng)目被盜[EB/OL]. [2022-10-24].https://www.36kr.com/p/1950114960196228.
[32] 譚粵飛. 2021年區(qū)塊鏈安全生態(tài)報(bào)告:80%DAPP安全事故緣于智能合約漏洞[EB/OL].[2022-10-24]. https://new.qq.com/rain/a/20220209A0620600.
[33] Tann W J W, Han X J, Gupta S S, et al. Towards safer smart contracts: A sequence learning approach to detecting security threats[EB/OL]. [2022-09-05]. https://arxiv.org/abs/1811.06632.
[34] Hochreiter S, Schmidhuber J. Long short-term memory [J]. Neural Comput, 1997, 9: 1735.
[35] Gogineni A K, Swayamjyoti S, Sahoo D, et al. Multi-class classification of vulnerabilities in smart contracts using AWD-LSTM, with pre-trained encoder inspired from natural language processing [J]. IOP SciNotes, 2020, 1: 035002.
[36] Merity S, Keskar N S, Socher R. Regularizing and optimizing LSTM language models [C]//Proceedings of International Conference on Learning Representations. Vancouver: [S. n.] , 2018.
[37] Lutz O, Chen H, Fereidooni H, et al. ESCORT: ethereum smart contracts vulnerability detection using deep neural network and transfer learning [EB/OL]. [2022-09-15]. https://arxiv.org/abs/2103.12607.
[38] Chung J, Gulcehre C, Cho K H, et al. Empirical evaluation of gated recurrent neural networks on sequence modeling [EB/OL]. [2022-09-15]. https://arxiv.org/abs/1412.3555.
[39] Huang J, Zhou K, Xiong A, et al. Smart contract vulnerability detection model based on multi-task learning [J]. Sensors, 2022, 22: 1829.
[40] Zhang L, Chen W, Wang W, et al. CBGRU: a detection method of smart contract vulnerability based on a hybrid model [J]. Sensors, 2022, 22: 3577.
[41] Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[EB/OL].[2022-09-16]. https://arxiv.org/abs/1301.3781.
[42] Bojanowski P, Grave E, Joulin A, et al. Enriching word vectors with subword information [J]. Trans Assoc Comput Linguist, 2017, 5: 135.
[43] Durieux T, Ferreira J F, Abreu R, et al. Empirical review of automated analysis tools on 47,587 Ethereum smart contracts[C]//Proceedings of the ACM/IEEE 42nd International conference on software engineering. Seoul South Korea:SIGSOFT, 2020: 530.
[44] Ashizawa N, Yanai N, Cruz J P, et al. Eth2Vec: learning contract-wide code representations for vulnerability detection on ethereum smart contracts[C]//Proceedings of the 3rd ACM International Symposium on Blockchain and Secure Critical Infrastructure. Hong Kong, China: SIGSAC, 2021: 47.
[45] Le Q, Mikolov T. Distributed representations of sentences and documents [C]//Proceedings of the International Conference on Machine Learning. PMLR, 2014: 1188.
[46] Zhang L, Wang J, Wang W, et al. A novel smart contract vulnerability detection method based on information graph and ensemble learning [J]. Sensors, 2022, 22: 3581.
[47] Vaswani A, Shazeer N, Parmar N, et al. Attention is all you need[C]//Proceedings of Advances in Neural Information Processing Systems. [S. l.]: Curran Associates, Inc, 2017.
[48] Mi F, Wang Z, Zhao C, et al. VSCL: automating vulnerability detection in smart contracts with deep learning [C]//Proceedings of the 2021 IEEE International Conference on Blockchain and Cryptocurrency (ICBC). Sydney: IEEE, 2021: 1.
[49] Zhuang Y, Liu Z, Qian P, et al. Smart contract vulnerability detection using graph neural network[C]// Proceedings of the International Joint Conference on Artificial Intelligence. Yokohama: [s. n.], 2020: 3283.
[50] Liu Z, Qian P, Wang X, et al. Smart contract vulnerability detection: from pure neural network to interpretable graph feature and expert pattern fusion[EB/OL].[2022-09-16]. https://arxiv.org/abs/2106.09282.
[51] Liu Z, Qian P, Wang X, et al. Combining graph neural networks with expert knowledge for smart contract vulnerability detection [J]. IEEE T Knowl Data En, 2021, 2021: 1.
[52] Fan Y, Shang S, Ding X. Smart contract vulnerability detection based on dual attention graph convolutional network [C]//Proceedings of the International Conference on Collaborative Computing: Networking, Applications and Worksharing. Cham, Switzerland: Springer, Cham, 2021: 335.
[53] Huang J, Han S, You W, et al. Hunting vulnerable smart contracts via graph embedding based bytecode matching [J]. IEEE T Inf Foren Sec, 2021, 16: 2144.
[54] Narayanan A, Chandramohan M, Venkatesan R, et al. Graph2vec: learning distributed representations of graphs [C]// Proceedings of the 13th International Workshop on Mining and Learning with Graphs (MLG). Nova Scotia: [s.n.], 2017: 21.
[55] Wu H, Zhang Z, Wang S, et al. Peculiar: Smart contract vulnerability detection based on crucial data flow graph and pre-training techniques [C]//Proceedings of the 2021 IEEE 32nd International Symposium on Software Reliability Engineering (ISSRE). Wuhan, China: IEEE, 2021: 378.
[56] Guo D, Ren S, Lu S, et al. Graphcodebert: Pre-training code representations with data flow [C]// Proceedings of International Conference on Learning Representations. Vienna: [s. n.], 2020.
[57] Yu X, Zhao H, Hou B, et al. DeeSCVHunter: a deep learning-based framework for smart contract vulnerability detection [C]//Proceedings of the 2021 International Joint Conference on Neural Networks (IJCNN). Shenzhen: IEEE, 2021: 1.
[58] Zeng Q, He J, Zhao G, et al. EtherGIS: a vulnerability detection framework for ethereum smart contracts based on graph learning features[C]//Proceedings of the 2022 IEEE 46th Annual Computers, Software, and Applications Conference (COMPSAC). Los Alamitos: IEEE, 2022: 1742.
[59] Xing C, Chen Z, Chen L, et al. A new scheme of vulnerability analysis in smart contract with machine learning [J]. Wirel Netw, 2020, 2020: 1.
[60] Zhou K, Cheng J, Li H, et al. SC-VDM: a lightweight smart contract vulnerability detection model [C]//Proceedings of the International Conference on Data Mining and Big Data. Guangzhou: Springer, Singapore, 2021: 138.
[61] Hwang S J, Choi S H, Shin J, et al. CodeNet: Code-targeted convolutional neural network architecture for smart contract vulnerability detection[J]. IEEE Access, 2022, 10: 32595.
[62] Ghaleb A, Pattabiraman K. How effective are smart contract analysis tools? evaluating smart contract static analysis tools using bug injection [C]//Proceedings of the 29th ACM SIGSOFT International Symposium on Software Testing and Analysis. Virtual Event USA: SIGSOFT, 2020: 415.
[63] Chen T, Cao R, Li T, et al. SODA: A generic online detection framework for smart contracts [C]//NDSS. San Diego: [s. n.],2020.
[64] Chen T, Li Z, Zhu Y, et al. Understanding ethereum via graph analysis [J]. ACM T Internet Techn, 2020, 20: 1.
[65] Zhu H, Niu W, Liao X, et al. Attacker traceability on ethereum through graph analysis [J]. Secur Commun N, 2022, 2022: 3448950.
[66] Chen T, Li Z, Zhang Y, et al. Dataether: data exploration framework for ethereum [C]//Proceedings of the 2019 IEEE 39th International Conference on Distributed Computing Systems (ICDCS). Dallas: IEEE, 2019: 1369.