• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    智能合約漏洞檢測(cè)研究綜述

    2022-11-15 16:17:18李雷孝高昊昱牛鐵銘杜金澤
    計(jì)算機(jī)與生活 2022年11期
    關(guān)鍵詞:檢測(cè)工具以太攻擊者

    李雷孝,鄭 岳,高昊昱,熊 嘯,牛鐵銘,杜金澤,高 靜

    1.內(nèi)蒙古工業(yè)大學(xué) 數(shù)據(jù)科學(xué)與應(yīng)用學(xué)院,呼和浩特010080

    2.內(nèi)蒙古自治區(qū)基于大數(shù)據(jù)的軟件服務(wù)工程技術(shù)研究中心,呼和浩特010080

    3.內(nèi)蒙古工業(yè)大學(xué) 信息工程學(xué)院,呼和浩特010080

    4.內(nèi)蒙古農(nóng)業(yè)大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,呼和浩特010011

    近幾年來(lái),新型數(shù)字貨幣發(fā)展迅速,其中以比特幣(bitcoin)為代表的數(shù)字貨幣的價(jià)值和社會(huì)影響力已經(jīng)不可估量[1]。2008 年Nakamoto[2]在比特幣白皮書中首次提出區(qū)塊鏈的概念,自此區(qū)塊鏈逐漸進(jìn)入人們的視野。2015 年區(qū)塊鏈的發(fā)展迎來(lái)了大爆發(fā),逐漸壯大起來(lái)。隨后區(qū)塊鏈被逐步應(yīng)用在金融[3]、交通[4-7]、醫(yī)療[8-10]以及物聯(lián)網(wǎng)[11-13]等諸多傳統(tǒng)領(lǐng)域當(dāng)中。隨著區(qū)塊鏈的發(fā)展壯大,智能合約越來(lái)越多地被人們關(guān)注和提及。智能合約的概念在1994年由Szabo[14]首次提出,但是由于時(shí)代發(fā)展的局限性,智能合約并沒有很好的應(yīng)用空間,直到區(qū)塊鏈的出現(xiàn),智能合約得到了發(fā)展和應(yīng)用契機(jī)。智能合約逐漸成為區(qū)塊鏈發(fā)展的關(guān)鍵環(huán)節(jié),被視為區(qū)塊鏈2.0的標(biāo)志之一。

    區(qū)塊鏈作為一個(gè)讓多個(gè)相互不信任的各方使用加密貨幣進(jìn)行交易的平臺(tái),使用對(duì)等網(wǎng)絡(luò)解決交易過程中的信任問題,使得對(duì)等雙方能夠就交易達(dá)成一致。與區(qū)塊鏈的發(fā)展相結(jié)合,加密貨幣得到了快速的發(fā)展。加密貨幣通常采用嚴(yán)密邏輯設(shè)計(jì)的共識(shí)協(xié)議(如工作量證明(proof of work,POW[15])、權(quán)益證明(proof of stake,POS)等),由其底層網(wǎng)絡(luò)中所有參與的節(jié)點(diǎn)同意,網(wǎng)絡(luò)的計(jì)算節(jié)點(diǎn)負(fù)責(zé)在分布式賬本——區(qū)塊鏈中記錄交易后的狀態(tài)。在眾多區(qū)塊鏈網(wǎng)絡(luò)中,由于以太坊[16]的實(shí)現(xiàn)方式能夠使開發(fā)者使用區(qū)塊鏈編寫去中心化應(yīng)用程序(Dapp)[17-21]和智能合約,在區(qū)塊鏈社區(qū)中越來(lái)越受歡迎。以太坊區(qū)塊鏈平臺(tái)是一種基于共識(shí)機(jī)制的全球化執(zhí)行的虛擬機(jī),也稱為以太坊虛擬機(jī)(Ethereum virtual machine,EVM)。它通過實(shí)現(xiàn)微內(nèi)核來(lái)支持少量指令、堆棧、內(nèi)存和存儲(chǔ),這支撐了分布式應(yīng)用程序的全新概念。由于區(qū)塊鏈復(fù)雜的協(xié)議在設(shè)計(jì)和編碼的過程中難以避免出現(xiàn)人工的差錯(cuò),隨著區(qū)塊鏈技術(shù)的發(fā)展和應(yīng)用,其脆弱性和其他性能問題逐漸暴露在人們的視野中。許多重大安全事件的發(fā)生讓人們對(duì)區(qū)塊鏈的安全產(chǎn)生了越來(lái)越多的關(guān)注。尤其近年來(lái)發(fā)生的多起重大安全事件,例如2016 年TheDAO 事件[22],惡意攻擊者利用可重入漏洞竊取了價(jià)值6 000萬(wàn)美金的Ether(以太坊加密貨幣),并由此造成了以太坊硬分叉;此外,2018年美鏈(beauty chain,BEC)[23]合約自身存在整數(shù)溢出的漏洞被攻擊者利用,無(wú)限制地復(fù)制BEC 代幣,導(dǎo)致BEC代幣的價(jià)格跳水歸零;與此同時(shí)還有諸如Rubixi利用不可篡改性騙取代幣的龐氏騙局,King of the Ether Throne[24]采用拒絕服務(wù)攻擊來(lái)騙取代幣的攻擊方式等一系列針對(duì)區(qū)塊鏈平臺(tái)的攻擊。表1 給出了近年來(lái)區(qū)塊鏈遭受的部分標(biāo)志性的攻擊事件。導(dǎo)致表1 中一系列安全問題出現(xiàn)的原因主要有智能合約一旦部署不可修改、合約執(zhí)行后不可逆、編程語(yǔ)言自身問題或程序員的邏輯問題等。因此如何快速準(zhǔn)確地進(jìn)行漏洞檢測(cè)是當(dāng)前研究的重點(diǎn),智能合約的漏洞檢測(cè)已經(jīng)成為當(dāng)下的研究熱點(diǎn)。

    表1 區(qū)塊鏈安全的重大事件表Table 1 List of major events in blockchain security

    本文旨在介紹區(qū)塊鏈中一些常見的漏洞情況,同時(shí)介紹一些漏洞檢測(cè)的工具和方法,為之后的研究者提供一個(gè)綜合化的有關(guān)漏洞工具和方法的介紹。另外本文涉及到的區(qū)塊鏈相關(guān)代碼如無(wú)特殊介紹均為以太坊虛擬機(jī)的Solidity語(yǔ)言。

    1 區(qū)塊鏈和智能合約

    區(qū)塊鏈的誕生促進(jìn)了智能合約的發(fā)展,通過智能合約編寫去中心化應(yīng)用也為區(qū)塊鏈發(fā)展起到了促進(jìn)作用。相比傳統(tǒng)程序代碼,智能合約肩負(fù)了保證參與多方公平性的問題,同時(shí)通過合約管理大量具有經(jīng)濟(jì)價(jià)值的加密貨幣。本章將簡(jiǎn)要概述區(qū)塊鏈和智能合約所用到的技術(shù)和特性。

    1.1 區(qū)塊鏈技術(shù)

    區(qū)塊鏈?zhǔn)且粋€(gè)分布式的賬本,其利用默克爾樹、簽名、對(duì)等網(wǎng)絡(luò)以及哈希函數(shù)等技術(shù),為區(qū)塊鏈提供了安全可靠的技術(shù)支持。維基百科中對(duì)區(qū)塊鏈的描述為:區(qū)塊鏈?zhǔn)且环N不斷增長(zhǎng)的紀(jì)錄列表,這種記錄稱為“區(qū)塊(Block)”,這些區(qū)塊鏈接到一起,并使用密碼加密以確保安全。區(qū)塊鏈結(jié)合密碼學(xué),可以保證交易的可追溯性、不可篡改性、不可否認(rèn)性和不可偽造性,支持?jǐn)?shù)據(jù)安全共享和大規(guī)模協(xié)同計(jì)算,實(shí)現(xiàn)對(duì)用戶身份和機(jī)密數(shù)據(jù)的隱私保護(hù)以及適用于需要高隱私性和安全性的分布式應(yīng)用場(chǎng)景中[25]。區(qū)塊鏈在金融、醫(yī)療和交通等社會(huì)領(lǐng)域當(dāng)中的應(yīng)用以及去中心化的特性等因素,使得區(qū)塊鏈被認(rèn)為是人類信用進(jìn)化史上的第四個(gè)里程碑。

    區(qū)塊鏈系統(tǒng)是由多層架構(gòu)共同構(gòu)成的,區(qū)塊鏈的系統(tǒng)架構(gòu)可分為數(shù)據(jù)結(jié)構(gòu)層、網(wǎng)絡(luò)層、共識(shí)層、激勵(lì)層、合約層和應(yīng)用層六層,如圖1 所示。區(qū)塊鏈的底層是區(qū)塊,區(qū)塊間通過哈希指針鏈接形成區(qū)塊鏈網(wǎng)絡(luò)。區(qū)塊包含區(qū)塊頭和區(qū)塊體,由區(qū)塊頭中的哈希值來(lái)定位上一個(gè)區(qū)塊的地址,而區(qū)塊體包含實(shí)際的交易內(nèi)容,區(qū)塊體的內(nèi)容由該塊的所有者通過私鑰進(jìn)行簽名以保證其安全性。網(wǎng)絡(luò)層的結(jié)構(gòu)是對(duì)等網(wǎng)絡(luò),對(duì)等網(wǎng)絡(luò)是一種動(dòng)態(tài)的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),有很強(qiáng)的健壯性。共識(shí)層則是通過共識(shí)協(xié)議進(jìn)行挖礦操作。區(qū)塊鏈的參與者計(jì)算哈希值,首先計(jì)算出哈希值的塊獲得挖礦獎(jiǎng)勵(lì)。在此就延伸出了共識(shí)協(xié)議(工作量證明POW、權(quán)益證明POS 等)。合約層的主要內(nèi)容為人工編寫的智能合約。應(yīng)用層則用于部署一些去中心化的應(yīng)用、進(jìn)行支付等操作,供人們更好地使用區(qū)塊鏈為現(xiàn)實(shí)需求服務(wù)。

    圖1 區(qū)塊鏈的系統(tǒng)架構(gòu)圖Fig.1 Blockchain system architecture diagram

    1.2 智能合約

    尼克薩博在智能合約白皮書中提出智能合約的設(shè)計(jì)應(yīng)遵循可觀察性、客觀可核查性、相對(duì)性以及可執(zhí)行性同時(shí)減少執(zhí)行的需要的四點(diǎn)設(shè)計(jì)原則和目標(biāo)。同時(shí)其提出一個(gè)需要解決的問題,如何保證一個(gè)可信的第三方有足夠的判斷力來(lái)恰當(dāng)?shù)爻袚?dān)任務(wù),即如何保證第三方的公平性、非惡意性。隨著區(qū)塊鏈的出現(xiàn),研究者發(fā)現(xiàn)智能合約與區(qū)塊鏈可以完美地結(jié)合,用以實(shí)現(xiàn)去中心化。智能合約是運(yùn)行在區(qū)塊鏈系統(tǒng)上的一段代碼,代碼邏輯定義了合約內(nèi)容。智能合約應(yīng)用以太坊獨(dú)有的二進(jìn)制編碼格式——EVM 字節(jié)碼進(jìn)行編碼并存儲(chǔ)于區(qū)塊鏈中。然而,智能合約通常由高級(jí)語(yǔ)言編寫(例如Solidity)通過智能合約編寫去中心化應(yīng)用程序,然后編譯成字節(jié)碼上傳到區(qū)塊鏈上。

    圖2 以HelloWorld 為例展示智能合約的部署流程。首先調(diào)用transaction 函數(shù)在礦工打包的時(shí)候會(huì)生成智能合約地址。智能合約地址的生成是由創(chuàng)建者的賬號(hào)和發(fā)送的交易數(shù)作為隨機(jī)數(shù)輸入,通過Kecca-256加密算法重新創(chuàng)建一個(gè)地址作為賬號(hào)。即最后合約地址對(duì)應(yīng)合約的代碼會(huì)保存在區(qū)塊鏈數(shù)據(jù)庫(kù)中,調(diào)用者只需要有合約地址和abi文件就可以調(diào)用合約的代碼。

    圖2 智能合約的部署流程Fig.2 Deployment process of smart contract

    雖然智能合約促進(jìn)了區(qū)塊鏈技術(shù)的發(fā)展,但是由于智能合約編寫語(yǔ)言自身缺陷或程序員編寫過程中出現(xiàn)的邏輯錯(cuò)誤等問題,使智能合約產(chǎn)生了一些漏洞,因此造成了智能合約成為攻擊者攻擊的目標(biāo)。一些統(tǒng)計(jì)顯示智能合約中的漏洞是普遍存在的,例如整數(shù)溢出漏洞、重入攻擊、拒絕服務(wù)攻擊等都是常見的智能合約漏洞類型。

    2 智能合約的漏洞

    智能合約作為區(qū)塊鏈技術(shù)的重要組成,通過編寫智能合約在區(qū)塊鏈上部署去中心化的應(yīng)用程序?yàn)閰^(qū)塊鏈快速發(fā)展提供了幫助。但同時(shí)大量針對(duì)智能合約的漏洞也暴露在漏洞檢測(cè)人員的視野中。在漏洞研究中,據(jù)統(tǒng)計(jì)存在25 種左右的常見漏洞。Atzei等人[26]對(duì)當(dāng)時(shí)存在的智能合約漏洞,根據(jù)Solidity、EVM 和Blockchain 三個(gè)層級(jí)進(jìn)行了分類。表2 展示了Nicola 對(duì)漏洞的分類。本章將列舉八種以太坊中常見的漏洞,并對(duì)部分漏洞代碼進(jìn)行重現(xiàn)。由于智能合約典型漏洞案例大多由以太坊智能合約引發(fā),并且研究者常以以太坊智能合約作為研究對(duì)象進(jìn)行研究。因此本文以以太坊智能合約作為研究對(duì)象,詳細(xì)描述了智能合約安全漏洞。

    表2 以太坊漏洞分類Table 2 Ethereum vulnerabilities classification

    2.1 重入攻擊漏洞

    重入攻擊漏洞是區(qū)塊鏈網(wǎng)絡(luò)中被頻繁利用的漏洞之一,TheDao 事件便是利用重入攻擊漏洞進(jìn)行的攻擊。重入攻擊漏洞常見于轉(zhuǎn)賬操作中,由于Solidity語(yǔ)言本身的原因,fallback[27]函數(shù)會(huì)在函數(shù)調(diào)用結(jié)束前讓攻擊者有機(jī)會(huì)再次執(zhí)行被調(diào)用的函數(shù)。攻擊者在執(zhí)行轉(zhuǎn)賬操作時(shí)對(duì)fallback函數(shù)進(jìn)行修改。在執(zhí)行轉(zhuǎn)賬操作的時(shí)候,會(huì)涉及到跨合約的調(diào)用,此時(shí)攻擊者會(huì)利用這些外部調(diào)用,設(shè)計(jì)惡意的代碼多次調(diào)用漏洞合約中的轉(zhuǎn)賬操作,將賬戶中的余額不斷消耗,直至gas耗盡。這里對(duì)重入攻擊漏洞進(jìn)行代碼重現(xiàn),具體代碼如下所示。

    重入漏洞代碼示例:

    在該合約中,withdraw()函數(shù)使用call.value()方法進(jìn)行轉(zhuǎn)賬時(shí),該方法會(huì)傳遞所有可用gas 進(jìn)行調(diào)用。當(dāng)該方法轉(zhuǎn)賬的地址為攻擊者的合約地址時(shí),就會(huì)調(diào)用攻擊者合約地址的fallback函數(shù)。如果攻擊者在自身合約的fallback 函數(shù)中寫入調(diào)用withdraw函數(shù)的代碼,就可不停地循環(huán)獲取代幣,不再執(zhí)行balance[msg.sender]-=amount的減幣操作,從而導(dǎo)致重入漏洞攻擊的發(fā)生。

    2.2 整數(shù)溢出漏洞

    整數(shù)溢出的類型包括乘法溢出、加法溢出和減法溢出三種。由于EVM為所有的整數(shù)指定了固定大小的數(shù)據(jù)類型,一個(gè)整型的變量只能由一定范圍的數(shù)字來(lái)進(jìn)行表示。以u(píng)int8 為例,uint8 的范圍為0 到255,因此如果存儲(chǔ)一個(gè)256位的數(shù)值,則存儲(chǔ)結(jié)果將會(huì)變?yōu)?。如圖3所示,8位無(wú)符整數(shù)255在內(nèi)存中占據(jù)8 bit位置,若再加1則整體會(huì)因?yàn)檫M(jìn)位而導(dǎo)致整體翻轉(zhuǎn)為0,進(jìn)而導(dǎo)致原有的8 bit整數(shù)表示為整數(shù)0。

    圖3 整數(shù)溢出示例Fig.3 Integer overflow example

    針對(duì)整數(shù)溢出漏洞,以太坊為開發(fā)者提供了SafeMath庫(kù)[28],庫(kù)中的數(shù)值計(jì)算操作會(huì)檢測(cè)整數(shù)溢出行為,并在溢出發(fā)生時(shí)拋出異常。

    2.3 訪問控制漏洞

    以太坊合約開發(fā)者(Owner)具有合約的超級(jí)權(quán)限,包括凍結(jié)代幣、增發(fā)代幣、銷毀代幣、鑄造新的代幣以及終止合約運(yùn)行等。若合約權(quán)限被攻擊者竊取將造成嚴(yán)重影響[29]。訪問控制漏洞的產(chǎn)生是由于智能合約的編寫者沒能準(zhǔn)確檢查合約中函數(shù)的訪問權(quán)限,例如將一些應(yīng)該設(shè)置為private 的函數(shù)不加區(qū)別或未定義權(quán)限,默認(rèn)為了public類型。這些函數(shù)本應(yīng)該是普通用戶無(wú)法訪問的,因此就導(dǎo)致攻擊者有足夠的權(quán)限去訪問本不該被其訪問的函數(shù)或者變量。

    訪問控制漏洞示例:

    如上所示,setOwner 函數(shù)未定義函數(shù)類型,因此其類型為public,此函數(shù)可以用于設(shè)置合約的擁有者。但其標(biāo)注為public 類型就使得所有人都擁有了訪問的權(quán)限,因此攻擊者可以輕松地設(shè)置其他用戶為owner并竊取其中的加密貨幣。

    2.4 交易順序依賴攻擊

    與大多數(shù)區(qū)塊鏈一樣,以太坊節(jié)點(diǎn)通過匯總交易并將其形成塊。一旦礦工解決了共識(shí)機(jī)制(例如以太坊的POW),那么該交易就被認(rèn)為是有效的。解決該區(qū)塊的礦工能夠選擇來(lái)自該礦池的哪些交易將包含在該區(qū)塊中,這通常是由gas交易決定的。在這里有一個(gè)潛在的攻擊媒介,攻擊者可以觀察事務(wù)池中是否存在可能包含問題解決方案的交易,修改或撤銷攻擊者的權(quán)限或更改合約中對(duì)攻擊者不利的狀態(tài)。然后,攻擊者可以從這個(gè)事務(wù)中獲取數(shù)據(jù),并創(chuàng)建一個(gè)更高級(jí)別的事務(wù)gas,在交易公布之前將其交易打包存放在一個(gè)區(qū)塊中。

    如下代碼示例所示,此合約包含10個(gè)以太幣,如果礦工能成功查找到hash,則發(fā)放10 個(gè)以太幣給第一個(gè)查找到此hash 的礦工。但是在這個(gè)過程中,攻擊者可以時(shí)刻關(guān)注到交易池中所有人提交的答案,攻擊者也可以隨時(shí)檢查答案的有效性,然后發(fā)起更高gas 的交易,從而獲得這筆交易的10 以太幣獎(jiǎng)勵(lì)。而第一個(gè)查找到此hash的礦工將一無(wú)所獲。因此錯(cuò)誤的交易順序可能會(huì)對(duì)合約造成負(fù)面的影響[30]。

    交易順序依賴攻擊代碼示例:

    2.5 對(duì)可預(yù)測(cè)變量的依賴

    對(duì)可預(yù)測(cè)變量的依賴[31]是由于在區(qū)塊鏈中取隨機(jī)操作存在偽隨機(jī)行為,即攻擊者可以通過某些手段去預(yù)測(cè)下一步的變量值,達(dá)到控制合約并造成不可預(yù)料的結(jié)果從而取得加密貨幣的目的。

    在以太坊中,區(qū)塊頭包含一些以太坊自身特殊的字段來(lái)表示區(qū)塊的屬性值,智能合約可以通過以太坊提供的這些接口來(lái)讀取相應(yīng)的屬性值,如block.coinbase(address)、block.gaslimit(uint)等。在以太坊中存在熵的概念[32],即隨機(jī)性。由于以太坊不存在傳統(tǒng)編程語(yǔ)言中的Random()函數(shù),而是利用這些屬性值產(chǎn)生隨機(jī)數(shù)。聰明的攻擊者會(huì)利用這些屬性值去尋找隨機(jī)數(shù)的生成方法,并竊取加密貨幣。同時(shí)由于一個(gè)區(qū)塊的時(shí)間戳是由礦工決定的,并且允許有900 s 的偏移,這就給一些投機(jī)的礦工利用這個(gè)時(shí)間節(jié)點(diǎn)去搶先獲取出塊獎(jiǎng)勵(lì)的機(jī)會(huì)。

    對(duì)可預(yù)測(cè)變量的依賴代碼漏洞示例:

    如上面展示了一個(gè)時(shí)間戳依賴的例子,礦工可以根據(jù)需要調(diào)整時(shí)間戳,因此如果合約中有足夠的以太幣,計(jì)算出某個(gè)區(qū)塊的礦工將被激勵(lì)選擇一個(gè)now%15==0 的時(shí)間戳,這樣便可有機(jī)會(huì)贏得這個(gè)合約。由于每個(gè)區(qū)塊只允許一個(gè)人下注,也易受前置交易的攻擊。由于塊時(shí)間戳是單調(diào)遞增的,礦工不能自主選擇任意的塊時(shí)間戳,這些塊可能會(huì)被網(wǎng)絡(luò)拒絕。

    2.6 tx-origin濫用

    以太坊智能合約有一個(gè)全局變量tx.origin[33],它能夠回溯整個(gè)調(diào)用棧并返回最初發(fā)起調(diào)用的合約地址。若合約使用這個(gè)變量做用戶驗(yàn)證或授權(quán)操作,攻擊者便可以利用tx.origin 的特性創(chuàng)建相應(yīng)的攻擊合約盜取以太幣。例如,攻擊者在自己的Fallback 函數(shù)中調(diào)用受害者合約的取錢函數(shù),通過誘導(dǎo)受害者合約轉(zhuǎn)賬以太幣給攻擊者合約,而由于“tx.origin==owner”的緣故,會(huì)導(dǎo)致無(wú)法檢測(cè)出異常,從而使受害者合約中的以太幣全部轉(zhuǎn)到攻擊者合約賬戶中。

    tx-origin漏洞代碼示例:

    如上所示,合同擁有者成功發(fā)送了一個(gè)交易給攻擊者合約,這將觸發(fā)Fallback函數(shù)執(zhí)行。在Fallback函數(shù)中調(diào)用被攻擊合約里的withdrawAll()函數(shù)。這將導(dǎo)致被攻擊合約里的所有代幣被提取到攻擊者的地址。這是因?yàn)樽畛鹾霞s的調(diào)用者是受害者合約地址(這里是受攻擊的合約地址)。因而,tx.origin等于所有者,在被釣魚合約的第11 行上的require 語(yǔ)句就會(huì)不起作用,因此withdrawAll()函數(shù)得以繼續(xù)執(zhí)行。

    2.7 拒絕服務(wù)攻擊

    拒絕服務(wù)攻擊(denial of service,DOS)[34]就是用戶想要進(jìn)行的操作或服務(wù)請(qǐng)求無(wú)法被系統(tǒng)處理。DOS 的攻擊方式有多種,其中針對(duì)智能合約的DOS攻擊屬于利用協(xié)議漏洞進(jìn)行攻擊的手段,攻擊將導(dǎo)致合約在短時(shí)間內(nèi)無(wú)法運(yùn)行,或者某些情況下永久無(wú)法運(yùn)行。因此在區(qū)塊鏈網(wǎng)絡(luò)上造成永久的“凍土”,即合約被鎖定,用戶的加密貨幣也隨合約一同“冰封”。拒絕服務(wù)攻擊的典型案例為Throne of King of Ether,在此游戲合約中,攻擊造成了沒有成功拿到王位的人不能取回作為保證金的加密貨幣,以下面的游戲合約為例展示拒絕服務(wù)攻擊。在此游戲中,只有支付大于emperor的金額才能成為新的emperor,但要先退回之前的emperor 的加密貨幣才能更改新的emperor。如果前一個(gè)emperor 一直不接受退回的加密貨幣,則前一個(gè)emperor 就能一直保持emperor的身份,以此造成拒絕服務(wù)攻擊。

    拒絕服務(wù)攻擊代碼示例:

    2.8 動(dòng)態(tài)數(shù)組雙重訪問攻擊

    動(dòng)態(tài)數(shù)組雙重訪問攻擊(dynamic array doubleaccess attack)區(qū)別于雙花攻擊,由Chang 等人[35]于2020 年提出。如圖4 所示,由于智能合約或者EVM底層的機(jī)制,不同的變量可能存儲(chǔ)在同一位置。但是某些情況下會(huì)導(dǎo)致存儲(chǔ)的變量被覆蓋,進(jìn)而導(dǎo)致合約的執(zhí)行不正確。動(dòng)態(tài)數(shù)組雙重訪問攻擊會(huì)導(dǎo)致兩種主要的危害。

    圖4 動(dòng)態(tài)數(shù)組和映射變量雙重訪問攻擊示意圖Fig.4 Schematic diagram of double access attacks on dynamic arrays and mapping variables

    (1)繞過限制條件。即可以修改if或require的條件分支語(yǔ)句修改狀態(tài)變量的值。

    (2)特權(quán)升級(jí)。攻擊者利用此漏洞破壞合約的存儲(chǔ)結(jié)構(gòu),可以任意執(zhí)行變量覆蓋的操作,從而執(zhí)行一些普通用戶無(wú)法執(zhí)行的操作。

    因此可以設(shè)計(jì)在同一存儲(chǔ)位置中訪問不同類型的變量,進(jìn)行雙重訪問攻擊,通過控制合約執(zhí)行過程,竊取以太幣。

    目前在以太坊環(huán)境中缺少有效的工具能夠?qū)?dòng)態(tài)數(shù)組雙重訪問攻擊進(jìn)行有效的檢測(cè),依賴人工方法進(jìn)行檢測(cè)效率低,因此設(shè)計(jì)有效的動(dòng)態(tài)數(shù)組雙重訪問攻擊漏洞檢測(cè)工具是當(dāng)前的重要研究方向。

    3 智能合約漏洞檢測(cè)方法

    第2章介紹了八種常見的漏洞類型,由于區(qū)塊鏈不可篡改性,需要在上鏈前把智能合約中存在的漏洞進(jìn)行檢查,避免存在漏洞的智能合約被部署上鏈。本章介紹了形式化驗(yàn)證、符號(hào)執(zhí)行、模糊測(cè)試以及機(jī)器學(xué)習(xí)等幾類智能合約漏洞檢測(cè)的方法,并分別介紹了對(duì)應(yīng)方法所使用的一些工具。

    3.1 利用形式化驗(yàn)證的審計(jì)方法

    目前,形式化驗(yàn)證技術(shù)已經(jīng)在核電、航天等高安全要求的領(lǐng)域取得了成功應(yīng)用,通過將形式化方法應(yīng)用于智能合約漏洞檢測(cè),可以使得智能合約的生成和執(zhí)行有規(guī)范性約束,從而保證合約的可信性和可靠性。形式化驗(yàn)證是智能合約安全分析的重要技術(shù)之一。通過形式化語(yǔ)言把合約中的概念、判斷、推理轉(zhuǎn)化成形式化模型,從而消除合約中的歧義性和不通用性,然后配合嚴(yán)謹(jǐn)?shù)倪壿嫼妥C明,驗(yàn)證智能合約中函數(shù)功能的正確性和安全性[36]。這些形式化驗(yàn)證方法主要包括以下四類方法:基于類BAN 邏輯的形式化方法[37],基于模型檢驗(yàn)的形式化方法[38],基于密碼學(xué)原語(yǔ)代數(shù)屬性的形式化方法和基于定理證明的形式化方法。

    常見的形式化驗(yàn)證方法包括模型檢測(cè)和演繹驗(yàn)證。模型檢測(cè)列舉出所有可能的狀態(tài)并逐一檢驗(yàn),這種方法的基本思想通過數(shù)理邏輯證明的方式,驗(yàn)證代碼在規(guī)范描述的前提下滿足某些特性。

    ZEUS[39]是一款利用形式化驗(yàn)證方法進(jìn)行漏洞檢測(cè)的工具,該工具支持將Solidity 語(yǔ)言編寫的智能合約轉(zhuǎn)換為L(zhǎng)LVM(low level virtual machine)的中間語(yǔ)言表示,再利用形式化驗(yàn)證方法驗(yàn)證安全性。但其無(wú)法檢測(cè)跨函數(shù)的重入攻擊和一些跨功能的分析策略[40]。

    Isabelle/HOL 是Hirai[41-42]提出的針對(duì)EVM 字節(jié)碼進(jìn)行檢測(cè)的形式化驗(yàn)證工具,將EVM 字節(jié)碼通過lem language 轉(zhuǎn)換成一個(gè)形式化的模型,然后通過形式化的模型去驗(yàn)證代碼邏輯中是否存在問題?;贗sabelle 方法,研究人員將其進(jìn)行了改進(jìn),放棄了lem language 這種相對(duì)來(lái)說低效率的方式,而是采用Fframework(一種航天領(lǐng)域使用的形式化漏洞驗(yàn)證框架)[43]和K-framework(一種語(yǔ)義的整合框架)[44]來(lái)進(jìn)行驗(yàn)證。

    此外國(guó)內(nèi)的一些學(xué)者也提出了自己的形式化驗(yàn)證模型,董春燕等人[45]提出了一種基于CPN(colored Petri net)模型的形式化驗(yàn)證方法,用于Auction 合約的驗(yàn)證。該模型能成功檢測(cè)出潛在可能發(fā)生不回退加密貨幣的漏洞出現(xiàn)的位置。歐陽(yáng)恒一等人[36]借鑒數(shù)學(xué)歸納法的思想,優(yōu)化SmartVerif(一種基于定理證明的形式化驗(yàn)證結(jié)合機(jī)器學(xué)習(xí)的形式化方法)模型驗(yàn)證過程,避免狀態(tài)空間的無(wú)限遍歷并能成功找出目標(biāo)漏洞。

    3.2 利用符號(hào)執(zhí)行的審計(jì)方法

    符號(hào)執(zhí)行審計(jì)方法的主要思想是將代碼中的變量符號(hào)化。通過符號(hào)化程序輸入,符號(hào)執(zhí)行能夠?yàn)樗械膱?zhí)行路徑維護(hù)一組約束,執(zhí)行之后,約束求解器將用于求解約束并確定該執(zhí)行的輸入,最后利用約束求解器得到新的測(cè)試輸入,檢測(cè)符號(hào)值是否可以產(chǎn)生漏洞。符號(hào)執(zhí)行法應(yīng)用于智能合約漏洞檢測(cè)的執(zhí)行過程為:首先,將合約中的變量值符號(hào)化;然后逐條解釋執(zhí)行程序中的指令,在解釋執(zhí)行過程中更新執(zhí)行狀態(tài)、搜集路徑約束,以完成程序中所有可執(zhí)行路徑的探索并發(fā)現(xiàn)相應(yīng)的安全問題。

    趙偉等人[29]對(duì)智能合約反編譯生成的字節(jié)碼構(gòu)建智能合約執(zhí)行的控制流圖,隨后利用約束求解生成軟件測(cè)試用例,對(duì)已知的五種類型漏洞達(dá)到了85%的檢測(cè)成功率。圖5為其符號(hào)執(zhí)行過程流程圖。

    圖5 符號(hào)執(zhí)行流圖Fig.5 Symbolic execution flow graph

    Oyente[46]是第一個(gè)用于以太坊上的漏洞檢測(cè)工具,該工具采用符號(hào)執(zhí)行方法,直接檢測(cè)EVM 字節(jié)碼,支持重入漏洞、交易順序依賴以及偽隨機(jī)等安全漏洞的檢測(cè),但是該工具對(duì)于自殺合約和tx-origin的濫用問題并不能做到有效的檢測(cè)。Mythril[47]作為一個(gè)符號(hào)執(zhí)行的漏洞檢測(cè)工具,通過對(duì)EVM 字節(jié)碼進(jìn)行分析,能夠支持多達(dá)14種漏洞的檢測(cè)。MythX[48]整合了Truffle和Remix等工具,能夠支持多平臺(tái)的漏洞檢測(cè)。

    面對(duì)現(xiàn)有符號(hào)執(zhí)行方法檢測(cè)速度較慢的問題,李宗鴻等人提出一種自底向上求解約束的改進(jìn)符號(hào)執(zhí)行方法[49]。結(jié)合深度優(yōu)先遍歷和廣度優(yōu)先遍歷進(jìn)行路徑的選擇,以此提高符號(hào)執(zhí)行的代碼覆蓋率。該方法顯著地提高了中等規(guī)模智能合約中的檢測(cè)效率,并在正確率方面取得了不錯(cuò)的效果。

    3.3 利用模糊測(cè)試的審計(jì)方法

    模糊測(cè)試是一種通過向目標(biāo)系統(tǒng)提供非預(yù)期的輸入并監(jiān)視異常結(jié)果來(lái)發(fā)現(xiàn)軟件漏洞的方法。模糊測(cè)試方法的核心思想是將自動(dòng)或半自動(dòng)化生成的隨機(jī)數(shù)據(jù)輸入到一個(gè)程序中,并檢測(cè)程序的異常,以發(fā)現(xiàn)可能的程序錯(cuò)誤。在模糊測(cè)試中用隨機(jī)的壞的數(shù)據(jù),即fuzz去攻擊程序并觀察出現(xiàn)問題的點(diǎn)。其好處在于這個(gè)數(shù)據(jù)是不符合邏輯的,因?yàn)槌绦虼嬖诘穆┒创蟛糠秩舭凑杖说恼_壿嬍菬o(wú)法觀察到的,因此模糊測(cè)試是一項(xiàng)十分有效的漏洞檢測(cè)技術(shù)。

    ContractFuzzer[50]是一個(gè)利用模糊測(cè)試進(jìn)行智能合約漏洞檢測(cè)的黑盒測(cè)試工具。它使用智能合約的二進(jìn)制接口生成交易,通過EVM執(zhí)行這些交易,通過分析執(zhí)行日志來(lái)檢測(cè)安全漏洞。圖6 展示的是ContractFuzzer 的檢測(cè)流程。其通過第0 和1 步在以太坊官網(wǎng)獲取開源的智能合約并通過對(duì)ABI 簽名分析生成一個(gè)ABI規(guī)范的模糊測(cè)試輸入,并在3、4、5步執(zhí)行模糊測(cè)試過程。

    圖6 ContractFuzzer架構(gòu)圖Fig.6 Overview of ContractFuzzer

    SoliAudit 是一款Liao 等人[51]提出的機(jī)器學(xué)習(xí)和模糊測(cè)試相結(jié)合的漏洞檢測(cè)工具,SoliAudit 動(dòng)態(tài)模糊器不僅能夠模糊函數(shù)參數(shù),還可以模糊區(qū)塊鏈環(huán)境的一些參數(shù),如gas和ether。同時(shí)利用操作碼特征進(jìn)行機(jī)器學(xué)習(xí)分類,漏洞識(shí)別達(dá)到90%,還可以自動(dòng)生成模糊測(cè)試合同以及適應(yīng)新的漏洞。

    GasFuzzer[52]是一個(gè)利用模糊測(cè)試方法,用于檢測(cè)交易中有較高gas消耗異常的工具。通過提出gasgreedy 和gas-leveling 兩種策略有效提高了漏洞檢測(cè)的效率。相比ContractFuzzer 漏洞檢測(cè)工具,效率提升了約28%。

    3.4 利用機(jī)器學(xué)習(xí)的審計(jì)方法

    機(jī)器學(xué)習(xí)作為當(dāng)前計(jì)算機(jī)研究方向的熱點(diǎn),由于在漏洞檢測(cè)中可以提供較高的自動(dòng)化程度和漏洞檢測(cè)效率,與漏洞檢測(cè)結(jié)合也成為了大量學(xué)者的研究熱點(diǎn)。

    傳統(tǒng)的智能合約代碼審計(jì)工具高度依賴專家定義的固定規(guī)則或模式來(lái)檢測(cè)智能合約的漏洞,但專家規(guī)則容易出錯(cuò),一些復(fù)雜的模式也不容易被覆蓋。同時(shí)基于規(guī)則開發(fā)的檢測(cè)工具可伸縮性有限[30],隨著智能合約數(shù)量的爆炸式增長(zhǎng),這種模式的適用性越來(lái)越低。機(jī)器學(xué)習(xí)在漏洞檢測(cè)中可以提供較高的自動(dòng)化程度和漏洞檢測(cè)效率。因此利用機(jī)器學(xué)習(xí)的方法逐漸進(jìn)入人們的視野。本節(jié)會(huì)介紹幾種利用機(jī)器學(xué)習(xí)進(jìn)行智能合約漏洞檢測(cè)的工具和方法。

    Xiong等人[53]提出了一種利用強(qiáng)化學(xué)習(xí)的智能合約漏洞檢測(cè)方法SmartVerif,該方法增強(qiáng)了漏洞檢測(cè)的自動(dòng)化程度,提高了檢測(cè)的準(zhǔn)確率。但是由于該方法需要為每一種協(xié)議訓(xùn)練一個(gè)獨(dú)立的模型,或是利用預(yù)訓(xùn)練和優(yōu)化的網(wǎng)絡(luò)來(lái)驗(yàn)證協(xié)議,存在驗(yàn)證時(shí)間增加以及精度降低的問題。因此如何訓(xùn)練通用的模型,增加檢測(cè)效率將是以后的研究重點(diǎn)。通過實(shí)驗(yàn)與傳統(tǒng)的漏洞檢測(cè)方法對(duì)比,證明該方法比傳統(tǒng)的漏洞檢測(cè)方法在效率和準(zhǔn)確率方面均有大幅度的提高,同時(shí)其自動(dòng)化程度也比傳統(tǒng)方法更加強(qiáng)大。

    Xing 等人[54]提出用Tensorflow 構(gòu)造卷積神經(jīng)網(wǎng)絡(luò)模型以漏洞合約的切片矩陣做輸入,用卷積神經(jīng)網(wǎng)絡(luò)算法分別對(duì)has_short_address、has_flows和is_greedy三個(gè)漏洞合約代碼片段訓(xùn)練,得到三個(gè)檢測(cè)合約漏洞的分類模型。利用Tensorflow 構(gòu)造卷積神經(jīng)網(wǎng)絡(luò)模型,只使用卷積層,然后導(dǎo)出的矩陣被提供給神經(jīng)網(wǎng)絡(luò),最后得到基于卷積神經(jīng)網(wǎng)絡(luò)的分類模型。利用卷積神經(jīng)網(wǎng)絡(luò)和隨機(jī)森林做對(duì)比實(shí)驗(yàn),但對(duì)比實(shí)驗(yàn)結(jié)果顯示隨機(jī)森林方法的效果更好。

    Momeni 等人[55]引入機(jī)器學(xué)習(xí)預(yù)測(cè)模型,采用兩個(gè)靜態(tài)代碼分析器標(biāo)記了1 000 個(gè)以太坊平臺(tái)使用的智能合約。其對(duì)漏洞的檢測(cè)平均準(zhǔn)確率達(dá)到95%。

    在使用機(jī)器學(xué)習(xí)的方法中,多將代碼轉(zhuǎn)換為控制流圖(control flow graph,CFG),利用CFG 進(jìn)行切片,對(duì)切片矩陣建立機(jī)器學(xué)習(xí)的預(yù)測(cè)模型,利用CFG建模的同時(shí)配合字符串匹配和模糊測(cè)試等代碼審計(jì)技術(shù)對(duì)漏洞進(jìn)行檢測(cè),以獲得較高的準(zhǔn)確率和效率。

    Qian[56-57]團(tuán)隊(duì)致力于將專家定義的安全模式與機(jī)器學(xué)習(xí)相結(jié)合。將源代碼的控制和數(shù)據(jù)流語(yǔ)義轉(zhuǎn)換為合約圖,同時(shí)設(shè)計(jì)一個(gè)消除階段來(lái)進(jìn)行圖的歸一化。提出了一種新的消息傳播網(wǎng)絡(luò)(temporal message propagation network,TMP)用于從規(guī)范化圖中提取圖特征,并將圖特征與設(shè)計(jì)的專家模式相結(jié)合,產(chǎn)生最終的檢測(cè)系統(tǒng)。利用深度學(xué)習(xí)網(wǎng)絡(luò)(deep neural networks,DNN)、無(wú)度圖卷積神經(jīng)網(wǎng)絡(luò)(degree-free graph convolutional neural network,DR-GCN)、雙向長(zhǎng)短期記憶(bi-directional long short-term memory,Bi-LSTM)以及長(zhǎng)短期記憶(long short-term memory,LSTM)進(jìn)行針對(duì)某一類型漏洞的精確檢測(cè)。此外還提出了智能合約的合約片段表示,用于捕捉基本的語(yǔ)義信息和控制流依賴。在檢測(cè)性能的表現(xiàn)方面,利用深度學(xué)習(xí)網(wǎng)絡(luò)的方法在針對(duì)重入攻擊、時(shí)間戳依賴以及無(wú)限循環(huán)的檢測(cè)準(zhǔn)確率分別達(dá)到了89.15%、89.02%和83.21%。其他學(xué)習(xí)模型也對(duì)重入攻擊有較好的檢測(cè)準(zhǔn)確性。

    Tann等人[58]也使用機(jī)器學(xué)習(xí)長(zhǎng)短期記憶(LSTM)對(duì)智能合約的漏洞進(jìn)行順序?qū)W習(xí)。該方法能夠快速檢測(cè)到智能合約的漏洞,并實(shí)現(xiàn)了99%的準(zhǔn)確率,保證了智能合約上鏈之前的安全性。

    3.5 利用其他方法的漏洞檢測(cè)技術(shù)

    除了現(xiàn)有的符號(hào)執(zhí)行和形式化驗(yàn)證等主流檢測(cè)方法外,還有許多利用其他方法和思想的漏洞檢測(cè)方式。

    在以太坊中,透明公開的智能合約占了總交易量和總交易金額的2/3 左右,但是有大約77.3%的智能合約是不透明非開源的。針對(duì)這種因非開源導(dǎo)致無(wú)法利用正面解析智能合約源代碼的問題,Zhou 等人[59]提出了Erays 方法,一種利用逆向工程的思想來(lái)進(jìn)行漏洞檢測(cè)的方法。Erays方法用于研究以太坊系統(tǒng)中不透明的智能合約,從十六進(jìn)制編碼的智能合約作為輸入,將十六進(jìn)制的字符串分解為EVM指令,從十六進(jìn)制字符串的第一個(gè)字節(jié)開始,每個(gè)字節(jié)被順序解碼成相應(yīng)的指令,而后從基本塊中恢復(fù)控制流圖,以此來(lái)進(jìn)行漏洞檢測(cè)工作。但是該方法也存在巨大的弊端,由于沒有源代碼,該項(xiàng)工作的代價(jià)昂貴,因此該工具也難以實(shí)現(xiàn)高自動(dòng)化,更適合于手動(dòng)分析并且高度依賴專家經(jīng)驗(yàn)。

    除逆向工程外也有在傳統(tǒng)漏洞檢測(cè)方法的思想上做出改進(jìn)的技術(shù)方法,韓松明等人[60]提出了Dc-Hunter。Dc-Hunter 檢測(cè)方案,通過計(jì)算待檢測(cè)合約與已知漏洞合約之間的相似性檢測(cè)智能合約,同時(shí)此方法還可以用于發(fā)現(xiàn)潛在的蜜罐合約。該方法無(wú)需源碼和預(yù)先定義的漏洞特征,通過應(yīng)用切片降低無(wú)關(guān)代碼影響,并使用圖嵌入算法來(lái)捕捉函數(shù)的結(jié)構(gòu)信息。

    在利用傳統(tǒng)特征代碼匹配的方法中,Slither[61]應(yīng)用廣泛使用的污點(diǎn)跟蹤技術(shù)和數(shù)據(jù)流來(lái)提取細(xì)化信息。它將智能合約轉(zhuǎn)化為中間表示SlithIR,利用這種中間表示與問題代碼做匹配進(jìn)行檢測(cè)。其性能在準(zhǔn)確率和時(shí)間效率方面取得了不錯(cuò)的表現(xiàn)。同時(shí)EASYFLOW[62]也是利用污點(diǎn)跟蹤來(lái)進(jìn)行漏洞檢測(cè)的工具,在對(duì)具體的漏洞合約檢測(cè)時(shí)同樣取得了不錯(cuò)的效果。同樣的,SmartCheck[63]也是一種利用中間表示來(lái)進(jìn)行漏洞檢測(cè)的方法,通過將智能合約源代碼轉(zhuǎn)換為一種基于XML 的中間表示,從而形成對(duì)漏洞的有效檢測(cè),但與ZEUS一樣,若語(yǔ)義定義不準(zhǔn)確,會(huì)大大降低其準(zhǔn)確率。傳統(tǒng)的靜態(tài)分析方法很容易應(yīng)用到其他區(qū)塊鏈平臺(tái)和不同語(yǔ)言編寫的智能合約中,但是其執(zhí)行效率和準(zhǔn)確率問題有待提高。

    3.6 各類檢測(cè)方法存在的問題

    本節(jié)通過使用檢測(cè)速度、適用范圍、自動(dòng)化程度以及準(zhǔn)確率四項(xiàng)評(píng)價(jià)指標(biāo)來(lái)說明上述各類檢測(cè)方法存在的問題及其局限性。

    形式化驗(yàn)證方法審計(jì)智能合約安全的工作,從應(yīng)用之初就存在大量的問題。形式化驗(yàn)證方法的局限性在于其應(yīng)用了大量的數(shù)學(xué)推導(dǎo)和證明過程,因此使得一些非專業(yè)人員很難參與此類方法的研究,導(dǎo)致基于該種方法的檢測(cè)工具發(fā)展緩慢。同時(shí)由于復(fù)雜的推理和驗(yàn)證過程,造成其適用范圍降低且自動(dòng)化程度較低。

    符號(hào)執(zhí)行方法需要對(duì)源碼轉(zhuǎn)換成操作碼(OPCODE)之后生成控制流圖,而后需要轉(zhuǎn)換為一種自定義的語(yǔ)義再進(jìn)行驗(yàn)證。這一個(gè)復(fù)雜的過程中涉及到大量的路徑遍歷和遍歷路徑的約束問題,路徑問題就很難避免出現(xiàn)路徑爆炸,因此是十分耗時(shí)的。若通過限制條件減少遍歷路徑,則會(huì)使得檢測(cè)準(zhǔn)確率降低。

    模糊測(cè)試方法與其他方法相比,可用工具最少,各類評(píng)價(jià)指標(biāo)上的表現(xiàn)都不盡人意。主要原因在于模糊測(cè)試需要精巧的設(shè)計(jì)測(cè)試過程,前文提到的模糊測(cè)試方法需要隨機(jī)種子進(jìn)行檢測(cè),但隨機(jī)種子很難覆蓋全部路徑,因此導(dǎo)致其檢測(cè)的準(zhǔn)確率不能達(dá)到理想的狀態(tài)。

    機(jī)器學(xué)習(xí)方法在檢測(cè)結(jié)果方面的效果表現(xiàn)最為出色,但是取得出色的結(jié)果依賴于大量開源智能合約的支持。但開源智能合約在整個(gè)已部署的智能合約中占比較低,會(huì)影響這類方法的性能。隨著開源智能合約的數(shù)量提升,機(jī)器學(xué)習(xí)方法的效率也會(huì)提升。同時(shí)可以注意到,機(jī)器學(xué)習(xí)方法在適用范圍方面表現(xiàn)較差。由于機(jī)器學(xué)習(xí)方法的學(xué)習(xí)過程要具體到某一個(gè)具體的函數(shù)或某一類漏洞的代碼段,需要對(duì)每種漏洞進(jìn)行建模,這就降低了其通用性。

    特征匹配方法作為一種靜態(tài)分析方法,其檢測(cè)速度快并能夠迅速響應(yīng)新漏洞的優(yōu)勢(shì)明顯。不同于傳統(tǒng)的漏洞檢測(cè),區(qū)塊鏈的漏洞檢測(cè)受限于開源智能合約的數(shù)量。但是以太坊中有超過一半的非開源智能合約,在無(wú)法獲得開源代碼的情況下,漏洞檢測(cè)人員可以獲得其操作碼但是對(duì)操作碼的分析代價(jià)十分巨大。因此該方法的適用范圍有限,同時(shí)由于智能合約函數(shù)和一些特征自身限制,導(dǎo)致特征匹配方法的漏報(bào)率較高。

    本文通過實(shí)驗(yàn)分析對(duì)比了各種漏洞檢測(cè)方法,通過實(shí)驗(yàn)數(shù)據(jù)更直觀地體現(xiàn)各種方法的優(yōu)缺點(diǎn)。從以太坊官網(wǎng)中選取450個(gè)智能合約樣本,通過實(shí)驗(yàn)對(duì)VaaS、Oyente、ContractFuzzer、DR-GCN、Slither 五種具有代表性的工具進(jìn)行測(cè)試,并針對(duì)可重入和可預(yù)測(cè)變量的依賴兩種類型漏洞進(jìn)行檢測(cè)。從準(zhǔn)確率、支持漏洞數(shù)量和平均檢測(cè)速度三方面對(duì)漏洞檢測(cè)工具的性能進(jìn)行評(píng)估。本文實(shí)驗(yàn)具體實(shí)驗(yàn)環(huán)境為操作系統(tǒng)Windows 10,CPU Intel?CoreTMi5-10500 CPU@3.10 GHz 3.10 GHz,內(nèi)存16 GB,Python版本為2.7.2和3.7.0,GPU 為NVIDIA GeForce RTX 2060 super。實(shí)驗(yàn)結(jié)果如表3所示。

    表3 各類漏洞檢測(cè)方法的評(píng)價(jià)表Table 3 Evaluation of various vulnerabilities detection methods

    從表3中的實(shí)驗(yàn)結(jié)果可以看出,在準(zhǔn)確率方面機(jī)器學(xué)習(xí)方法DR-GCN 表現(xiàn)出較高的精度,同時(shí)在檢測(cè)速度上具有絕對(duì)的優(yōu)勢(shì)。VaaS作為一個(gè)成熟的商業(yè)工具在支持的漏洞數(shù)量上表現(xiàn)出較強(qiáng)優(yōu)勢(shì)。但同時(shí)也可以看出形式化驗(yàn)證方法和模糊測(cè)試方法在檢測(cè)速度上的劣勢(shì)相當(dāng)明顯。機(jī)器學(xué)習(xí)方法雖然在準(zhǔn)確率和檢測(cè)速度方面擁有較強(qiáng)的優(yōu)勢(shì),但其難以建立起通用的模型,因此支持的漏洞數(shù)量較少。

    需要說明的是,由于形式化驗(yàn)證方法的復(fù)雜性以及缺少足夠的開源工具,因此選擇VaaS作為本次實(shí)驗(yàn)對(duì)象。VaaS是一款成熟的商用漏洞檢測(cè)工具,因此其支持檢測(cè)的漏洞數(shù)量和準(zhǔn)確率都有不俗的表現(xiàn)。

    4 未來(lái)研究方向與總結(jié)

    4.1 未來(lái)研究方向

    (1)符號(hào)執(zhí)行的路徑優(yōu)化

    符號(hào)執(zhí)行方法由于路徑選擇的需要將面臨路徑爆炸問題,如何縮短符號(hào)匹配的路徑、優(yōu)化最優(yōu)路徑、避免路徑爆炸問題是以后提高符號(hào)執(zhí)行工具效率的重點(diǎn)方向。

    在優(yōu)化符號(hào)執(zhí)行中,通過廣度優(yōu)先遍歷和深度優(yōu)先遍歷結(jié)合,提高符號(hào)執(zhí)行代碼覆蓋率。在對(duì)路徑進(jìn)行遍歷的同時(shí),對(duì)路徑的選擇進(jìn)行優(yōu)化,精簡(jiǎn)對(duì)程序無(wú)影響的路徑,以此縮短漏洞檢測(cè)的時(shí)間,提高執(zhí)行效率。

    (2)自動(dòng)化程度較低

    當(dāng)前多數(shù)工具的自動(dòng)化程度較低且高度依賴人工檢測(cè)和專家方法,部分檢測(cè)工具的自動(dòng)化程度不高,隨著智能合約數(shù)量的增長(zhǎng),自動(dòng)化程度低的弊端逐漸顯現(xiàn),在工作量提高時(shí)檢測(cè)效率低的問題亟需解決。因此如何提高自動(dòng)化程度將是未來(lái)研究的重點(diǎn)。

    利用機(jī)器學(xué)習(xí)的方法可以使自動(dòng)化程度顯著提高,在未來(lái)的研究中,應(yīng)致力于深度學(xué)習(xí)方法的研究,由此提高智能合約漏洞檢測(cè)的自動(dòng)化程度和整體效率。

    (3)漏洞類型覆蓋率低

    現(xiàn)階段智能合約的漏洞類型多,不同區(qū)塊鏈網(wǎng)絡(luò)編寫智能合約采用的語(yǔ)言也不盡相同,這也給漏洞檢測(cè)帶來(lái)了困難。本文調(diào)研的眾多漏洞檢測(cè)工具個(gè)體支持檢測(cè)的漏洞類型最多不超過10 種,但現(xiàn)有常見的漏洞類型多達(dá)20多種。因此下一步的重點(diǎn)是整合更多的漏洞檢測(cè)工具以提高漏洞覆蓋率,同時(shí)可以致力于使用機(jī)器學(xué)習(xí)方法建立通用的模型,使用機(jī)器學(xué)習(xí)方法能更好地提高漏洞覆蓋率,以此作為今后的研究重點(diǎn)。

    (4)漏洞檢測(cè)效率較低

    當(dāng)前的漏洞檢測(cè)準(zhǔn)確率較低且速度較慢,如何提高漏洞檢測(cè)效率,即如何解決在檢測(cè)過程中出現(xiàn)的假陽(yáng)性、真陰性問題以及如何提高漏洞檢測(cè)的速度是未來(lái)研究過程中需要探索的問題。當(dāng)前漏洞檢測(cè)效率低的原因是形式化驗(yàn)證等方法需要大量的數(shù)學(xué)推導(dǎo)同時(shí)依賴專家經(jīng)驗(yàn),此計(jì)算過程時(shí)間較長(zhǎng),因此優(yōu)化數(shù)學(xué)方法、優(yōu)化搜索路徑或使用深度學(xué)習(xí)方法都能有效提高檢測(cè)效率。

    (5)智能合約開源程度低

    當(dāng)前智能合約的開源程度較低,這就給漏洞檢測(cè)造成了困難。由于現(xiàn)階段非開源智能合約超過半數(shù),促進(jìn)智能合約的開源才能有效與機(jī)器學(xué)習(xí)結(jié)合,以此為研究者提供更好的代碼檢測(cè)環(huán)境。同時(shí)利用這些非開源的智能合約進(jìn)行逆向工程的漏洞檢測(cè),提高對(duì)非開源智能合約的利用,將是解決現(xiàn)有開源智能合約不足問題的方法。

    (6)機(jī)器學(xué)習(xí)方法構(gòu)建通用模型

    當(dāng)前機(jī)器學(xué)習(xí)方法雖然能夠?qū)崿F(xiàn)較高的學(xué)習(xí)效率與較好的學(xué)習(xí)結(jié)果,但是當(dāng)前智能合約數(shù)量的增長(zhǎng)速度快,漏洞類型也越來(lái)越多,而機(jī)器學(xué)習(xí)方法大多只針對(duì)某一具體漏洞或具體函數(shù)進(jìn)行學(xué)習(xí),對(duì)新漏洞的適應(yīng)能力不足,因此需要形成通用的漏洞檢測(cè)模型。

    構(gòu)建通用模型或適用性更廣的模型來(lái)同時(shí)檢測(cè)更多的漏洞將是使用機(jī)器學(xué)習(xí)方法未來(lái)研究的方向。通過構(gòu)建通用檢測(cè)模型,將會(huì)使機(jī)器學(xué)習(xí)方法更快速、方便地服務(wù)于漏洞檢測(cè),并做到對(duì)新型漏洞的快速響應(yīng)。

    (7)可移植性低

    當(dāng)前的智能合約編寫語(yǔ)言種類繁多,平臺(tái)較多,多數(shù)漏洞檢測(cè)軟件的跨平臺(tái)性差甚至完全不支持跨平臺(tái)。未來(lái)如何使成熟的漏洞檢測(cè)工具在支持更多智能合約語(yǔ)言的同時(shí)提高其跨平臺(tái)性,以及使漏洞檢測(cè)工具更好地發(fā)揮其檢測(cè)的效率將是研究的重點(diǎn)方向。整合不同漏洞檢測(cè)工具,發(fā)揮其不同的性能優(yōu)勢(shì),將會(huì)更好地提高檢測(cè)工具的檢測(cè)效率和可移植性。

    (8)缺乏統(tǒng)一的評(píng)價(jià)指標(biāo)和完善的漏洞合約庫(kù)

    現(xiàn)階段智能合約的漏洞檢測(cè)工具評(píng)價(jià)標(biāo)準(zhǔn)集中在速度、準(zhǔn)確率等指標(biāo),缺少統(tǒng)一的評(píng)價(jià)指標(biāo)。而且每種工具支持的漏洞數(shù)量、跨平臺(tái)性等不盡相同。因此需要整合漏洞檢測(cè)工具的評(píng)價(jià)標(biāo)準(zhǔn),綜合考慮可移植性、自動(dòng)化程度以及準(zhǔn)確率等指標(biāo)形成統(tǒng)一的評(píng)價(jià)標(biāo)準(zhǔn)。同時(shí),關(guān)于智能合約的測(cè)試沒有標(biāo)準(zhǔn)的測(cè)試集,因此造成各工具對(duì)比數(shù)據(jù)可信度大大降低。下一步研究應(yīng)建立完善的存在漏洞的智能合約庫(kù),為未來(lái)漏洞檢測(cè)的研究和攻擊行為的預(yù)防提供支持。

    本節(jié)總結(jié)了不同智能合約檢測(cè)方法的問題并對(duì)部分問題給出了改進(jìn)思路。未來(lái),總結(jié)各種方法的利弊,綜合各種方法的長(zhǎng)處,開發(fā)更加高效的漏洞檢測(cè)工具將是未來(lái)研究的重點(diǎn),以此形成更加安全的、可靠的智能合約環(huán)境。由于傳統(tǒng)漏洞檢測(cè)方法存在以上描述的各種問題,倡導(dǎo)在未來(lái)的研究中加大機(jī)器學(xué)習(xí)的研究力度。與此同時(shí),由于機(jī)器學(xué)習(xí)方法對(duì)數(shù)據(jù)高度依賴,在未來(lái)建立統(tǒng)一的檢測(cè)標(biāo)準(zhǔn)和相關(guān)數(shù)據(jù)集,有助于開發(fā)者更好地開發(fā)漏洞檢測(cè)工具。

    4.2 總結(jié)

    區(qū)塊鏈?zhǔn)怯?jì)算機(jī)技術(shù)發(fā)展的重要產(chǎn)物。密碼學(xué)、智能合約、對(duì)等網(wǎng)絡(luò)等的綜合應(yīng)用,使區(qū)塊鏈正在改變交通、醫(yī)療、金融等傳統(tǒng)行業(yè)。在快速的發(fā)展過程中,安全問題也大量涌現(xiàn)。TheDAO、Beauty Chain等事件的出現(xiàn)為安全人員敲響了警鐘,在利用區(qū)塊鏈去改變社會(huì)的同時(shí),也應(yīng)該對(duì)其安全性進(jìn)行審視,解決安全漏洞問題。本文簡(jiǎn)要介紹了重入漏洞、整數(shù)溢出漏洞、訪問控制漏洞等八種常見的漏洞類型,并對(duì)部分漏洞代碼進(jìn)行了重現(xiàn),讓研究者更直觀地了解漏洞。通過對(duì)形式化驗(yàn)證、符號(hào)執(zhí)行、機(jī)器學(xué)習(xí)等五類漏洞檢測(cè)方法的介紹,引入對(duì)應(yīng)類型漏洞檢測(cè)方法的工具,對(duì)這些方法和工具進(jìn)行了討論分析,并給出未來(lái)智能合約漏洞檢測(cè)研究的一些展望。

    猜你喜歡
    檢測(cè)工具以太攻擊者
    以太極為旗,開啟新時(shí)代“黃河大合唱”
    少林與太極(2023年7期)2023-08-25 05:27:52
    基于微分博弈的追逃問題最優(yōu)策略設(shè)計(jì)
    車易鏈:做汽車業(yè)的“以太坊”
    汽車觀察(2018年9期)2018-10-23 05:46:24
    正面迎接批判
    愛你(2018年16期)2018-06-21 03:28:44
    高溫封隔器膠筒試驗(yàn)檢測(cè)工具的研究
    化工管理(2017年16期)2017-06-23 13:49:36
    德國(guó)Rosen公司發(fā)布新型漏磁檢測(cè)工具
    有限次重復(fù)博弈下的網(wǎng)絡(luò)攻擊行為研究
    百通推出入門級(jí)快速工業(yè)以太網(wǎng)絡(luò)交換器系列
    以太互聯(lián) 高效便捷 經(jīng)濟(jì)、可靠、易用的小型可編程控制器
    中國(guó)移動(dòng)設(shè)計(jì)院自主研發(fā)安全檢測(cè)工具
    国产乱来视频区| a级毛片黄视频| 久久国内精品自在自线图片| 少妇 在线观看| 人妻系列 视频| 亚洲少妇的诱惑av| 老女人水多毛片| 久久久久久久久久成人| 高清黄色对白视频在线免费看| 日本av免费视频播放| 少妇人妻久久综合中文| xxxhd国产人妻xxx| 欧美日韩av久久| 一个人免费看片子| 看十八女毛片水多多多| 视频在线观看一区二区三区| 日本vs欧美在线观看视频| 成人漫画全彩无遮挡| 美女国产高潮福利片在线看| videos熟女内射| 久久av网站| 欧美xxⅹ黑人| 色吧在线观看| 观看美女的网站| 丰满乱子伦码专区| 亚洲国产色片| 久久久国产欧美日韩av| 久久精品国产亚洲av涩爱| 日本黄大片高清| 亚洲国产精品专区欧美| 99热网站在线观看| freevideosex欧美| 国产精品女同一区二区软件| 欧美日韩在线观看h| 不卡视频在线观看欧美| 一区二区三区乱码不卡18| 制服人妻中文乱码| 夫妻午夜视频| 有码 亚洲区| 97超视频在线观看视频| 亚洲国产色片| 免费久久久久久久精品成人欧美视频 | 综合色丁香网| 国产精品国产三级国产av玫瑰| 一级毛片黄色毛片免费观看视频| 亚洲在久久综合| h视频一区二区三区| 大又大粗又爽又黄少妇毛片口| 嘟嘟电影网在线观看| av黄色大香蕉| 久久精品国产a三级三级三级| 中文字幕免费在线视频6| 日本黄色片子视频| 我要看黄色一级片免费的| 日本色播在线视频| 十八禁网站网址无遮挡| 国产高清三级在线| a级毛片黄视频| 妹子高潮喷水视频| 婷婷成人精品国产| 美女国产高潮福利片在线看| 色哟哟·www| 又大又黄又爽视频免费| 又大又黄又爽视频免费| 成人国语在线视频| 日韩大片免费观看网站| 欧美日韩视频精品一区| 国产免费一级a男人的天堂| 亚洲精品亚洲一区二区| 国产永久视频网站| 国产精品 国内视频| 十八禁网站网址无遮挡| 免费大片黄手机在线观看| 国产欧美日韩一区二区三区在线 | 久久女婷五月综合色啪小说| 亚洲国产毛片av蜜桃av| 极品少妇高潮喷水抽搐| 亚洲国产欧美日韩在线播放| 十八禁高潮呻吟视频| 亚洲av不卡在线观看| 色婷婷久久久亚洲欧美| 中文乱码字字幕精品一区二区三区| 最近2019中文字幕mv第一页| av在线app专区| 亚洲av不卡在线观看| 日韩电影二区| 欧美精品一区二区大全| 97超视频在线观看视频| 一本久久精品| 成人午夜精彩视频在线观看| 日本-黄色视频高清免费观看| 亚洲国产av新网站| 亚洲,一卡二卡三卡| 欧美xxxx性猛交bbbb| 一级爰片在线观看| 欧美日韩一区二区视频在线观看视频在线| 国产一区二区在线观看av| 久久97久久精品| 韩国av在线不卡| 国产亚洲精品第一综合不卡 | 一个人免费看片子| 精品国产一区二区三区久久久樱花| 亚洲色图 男人天堂 中文字幕 | 国产男人的电影天堂91| 我要看黄色一级片免费的| 精品一区二区三卡| 久久免费观看电影| 久久午夜综合久久蜜桃| 麻豆乱淫一区二区| 女性生殖器流出的白浆| 女人精品久久久久毛片| 人妻人人澡人人爽人人| 91成人精品电影| 欧美最新免费一区二区三区| 欧美日韩精品成人综合77777| 亚洲情色 制服丝袜| 久久人人爽人人片av| 成年女人在线观看亚洲视频| 婷婷色麻豆天堂久久| 欧美少妇被猛烈插入视频| 亚洲国产色片| 99久久精品一区二区三区| 久久久久久久久久人人人人人人| 亚洲怡红院男人天堂| 一区二区三区四区激情视频| 久久韩国三级中文字幕| 免费大片18禁| 亚洲经典国产精华液单| 久久久精品免费免费高清| 亚洲三级黄色毛片| 午夜免费观看性视频| 国产伦理片在线播放av一区| 人妻 亚洲 视频| 中国美白少妇内射xxxbb| 大香蕉久久网| 最近中文字幕2019免费版| 一级,二级,三级黄色视频| 午夜福利在线观看免费完整高清在| 午夜福利在线观看免费完整高清在| 又黄又爽又刺激的免费视频.| 中国三级夫妇交换| 极品人妻少妇av视频| 亚洲怡红院男人天堂| 亚洲综合色惰| 一本—道久久a久久精品蜜桃钙片| 97超视频在线观看视频| 91久久精品国产一区二区三区| 色视频在线一区二区三区| 久久午夜综合久久蜜桃| 嫩草影院入口| 国产 精品1| 免费黄频网站在线观看国产| 免费看不卡的av| av.在线天堂| 人人妻人人澡人人看| 激情五月婷婷亚洲| 男女国产视频网站| 亚洲综合精品二区| 免费日韩欧美在线观看| 丝袜脚勾引网站| 啦啦啦啦在线视频资源| 久久精品国产亚洲av天美| 男女无遮挡免费网站观看| 女人久久www免费人成看片| 91午夜精品亚洲一区二区三区| 日本vs欧美在线观看视频| 国产精品女同一区二区软件| 美女cb高潮喷水在线观看| 免费看av在线观看网站| 久久毛片免费看一区二区三区| 大香蕉久久网| 午夜日本视频在线| 一区二区av电影网| av福利片在线| 精品久久久久久久久亚洲| 男女边摸边吃奶| 伊人亚洲综合成人网| 夫妻性生交免费视频一级片| 中文字幕最新亚洲高清| 国产成人精品婷婷| 毛片一级片免费看久久久久| 欧美3d第一页| 亚洲成人一二三区av| 丰满迷人的少妇在线观看| 午夜福利影视在线免费观看| 国产欧美日韩一区二区三区在线 | 亚洲国产精品一区二区三区在线| 国产欧美日韩综合在线一区二区| 国产视频首页在线观看| 一二三四中文在线观看免费高清| 黄色视频在线播放观看不卡| 国产深夜福利视频在线观看| 人妻一区二区av| 人体艺术视频欧美日本| 国产黄频视频在线观看| av又黄又爽大尺度在线免费看| √禁漫天堂资源中文www| 好男人视频免费观看在线| 最近的中文字幕免费完整| 蜜桃国产av成人99| 日韩一区二区视频免费看| 岛国毛片在线播放| 女性生殖器流出的白浆| 婷婷色麻豆天堂久久| 最新中文字幕久久久久| 精品久久蜜臀av无| 成人漫画全彩无遮挡| 亚洲综合精品二区| 日本黄色片子视频| 青春草国产在线视频| 狂野欧美激情性bbbbbb| 另类精品久久| 国产精品麻豆人妻色哟哟久久| av黄色大香蕉| 国产成人午夜福利电影在线观看| 国产熟女欧美一区二区| 国产熟女午夜一区二区三区 | 免费观看无遮挡的男女| 国产精品国产三级国产专区5o| 亚洲国产精品国产精品| 精品99又大又爽又粗少妇毛片| 国产av一区二区精品久久| 丝袜喷水一区| 午夜免费观看性视频| 欧美最新免费一区二区三区| 日韩伦理黄色片| 国产高清国产精品国产三级| 欧美xxxx性猛交bbbb| 天堂8中文在线网| 亚洲精品日本国产第一区| 妹子高潮喷水视频| 午夜影院在线不卡| 久久久久国产网址| 人妻夜夜爽99麻豆av| 国产精品国产三级专区第一集| 少妇被粗大猛烈的视频| 亚洲av.av天堂| 久久青草综合色| 最近的中文字幕免费完整| 亚洲精品456在线播放app| 亚洲av不卡在线观看| 亚洲丝袜综合中文字幕| 亚洲精华国产精华液的使用体验| 全区人妻精品视频| 3wmmmm亚洲av在线观看| 日本爱情动作片www.在线观看| 三上悠亚av全集在线观看| 欧美人与善性xxx| 男人操女人黄网站| 啦啦啦中文免费视频观看日本| 久久99热6这里只有精品| 国产不卡av网站在线观看| 亚洲精品亚洲一区二区| 街头女战士在线观看网站| 国产极品粉嫩免费观看在线 | 高清午夜精品一区二区三区| 在线看a的网站| 国产av精品麻豆| 69精品国产乱码久久久| 一本一本综合久久| 91精品三级在线观看| 亚洲av成人精品一二三区| 国产老妇伦熟女老妇高清| 日韩一区二区视频免费看| 久久99精品国语久久久| 在线观看免费高清a一片| 国产精品麻豆人妻色哟哟久久| 日韩av在线免费看完整版不卡| 黄色怎么调成土黄色| 久久久a久久爽久久v久久| 最新的欧美精品一区二区| 久久 成人 亚洲| 国产精品麻豆人妻色哟哟久久| 视频在线观看一区二区三区| 18禁在线无遮挡免费观看视频| 97在线人人人人妻| 国产精品.久久久| 欧美xxxx性猛交bbbb| 亚洲国产色片| 麻豆乱淫一区二区| 一个人免费看片子| 国产欧美亚洲国产| 国产精品无大码| 黑人猛操日本美女一级片| 高清欧美精品videossex| 天堂俺去俺来也www色官网| 日韩电影二区| 亚洲av日韩在线播放| 亚洲一级一片aⅴ在线观看| 亚洲精品久久午夜乱码| 在线观看www视频免费| 97超碰精品成人国产| 国产精品国产三级专区第一集| 丰满迷人的少妇在线观看| 一边摸一边做爽爽视频免费| 亚洲国产毛片av蜜桃av| 日本色播在线视频| 2021少妇久久久久久久久久久| 国产精品人妻久久久久久| 日本wwww免费看| 国产精品一区www在线观看| 欧美日本中文国产一区发布| 国产精品欧美亚洲77777| av电影中文网址| 熟妇人妻不卡中文字幕| 午夜日本视频在线| 一本大道久久a久久精品| 丁香六月天网| 美女脱内裤让男人舔精品视频| 国产免费福利视频在线观看| 国产精品成人在线| 久久狼人影院| 国产高清不卡午夜福利| freevideosex欧美| 制服诱惑二区| 国产国拍精品亚洲av在线观看| 黄色毛片三级朝国网站| 国产精品久久久久久久久免| 成年女人在线观看亚洲视频| 黑丝袜美女国产一区| 少妇丰满av| 九色成人免费人妻av| 午夜福利视频精品| 国产精品久久久久久精品古装| 丁香六月天网| 欧美最新免费一区二区三区| 亚洲天堂av无毛| 午夜久久久在线观看| 2021少妇久久久久久久久久久| 亚洲国产毛片av蜜桃av| 男女免费视频国产| 18禁裸乳无遮挡动漫免费视频| 国产亚洲精品久久久com| 涩涩av久久男人的天堂| 亚洲久久久国产精品| 国产不卡av网站在线观看| 人人妻人人澡人人爽人人夜夜| av在线观看视频网站免费| 丰满乱子伦码专区| 欧美精品亚洲一区二区| 久久精品熟女亚洲av麻豆精品| 伊人亚洲综合成人网| 国产精品国产三级国产av玫瑰| av电影中文网址| 一级爰片在线观看| 男女免费视频国产| 精品久久久久久久久av| av电影中文网址| 欧美精品高潮呻吟av久久| 日本黄大片高清| 免费久久久久久久精品成人欧美视频 | 久久久久久久精品精品| 建设人人有责人人尽责人人享有的| 美女中出高潮动态图| 日本免费在线观看一区| 日本vs欧美在线观看视频| 国产高清有码在线观看视频| 欧美日韩亚洲高清精品| 女性生殖器流出的白浆| 日本vs欧美在线观看视频| 一区二区三区四区激情视频| 纯流量卡能插随身wifi吗| 国产精品一区二区在线观看99| 国产国语露脸激情在线看| 美女xxoo啪啪120秒动态图| a级毛片黄视频| 久久毛片免费看一区二区三区| 日韩av在线免费看完整版不卡| 人人澡人人妻人| 亚洲av不卡在线观看| 欧美最新免费一区二区三区| 久久ye,这里只有精品| 欧美精品高潮呻吟av久久| 少妇被粗大猛烈的视频| 国产69精品久久久久777片| 高清黄色对白视频在线免费看| 嫩草影院入口| a级片在线免费高清观看视频| 最近最新中文字幕免费大全7| 嘟嘟电影网在线观看| 中文天堂在线官网| 一二三四中文在线观看免费高清| 国产精品不卡视频一区二区| 黑人猛操日本美女一级片| 国产高清三级在线| 亚洲国产精品专区欧美| 婷婷色av中文字幕| 日韩一本色道免费dvd| 能在线免费看毛片的网站| 亚洲久久久国产精品| 欧美少妇被猛烈插入视频| 国产亚洲精品第一综合不卡 | 国产午夜精品久久久久久一区二区三区| 中文乱码字字幕精品一区二区三区| 国产男女超爽视频在线观看| 天美传媒精品一区二区| 蜜桃在线观看..| 高清av免费在线| 91成人精品电影| 18禁裸乳无遮挡动漫免费视频| 精品久久国产蜜桃| 精品少妇内射三级| 国产成人aa在线观看| 日本黄大片高清| a级毛片黄视频| 寂寞人妻少妇视频99o| 少妇猛男粗大的猛烈进出视频| 日韩在线高清观看一区二区三区| 在线观看国产h片| a级片在线免费高清观看视频| 久久久久人妻精品一区果冻| 欧美激情 高清一区二区三区| 一级二级三级毛片免费看| 色5月婷婷丁香| 天堂8中文在线网| 亚洲在久久综合| 日本av手机在线免费观看| 免费看光身美女| 国产一区二区在线观看av| 国产深夜福利视频在线观看| 桃花免费在线播放| 日本欧美视频一区| 多毛熟女@视频| 尾随美女入室| 国产高清有码在线观看视频| 亚洲经典国产精华液单| 国产精品久久久久成人av| 日本黄大片高清| 亚洲国产精品成人久久小说| 亚洲精品自拍成人| 妹子高潮喷水视频| 免费播放大片免费观看视频在线观看| 亚洲少妇的诱惑av| 九色成人免费人妻av| 两个人免费观看高清视频| 狂野欧美激情性xxxx在线观看| 国产伦理片在线播放av一区| 卡戴珊不雅视频在线播放| 久久女婷五月综合色啪小说| 久久国内精品自在自线图片| 伊人亚洲综合成人网| 午夜激情福利司机影院| 在线观看免费日韩欧美大片 | 视频在线观看一区二区三区| 蜜桃国产av成人99| 日本wwww免费看| 国产亚洲精品第一综合不卡 | 国产高清不卡午夜福利| 国产综合精华液| 欧美激情极品国产一区二区三区 | 久久精品国产鲁丝片午夜精品| 亚洲av.av天堂| 久久国产精品男人的天堂亚洲 | 水蜜桃什么品种好| 超色免费av| 久久精品久久久久久久性| 国产精品无大码| 狠狠精品人妻久久久久久综合| 亚洲美女视频黄频| 国产高清三级在线| 国产精品一区二区在线不卡| 免费大片黄手机在线观看| 丰满少妇做爰视频| 纵有疾风起免费观看全集完整版| 美女国产高潮福利片在线看| 18在线观看网站| 如何舔出高潮| 亚洲伊人久久精品综合| 青春草视频在线免费观看| 亚洲欧洲精品一区二区精品久久久 | 我的老师免费观看完整版| 久久精品夜色国产| 中文欧美无线码| 91精品国产九色| 少妇人妻久久综合中文| 99久久人妻综合| 亚洲国产av影院在线观看| 久热久热在线精品观看| 另类精品久久| 亚洲欧美精品自产自拍| 亚洲欧美日韩卡通动漫| 热99久久久久精品小说推荐| 日韩制服骚丝袜av| 亚洲av不卡在线观看| 国产午夜精品久久久久久一区二区三区| 日本黄色片子视频| 国产黄频视频在线观看| 热re99久久精品国产66热6| 婷婷色麻豆天堂久久| 美女cb高潮喷水在线观看| 欧美激情国产日韩精品一区| 在线观看国产h片| 久久久久国产精品人妻一区二区| 熟妇人妻不卡中文字幕| 在线观看免费日韩欧美大片 | 日韩成人伦理影院| 久久久久久伊人网av| 18禁动态无遮挡网站| 欧美精品一区二区免费开放| 国产精品99久久99久久久不卡 | 色婷婷av一区二区三区视频| 亚洲图色成人| 国产熟女午夜一区二区三区 | 中文欧美无线码| 少妇熟女欧美另类| 中文天堂在线官网| 日韩亚洲欧美综合| 国产熟女欧美一区二区| 精品国产国语对白av| 久久精品人人爽人人爽视色| 91精品伊人久久大香线蕉| 亚洲在久久综合| 91久久精品国产一区二区三区| 亚洲精品美女久久av网站| 久久午夜福利片| 永久免费av网站大全| 三级国产精品片| 国产成人91sexporn| 亚洲三级黄色毛片| 校园人妻丝袜中文字幕| 免费观看av网站的网址| 99热全是精品| 日韩不卡一区二区三区视频在线| 一区二区日韩欧美中文字幕 | 国产免费一区二区三区四区乱码| 亚洲人成77777在线视频| 亚洲婷婷狠狠爱综合网| 三级国产精品欧美在线观看| 久久精品国产亚洲网站| 国产一区二区在线观看av| 国产淫语在线视频| 久久国产精品男人的天堂亚洲 | 国精品久久久久久国模美| 久久鲁丝午夜福利片| 老司机影院成人| 日韩av在线免费看完整版不卡| 婷婷成人精品国产| 爱豆传媒免费全集在线观看| 日日摸夜夜添夜夜添av毛片| 精品国产国语对白av| 久久久亚洲精品成人影院| 纯流量卡能插随身wifi吗| 国产亚洲欧美精品永久| 亚洲在久久综合| 我要看黄色一级片免费的| 国产探花极品一区二区| 午夜福利影视在线免费观看| 国产午夜精品久久久久久一区二区三区| 如何舔出高潮| 又粗又硬又长又爽又黄的视频| 久久av网站| 国模一区二区三区四区视频| 久久99精品国语久久久| 乱码一卡2卡4卡精品| 一级a做视频免费观看| 欧美日本中文国产一区发布| 五月天丁香电影| 欧美bdsm另类| 久久这里有精品视频免费| 午夜免费鲁丝| 亚洲欧美一区二区三区黑人 | 久久精品夜色国产| 国产精品秋霞免费鲁丝片| 男女无遮挡免费网站观看| av在线播放精品| 久久热精品热| 亚洲精品乱码久久久v下载方式| √禁漫天堂资源中文www| 女人久久www免费人成看片| 国产成人aa在线观看| 亚洲美女视频黄频| 另类亚洲欧美激情| 插阴视频在线观看视频| 亚洲精品久久久久久婷婷小说| 精品亚洲乱码少妇综合久久| 亚洲精品国产色婷婷电影| 在线天堂最新版资源| 啦啦啦啦在线视频资源| 免费不卡的大黄色大毛片视频在线观看| 亚洲在久久综合| 色婷婷久久久亚洲欧美| 少妇被粗大猛烈的视频| 少妇的逼水好多| 欧美日韩国产mv在线观看视频| 亚洲精品,欧美精品| 国产色爽女视频免费观看| 欧美日韩视频高清一区二区三区二| 国产成人精品久久久久久| 晚上一个人看的免费电影| 成人国语在线视频| 成年人免费黄色播放视频| 狂野欧美激情性bbbbbb| 九九久久精品国产亚洲av麻豆| 亚洲精品一二三| 中文字幕精品免费在线观看视频 | 九草在线视频观看| 黄色视频在线播放观看不卡| 菩萨蛮人人尽说江南好唐韦庄| 少妇被粗大的猛进出69影院 | 亚洲五月色婷婷综合| 亚洲一级一片aⅴ在线观看| 看免费成人av毛片| 亚洲精品第二区| 国产欧美另类精品又又久久亚洲欧美| 精品人妻熟女毛片av久久网站| 熟女人妻精品中文字幕| 久久久久久伊人网av| 精品人妻熟女毛片av久久网站| 九色亚洲精品在线播放| 中国三级夫妇交换| 国产精品一区二区三区四区免费观看| 亚洲精品成人av观看孕妇| 一本—道久久a久久精品蜜桃钙片| 国产在线视频一区二区| 少妇人妻精品综合一区二区|