日本在线www-日本在线播放一区-日本在线不卡免费视频一区-日本在线不卡视频-成人影院久久久久久影院-成人影院一区二区三区

ABB
關(guān)注中國(guó)自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
CAIAC 2025
2025工業(yè)安全大會(huì)
OICT公益講堂
當(dāng)前位置:首頁 >> 資訊 >> 行業(yè)資訊

資訊頻道

區(qū)塊鏈智能合約安全威脅實(shí)時(shí)防御框架法
  • 點(diǎn)擊數(shù):2755     發(fā)布時(shí)間:2020-06-16 09:40:00
  • 分享到:
區(qū)塊鏈?zhǔn)钱?dāng)前炙手可熱的技術(shù),其不可篡改、不可偽造、不可抵賴、可追溯、無需第三方可信機(jī)構(gòu)、支持智能合約等特性,為包括醫(yī)療、物流、電商、金融、教育等行業(yè)賦能。近年來,區(qū)塊鏈安全尤其是區(qū)塊鏈智能合約安全事件層出不窮。因此,在線監(jiān)測(cè)區(qū)塊鏈安全威脅,并對(duì)安全威脅做出處置,具有重大研究意義和實(shí)用價(jià)值。深入研究智能合約運(yùn)行時(shí)信息獲取、智能合約虛擬機(jī)插樁等技術(shù),提出了一種針對(duì)區(qū)塊鏈安全威脅的實(shí)時(shí)防御框架,并利用該框架,以重入攻擊、整數(shù)溢出攻擊為威脅示例開展防御邏輯分析,以期能對(duì)該框架的應(yīng)用提供思路。
關(guān)鍵詞:

區(qū)塊鏈?zhǔn)钱?dāng)前炙手可熱的技術(shù),其不可篡改、不可偽造、不可抵賴、可追溯、無需第三方可信機(jī)構(gòu)、支持智能合約等特性,為包括醫(yī)療、物流、電商、金融、教育等行業(yè)賦能。近年來,區(qū)塊鏈安全尤其是區(qū)塊鏈智能合約安全事件層出不窮。因此,在線監(jiān)測(cè)區(qū)塊鏈安全威脅,并對(duì)安全威脅做出處置,具有重大研究意義和實(shí)用價(jià)值。深入研究智能合約運(yùn)行時(shí)信息獲取、智能合約虛擬機(jī)插樁等技術(shù),提出了一種針對(duì)區(qū)塊鏈安全威脅的實(shí)時(shí)防御框架,并利用該框架,以重入攻擊、整數(shù)溢出攻擊為威脅示例開展防御邏輯分析,以期能對(duì)該框架的應(yīng)用提供思路。

區(qū)塊鏈?zhǔn)钱?dāng)前炙手可熱的技術(shù),其不可篡改、不可偽造、不可抵賴、可追溯、無需第三方可信機(jī)構(gòu)、支持智能合約等特性,為包括醫(yī)療、物流、電商、金融、教育等行業(yè)賦能。然而,作為各種分布式應(yīng)用(Decentralized Application,DApp)的底層技術(shù),區(qū)塊鏈本身的安全性將從根本上決定上層分布式應(yīng)用的安全性、可用性以及性能。

區(qū)塊鏈部署于互聯(lián)網(wǎng)中,而互聯(lián)網(wǎng)存在著各種網(wǎng)絡(luò)威脅。尤其是區(qū)塊鏈及其上的分布式應(yīng)用涉及到大量的金錢,區(qū)塊鏈成為黑客的一個(gè)重要攻擊目標(biāo)。近年來,區(qū)塊鏈安全事件層出不窮,從底層P2P網(wǎng)絡(luò)、中間層虛擬機(jī)到上層的智能合約,都成為黑客們攻擊的對(duì)象。下面列舉一些區(qū)塊鏈威脅的例子。

Marcus等人發(fā)現(xiàn)以太坊P2P網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)現(xiàn)機(jī)制的缺陷,利用該缺陷實(shí)現(xiàn)了日蝕攻擊,導(dǎo)致被攻擊節(jié)點(diǎn)被隔絕等。由于以太坊虛擬機(jī)沒有校驗(yàn)地址的位數(shù),并自動(dòng)補(bǔ)齊缺失的位,將會(huì)導(dǎo)致短地址攻擊,黑客可以利用該虛擬機(jī)漏洞盜取各種代幣。

智能合約的漏洞更是層出不窮,其中最著名的是2016年發(fā)生的TheDAO合約重入漏洞攻擊。TheDAO合約通過眾籌,在合約中存儲(chǔ)了價(jià)值數(shù)千萬美元的以太幣。黑客利用合約的重入漏洞,盜取了高達(dá)6千萬美元的以太幣,并導(dǎo)致以太坊分叉為了ETH和ETC。2018年以來,多款代幣合約被爆發(fā)現(xiàn)整數(shù)溢出漏洞,黑客利用這些漏洞發(fā)動(dòng)了整數(shù)溢出攻擊,導(dǎo)致了大量代幣被盜。

區(qū)塊鏈的安全威脅已經(jīng)成為制約區(qū)塊鏈未來發(fā)展的關(guān)鍵問題,因此如何在安全威脅進(jìn)行在線檢測(cè),并實(shí)時(shí)對(duì)安全威脅做出處置,具有重大的研究意義和實(shí)用價(jià)值。

本文以智能合約運(yùn)行時(shí)信息獲取、智能合約虛擬機(jī)插樁、安全威脅檢測(cè)技術(shù)為基礎(chǔ),提出了一種區(qū)塊鏈安全威脅實(shí)時(shí)防御框架,并基于重入攻擊、整數(shù)溢出攻擊討論該框架的應(yīng)用邏輯,為該框架在區(qū)塊鏈安全威脅防護(hù)研究和實(shí)踐提供參考思路。

1 區(qū)塊鏈安全威脅分析

1.1 區(qū)塊鏈層次結(jié)構(gòu)

以以太坊(Ethereum)為例,區(qū)塊鏈結(jié)構(gòu)主要包含應(yīng)用層、數(shù)據(jù)層、共識(shí)層以及網(wǎng)絡(luò)層4層,如圖1所示。

網(wǎng)絡(luò)層,區(qū)塊鏈采用對(duì)等(Peer-to-Peer)網(wǎng)絡(luò)技術(shù)組織各個(gè)節(jié)點(diǎn),主要包括節(jié)點(diǎn)發(fā)現(xiàn)、傳播機(jī)制和驗(yàn)證機(jī)制。

共識(shí)層,主要包含共識(shí)機(jī)制和激勵(lì)機(jī)制。共識(shí)機(jī)制是用來維護(hù)區(qū)塊鏈中對(duì)等節(jié)點(diǎn)間達(dá)成一致的策略和方法。典型的共識(shí)機(jī)制包括工作量證明(Proof of Work,PoW)、權(quán)益證明(Proof of Stake,PoS)和股份授權(quán)證明(Delegate Proof ofStake,DPoS)等;激勵(lì)機(jī)制主要包括發(fā)型機(jī)制和分配機(jī)制,通過引入獎(jiǎng)勵(lì)和懲罰來引導(dǎo)區(qū)塊鏈節(jié)點(diǎn)遵循規(guī)則,實(shí)現(xiàn)區(qū)塊鏈系統(tǒng)的良性運(yùn)行。

數(shù)據(jù)層,主要包括數(shù)據(jù)區(qū)塊、交易以及事件,包含區(qū)塊鏈中的各種數(shù)據(jù)結(jié)構(gòu)。

應(yīng)用層,包括賬戶、智能合約以及運(yùn)行智能合約的虛擬機(jī)(Environment VirtualMachine,EVM)。智能合約的出現(xiàn),為區(qū)塊鏈提供了可編程特性。通過編程的方式設(shè)計(jì)智能合約,預(yù)先定義特定行為和觸發(fā)的狀態(tài),從而實(shí)現(xiàn)在沒有第三方的情況下,智能合約達(dá)到觸發(fā)條件就自動(dòng)執(zhí)行。

1.2 基于區(qū)塊鏈層次結(jié)構(gòu)的威脅分析

根據(jù)區(qū)塊鏈層次結(jié)構(gòu),區(qū)塊鏈安全威脅主要分為網(wǎng)絡(luò)層安全威脅、共識(shí)層安全威脅、數(shù)據(jù)層安全威脅以及應(yīng)用層安全威脅。

網(wǎng)絡(luò)層安全威脅。因?yàn)閰^(qū)塊鏈網(wǎng)絡(luò)結(jié)構(gòu)為對(duì)等網(wǎng)絡(luò),因此P2P網(wǎng)絡(luò)面臨的安全威脅也會(huì)對(duì)區(qū)塊鏈網(wǎng)絡(luò)層造成安全威脅。這些攻擊包括拒絕服務(wù)攻擊、日蝕攻擊等。此外,RPC API漏洞暴露可能導(dǎo)致賬戶劫持攻擊。

共識(shí)層算法安全威脅。它主要對(duì)共識(shí)機(jī)制發(fā)起攻擊,控制區(qū)塊鏈按照對(duì)攻擊者有利的方向發(fā)展。目前主要的共識(shí)層攻擊有51%攻擊、自私挖礦攻擊、女巫攻擊等。

數(shù)據(jù)層安全威脅。由于區(qū)塊鏈的公開、不可篡改、分布等特性,容易導(dǎo)致數(shù)據(jù)層遭受隱私泄露、惡意信息傳播等攻擊。

應(yīng)用層安全威脅。它包括針對(duì)虛擬機(jī)、智能合約及其他攻擊。虛擬機(jī)沒有校驗(yàn)地址的位數(shù),將會(huì)導(dǎo)致短地址攻擊。智能合約的攻擊包括重入攻擊、整數(shù)溢出攻擊等。其他攻擊則包括面向應(yīng)用提供接口的攻擊、Parity多重簽名錢包攻擊等。

應(yīng)用層安全威脅種類多樣,且已經(jīng)暴露出來的針對(duì)應(yīng)用層的安全威脅直接造成了巨大的經(jīng)濟(jì)損失,因此本文聚焦于對(duì)應(yīng)用層攻擊的防御框架的研究。

2 區(qū)塊鏈信息獲取方法研究

區(qū)塊鏈信息是進(jìn)行實(shí)時(shí)防御的核心要素,目前在區(qū)塊鏈信息獲取領(lǐng)域已有大量研究。這些研究主要可以將獲取方法分為4類:下載與區(qū)塊文件解析、調(diào)用Web3 API、爬取區(qū)塊鏈瀏覽器以及插樁區(qū)塊鏈節(jié)點(diǎn)。下面將對(duì)這4種方法進(jìn)一步展開描述。

2.1 下載與區(qū)塊文件解析

區(qū)塊鏈節(jié)點(diǎn)在同步過程中會(huì)從其他節(jié)點(diǎn)下載區(qū)塊文件,所以可以通過解析區(qū)塊文件獲得區(qū)塊鏈信息。Kiffer等人采用這種方法獲取數(shù)據(jù),用以研究以太坊的硬分叉。MAIAN是一款智能合約安全漏洞自動(dòng)化發(fā)掘工具,該工作也通過此方法獲得智能合約字節(jié)碼用以漏洞發(fā)掘。

2.2 調(diào)用Web3 API

以太坊提供了一套API,用戶可以通過調(diào)用這些API獲取區(qū)塊鏈信息。文獻(xiàn)[10]中開發(fā)的欠優(yōu)化智能合約檢測(cè)系統(tǒng)即是調(diào)用API,web3.eth.getCode()獲取智能合約字節(jié)碼。文獻(xiàn)[11]是調(diào)用API,debug.traceTransaction()獲取智能合約的執(zhí)行軌跡,用以計(jì)算虛擬機(jī)操作碼的執(zhí)行次數(shù)。Bartoletti等人設(shè)計(jì)了一款針對(duì)比特幣和以太坊的數(shù)據(jù)搜集框架,也是通過調(diào)用比特幣節(jié)點(diǎn)和以太坊節(jié)點(diǎn)提供的API實(shí)現(xiàn)的。EtherQL通過調(diào)用以太坊節(jié)點(diǎn)名為EthereumJ提供的API來獲取數(shù)據(jù)。

2.3 爬取區(qū)塊鏈瀏覽器

區(qū)塊鏈瀏覽器如Etherscan向網(wǎng)站訪問者展示區(qū)塊鏈數(shù)據(jù),因此可以通過爬取區(qū)塊鏈瀏覽器的網(wǎng)頁獲取數(shù)據(jù)。ZEUS通過這種方式爬取智能合約源代碼并基于形式化分析檢測(cè)合約漏洞。兩份最新的研究也是通過爬取Etherscan、Etherchain和EtherCamp獲取智能合約字節(jié)碼,然后檢測(cè)智能合約中的旁氏合約。Huang等人爬取數(shù)據(jù)用于估計(jì)挖礦和投資收益。Bartoletti等人基于兩個(gè)數(shù)據(jù)集對(duì)智能合約進(jìn)行統(tǒng)計(jì)分析,這兩個(gè)數(shù)據(jù)集分別來自于以太坊區(qū)塊鏈瀏覽器和比特幣區(qū)塊文件。

2.4 插樁區(qū)塊鏈節(jié)點(diǎn)

區(qū)塊鏈節(jié)點(diǎn)同步區(qū)塊重放所有的交易并在虛擬機(jī)中執(zhí)行智能合約,因此可以通過插樁區(qū)塊鏈節(jié)點(diǎn)獲取信息。文獻(xiàn)[19]插樁了節(jié)點(diǎn)Geth來獲取交易的發(fā)送者、接收者和交易金額用于復(fù)雜網(wǎng)絡(luò)的分析。Grossman通過這種方法獲取內(nèi)部交易信息與storage的運(yùn)行時(shí)信息,用以檢測(cè)智能合約的無回調(diào)對(duì)象。文獻(xiàn)[21]通過GasReducer的方法獲取智能合約執(zhí)行軌跡用于衡量GasReducer的優(yōu)化效果。

現(xiàn)存的技術(shù)或多或少存在以下3個(gè)問題:數(shù)據(jù)獲取不完整、數(shù)據(jù)信息混淆以及數(shù)據(jù)獲取效率低。文獻(xiàn)[22]研究設(shè)計(jì)了一款區(qū)塊鏈數(shù)據(jù)搜集框架,名為DataEther,解決了上述問題。因此,本項(xiàng)目沿用DataEther的方法獲取區(qū)塊鏈數(shù)據(jù),從而為本文的區(qū)塊鏈安全威脅實(shí)時(shí)防御框架提供數(shù)據(jù)基礎(chǔ)。

3 區(qū)塊鏈安全威脅實(shí)時(shí)防御框架

3.1 設(shè)計(jì)目標(biāo)

研究高擴(kuò)展的區(qū)塊鏈安全威脅實(shí)時(shí)防御框架,圍繞以下幾個(gè)目標(biāo)開展對(duì)防御框架的設(shè)計(jì):

(1)獲取完備的智能合約執(zhí)行信息;

(2)設(shè)計(jì)可擴(kuò)展框架,允許在不修改虛擬機(jī)的前提下,檢測(cè)新類型的安全問題;

(3)基于設(shè)計(jì)框架討論對(duì)實(shí)際攻擊的應(yīng)用邏輯。

3.2 安全框架設(shè)計(jì)

區(qū)塊鏈安全威脅實(shí)時(shí)防御框架如圖2所示,由基于智能合約虛擬機(jī)的插樁點(diǎn)、區(qū)塊鏈信息獲取模塊、威脅檢測(cè)模塊以及安全威脅處置模塊組成。它主要實(shí)現(xiàn)的功能包括智能合約運(yùn)行時(shí)信息獲取、威脅檢測(cè)以及安全威脅處置。

3.2.1 智能合約運(yùn)行時(shí)信息獲取

本文設(shè)計(jì)通過對(duì)智能合約虛擬機(jī)進(jìn)行插樁來實(shí)現(xiàn)對(duì)智能合約運(yùn)行時(shí)信息的完備提取。智合約運(yùn)行時(shí)信息獲取的詳細(xì)設(shè)計(jì)見3.3節(jié)。區(qū)塊鏈信息獲取模塊收集智能合約虛擬機(jī)插樁點(diǎn)采集數(shù)據(jù),并將數(shù)據(jù)傳遞到監(jiān)測(cè)模塊中的威脅檢測(cè)中間件做威脅檢測(cè)。

3.2.2 威脅檢測(cè)

威脅檢測(cè)主要的執(zhí)行單元是威脅檢測(cè)模塊。威脅檢測(cè)模塊由威脅檢測(cè)中間件和可擴(kuò)展檢測(cè)算法庫構(gòu)成。

威脅檢測(cè)中間件實(shí)現(xiàn)對(duì)可擴(kuò)展檢測(cè)算法庫中檢測(cè)算法的注冊(cè)、調(diào)度和卸載,實(shí)現(xiàn)智能合約運(yùn)行時(shí)信息從區(qū)塊鏈信息獲取模塊到檢測(cè)算法的數(shù)據(jù)傳遞,實(shí)現(xiàn)將威脅檢測(cè)結(jié)果發(fā)送到安全威脅處置模塊。

可擴(kuò)展檢測(cè)算法庫由多個(gè)檢測(cè)算法組成,算法庫自身是可縮減可擴(kuò)展的彈性架構(gòu)。根據(jù)檢測(cè)需要,通過威脅檢測(cè)中間件,注冊(cè)添加新的檢測(cè)算法。注冊(cè)檢測(cè)算法的同時(shí),將算法所需的數(shù)據(jù)信息事件注冊(cè)威脅檢測(cè)中間件,威脅檢測(cè)中間件將所需的信息事件內(nèi)容通知到區(qū)塊鏈信息獲取模塊,信息獲取模塊根據(jù)事件需求將插樁點(diǎn)采集到的智能合約運(yùn)行時(shí)信息處理后上傳到威脅檢測(cè)中間件。

詳細(xì)的事件通知設(shè)計(jì)見3.4節(jié)。檢測(cè)算法根據(jù)威脅檢測(cè)中間件提供的數(shù)據(jù)實(shí)現(xiàn)威脅檢測(cè),并將結(jié)果傳遞回威脅檢測(cè)中間件。檢測(cè)算法庫中,檢測(cè)算法的生命周期包括注冊(cè)、更新、卸載以及使用調(diào)度。這些生命周期管理都在威脅檢測(cè)中間件完成。

3.2.3 安全威脅處置

安全威脅處置模塊收到威脅中間件發(fā)出的威脅檢測(cè)結(jié)果,根據(jù)結(jié)果情況提供不同的安全威脅處置。安全威脅處置跟進(jìn)一步的設(shè)計(jì)見3.5節(jié)。

3.3 智能合約運(yùn)行時(shí)信息獲取

智能合約運(yùn)行時(shí)信息獲取是為檢測(cè)智能合約安全問題做準(zhǔn)備,其中的關(guān)鍵點(diǎn)是保障運(yùn)行時(shí)信息的完備性。考慮到未來可能會(huì)出現(xiàn)新種類的安全威脅,所以采集部分運(yùn)行時(shí)的信息是不可取的。本文對(duì)合約執(zhí)行的兩個(gè)階段進(jìn)行插樁,從而確保信息獲取的完備性。

第一階段,外部交易提交階段。由于智能合約執(zhí)行必須由外部交易觸發(fā),所以對(duì)外部交易提交階段插樁,能夠準(zhǔn)確得知智能合約的初始執(zhí)行信息,包括交易hash、交易發(fā)送方、智能合約地址、以太幣數(shù)量、汽油上限、汽油定價(jià)、調(diào)用的函數(shù)ID、函數(shù)參數(shù)以及創(chuàng)建的合約字節(jié)碼等。

第二階段,智能合約解釋執(zhí)行階段。虛擬機(jī)內(nèi)建了一個(gè)解釋執(zhí)行器對(duì)智能合約進(jìn)行解釋執(zhí)行,因此本文對(duì)解釋執(zhí)行器插樁能夠獲得每一條字節(jié)碼的執(zhí)行情況。

智能合約包含超過130種字節(jié)碼,而針對(duì)每一種字節(jié)碼,解釋執(zhí)行器都提供了一個(gè)對(duì)應(yīng)的解釋執(zhí)行例程。因此,本文將對(duì)所有的解釋執(zhí)行例程插樁,獲取的信息包括讀/寫的棧(stack)內(nèi)容、讀/寫的存儲(chǔ)器(memory)內(nèi)容、讀/寫的倉庫(storage)內(nèi)容。除此以外,本文將對(duì)以下6種字節(jié)碼的解釋執(zhí)行例程進(jìn)行特別插樁處理,因?yàn)檫@6種字節(jié)碼會(huì)產(chǎn)生內(nèi)部交易。

CREATE:用于創(chuàng)建新合約,因此本文將額外獲取被創(chuàng)建合約的字節(jié)碼和合約地址。

CALL/CALLCODE/DELEGATECALL/STATICCALL:用于調(diào)用合約,因此本文將額外獲取被調(diào)用合約的字節(jié)碼、被調(diào)函數(shù)ID、調(diào)用參數(shù)以及汽油限制。

SELFDESTRUCT:用于銷毀合約,因此本文將額外獲取合約被銷毀時(shí)殘留的以太幣和以太幣的接收合約地址。

此外,本文介紹的方法還將記錄智能合約運(yùn)行時(shí)的環(huán)境信息,包括區(qū)塊高度、挖礦難度和時(shí)間戳等。

插樁代碼和虛擬機(jī)原本代碼共享計(jì)算資源,因此插樁代碼的執(zhí)行會(huì)帶來運(yùn)行時(shí)開銷(runtime overhead)。除了采集信息的完備性,本文提出一種按需(on-demand)的虛擬機(jī)插樁方法,降低了運(yùn)行時(shí)開銷。這種按需插樁的基本思路并不在一開始就將所有的插樁點(diǎn)全部插樁,而是根據(jù)用戶編寫的檢測(cè)程序注冊(cè)的事件通知,在需要的位置插樁。

3.4 事件通知

用戶在編寫檢測(cè)程序時(shí),需要注冊(cè)事件處理例程,只有注冊(cè)后才會(huì)收到相應(yīng)的事件通知。為了確保檢測(cè)程序能夠接收到完整的智能合約運(yùn)行時(shí)信息,實(shí)現(xiàn)字節(jié)碼級(jí)的檢測(cè),本文提供了兩類事件通知。

(1)交易執(zhí)行TransApply(INFO):當(dāng)外部交易或內(nèi)部交易執(zhí)行時(shí)生成此事件,檢測(cè)程序?qū)⒌玫浇灰姿行畔⒑铜h(huán)境信息。

(2)字節(jié)碼執(zhí)行ExeOp(INFO):每一條字節(jié)碼執(zhí)行時(shí)都將生成此事件,檢測(cè)程序?qū)⒌玫皆撟止?jié)碼的運(yùn)行時(shí)信息和環(huán)境信息。

雖然通過上面兩種事件通知,檢測(cè)程序能夠獲得完整的智能合約運(yùn)行時(shí)信息,但兩種事件可能過于底層,需要用戶對(duì)虛擬機(jī)有較強(qiáng)的掌握。為了降低用戶的使用難度,本文定義如下具有一定語義的事件。

(1)合約創(chuàng)建ContractCreate(INFO):當(dāng)合約創(chuàng)建時(shí)生成此事件,檢測(cè)程序?qū)⒌玫胶霞s創(chuàng)建時(shí)所有的運(yùn)行時(shí)信息,包括被創(chuàng)建合約的字節(jié)碼和環(huán)境信息。

(2)合約調(diào)用ContractInvoke(INFO):當(dāng)合約調(diào)用時(shí)生成此事件,檢測(cè)程序?qū)⒌玫胶霞s調(diào)用時(shí)所有的運(yùn)行時(shí)信息,包括被調(diào)用合約的字節(jié)碼和環(huán)境信息。

(3)合約銷毀ContractDestruct(INFO):當(dāng)合約調(diào)用時(shí)生成此事件,檢測(cè)程序?qū)⒌玫奖讳N毀合約地址、殘留以太幣數(shù)量、接收殘留以太幣的賬戶以及環(huán)境信息。

(4)基本塊執(zhí)行ExeBB(INFO):每個(gè)基本塊第一條字節(jié)碼執(zhí)行時(shí)生成此事件,檢測(cè)程序?qū)⒌玫交緣K第一條字節(jié)碼地址和環(huán)境信息。

(5)算數(shù)操作被執(zhí)行ExeArith(INFO):當(dāng)算數(shù)操作被執(zhí)行時(shí)生成此事件,檢測(cè)程序?qū)⒌玫皆撍銛?shù)操作的運(yùn)行時(shí)信息和環(huán)境信息。

(6)位操作被執(zhí)行ExeBit(INFO):當(dāng)位操作被執(zhí)行時(shí)生成此事件,檢測(cè)程序?qū)⒌玫皆撐徊僮鞯倪\(yùn)行時(shí)信息和環(huán)境信息。

(7)跳轉(zhuǎn)操作被執(zhí)行ExeJump(INFO):當(dāng)跳轉(zhuǎn)操作被執(zhí)行時(shí)生成此事件,檢測(cè)程序?qū)⒌玫皆撎D(zhuǎn)操作的運(yùn)行時(shí)信息,包括跳轉(zhuǎn)目標(biāo),以及環(huán)境信息。

(8)日志產(chǎn)生LogProduce(INFO):智能合約通過記錄日志向區(qū)塊鏈外發(fā)送信息,當(dāng)日志產(chǎn)生時(shí)生成此事件,檢測(cè)程序?qū)⒌玫饺罩拘畔⒁约碍h(huán)境信息。

3.5 安全威脅處置

當(dāng)檢測(cè)程序檢測(cè)到安全威脅時(shí),需要處理安全威脅。由于智能合約在虛擬機(jī)內(nèi)運(yùn)行,而檢測(cè)程序在虛擬機(jī)外,因此本文擬修改虛擬機(jī),在虛擬機(jī)中內(nèi)建多個(gè)威脅處理模塊。檢測(cè)檢測(cè)程序檢測(cè)到威脅后,給虛擬機(jī)的威脅處理模塊發(fā)送命令,執(zhí)行用戶指定的處理措施。常見的威脅處理措施包括中止當(dāng)前智能合約的執(zhí)行、禁止調(diào)用危險(xiǎn)合約以及禁止創(chuàng)建惡意合約。

4 基于實(shí)時(shí)防御框架的防御示范

基于本文提出的區(qū)塊鏈安全威脅實(shí)時(shí)防御框架,以整數(shù)溢出攻擊和重入攻擊作為典型攻擊,示范討論該框架的防護(hù)邏輯,以期對(duì)區(qū)塊鏈實(shí)時(shí)防御框架的進(jìn)一步研究及應(yīng)用提供參考思路。

4.1 重入攻擊檢測(cè)

4.1.1 威脅描述

若智能合約A存在重入漏洞,則A在執(zhí)行過程中會(huì)調(diào)用合約B,而合約B又會(huì)調(diào)用合約A,形成一個(gè)調(diào)用環(huán)。若重入漏洞被攻擊者利用,可能引起嚴(yán)重的安全問題,尤其是當(dāng)該調(diào)用環(huán)在一次外部交易提交過程中被多次執(zhí)行時(shí)。例如:TheDAO合約存在重入漏洞,攻擊者攻擊該漏洞偷走了價(jià)值超過6千萬美元的以太幣[3]。這次安全事件也是造成以太坊分裂為ETH和ETC的直接原因。

4.1.2 檢測(cè)思路

檢測(cè)重入攻擊的基本思路是檢測(cè)外部交易是否使得合約調(diào)用出現(xiàn)環(huán)結(jié)構(gòu)。為了檢測(cè)調(diào)用環(huán),需要知道外部交易和內(nèi)部交易信息,所以檢測(cè)程序需要注冊(cè)交易執(zhí)行的事件通知TransApply,并在事件處理函數(shù)中實(shí)現(xiàn)檢測(cè)功能。下面首先給出重入攻擊的形式化定義,然后給出實(shí)時(shí)的重入攻擊檢測(cè)方案。首先定義一個(gè)結(jié)構(gòu),稱之為單交易圖OG,這是由一個(gè)外部交易引起的交易圖,是一個(gè)5元組數(shù)據(jù)。

(1)ACC,單個(gè)外部交易涉及的所有賬戶的集合。

(2)EOA,外部交易的調(diào)用者,EOA ACC。

(3)T,單個(gè)外部交易及其觸發(fā)的所有內(nèi)部交易的集合。

(4)N,自然數(shù)集合,表示T中各交易的相對(duì)順序,其中外部交易的順序?yàn)?。

(5),1.jpg遷移函數(shù),2.jpg,例如3.jpg

在一個(gè)單交易圖OG中,若存在一個(gè)賬戶4.jpg使得5.jpg,則認(rèn)為OG中出現(xiàn)了調(diào)用環(huán),可認(rèn)為該交易是重入攻擊。為了降低可能的誤報(bào),本方案允許用戶設(shè)置一個(gè)閾值,當(dāng)調(diào)用環(huán)執(zhí)行次數(shù)大于該閾值才認(rèn)為是重入攻擊。

本方法基于實(shí)時(shí)的調(diào)用環(huán)檢測(cè),即當(dāng)調(diào)用環(huán)即將形成時(shí)檢測(cè)出調(diào)用環(huán),而不是外部交易完全執(zhí)行完后再檢測(cè)。本方法的優(yōu)勢(shì)在于可以在攻擊過程中予以檢測(cè)和阻斷;如果等外部交易完全執(zhí)行后再檢測(cè),則一次攻擊已經(jīng)完成,無法做到及時(shí)阻斷,且可能造成誤報(bào)。下面基于圖2描述本方案的調(diào)用環(huán)檢測(cè)過程。

圖3中,一個(gè)外部賬戶EOA調(diào)用了合約A,A在執(zhí)行過程中陸續(xù)調(diào)用了其他5個(gè)合約。本例涉及一個(gè)外部交易(1)和8個(gè)內(nèi)部交易(2~9),交易的由圖中數(shù)字按從小到大的順序執(zhí)行。如果在外部交易提交完成后檢測(cè)調(diào)用環(huán),將會(huì)得到圖中3的調(diào)用圖。從圖3可以發(fā)現(xiàn)3個(gè)調(diào)用環(huán),分別為2→3→7、5→6→7和8→9→7。但是,由于交易執(zhí)行存在順序,所以只有5→6→7是真正的調(diào)用環(huán),其余兩個(gè)為誤報(bào)。

本方法設(shè)計(jì)的檢測(cè)程序注冊(cè)了交易執(zhí)行的事件通知,而事件的獲取是通過虛擬機(jī)插樁實(shí)現(xiàn)的,所以事件通知的順序完全按照交易執(zhí)行的順序。因此,事件處理例程的執(zhí)行順序也是按照交易執(zhí)行的順序,則本文提出的方法能夠獲知交易執(zhí)行順序。本文設(shè)計(jì)了交易表用以檢測(cè)調(diào)用環(huán),如圖4所示。

發(fā)送者集合表示某外部交易執(zhí)行過程中所有出現(xiàn)的發(fā)送者;接收者表示當(dāng)前(外部或內(nèi)部)交易的接收者。交易表按照交易執(zhí)行順序從上到下排列。當(dāng)有新的交易產(chǎn)生時(shí),檢測(cè)當(dāng)前交易的接收者是否出現(xiàn)在發(fā)送者集合中。若出現(xiàn),說明合約執(zhí)行出現(xiàn)了調(diào)用環(huán),本方法繼而回溯到目前為止的交易,匹配交易的發(fā)送者和接收者,直到形成閉環(huán)。以圖3為例,當(dāng)交易7執(zhí)行時(shí),本方法檢測(cè)到調(diào)用環(huán),因此在交易8和交易9產(chǎn)生前即可實(shí)時(shí)采取應(yīng)對(duì)措施。

4.2 整數(shù)溢出攻擊檢測(cè)

4.2.1 威脅描述

整數(shù)溢出是智能合約的一類出現(xiàn)頻率很高的安全問題,可能導(dǎo)致嚴(yán)重的后果,尤其是各種代幣被盜。2018年4月的報(bào)道披露了8個(gè)存在整數(shù)溢出漏洞的代幣合約[4]。整數(shù)溢出是一類傳統(tǒng)的安全問題,在x86代碼中也普遍存在。但是,在區(qū)塊鏈智能合約領(lǐng)域中,整數(shù)溢出會(huì)帶來直接的經(jīng)濟(jì)損失,因此檢測(cè)整數(shù)溢出攻擊是保障區(qū)塊鏈安全的重要措施。

4.2.2 檢測(cè)思路

整數(shù)溢出由算數(shù)操作引起,所以檢測(cè)程序本應(yīng)注冊(cè)算數(shù)操作被執(zhí)行的事件ExeArith。當(dāng)事件處理例程被調(diào)用時(shí),將會(huì)收到算數(shù)操作的信息,包括算數(shù)操作類型和操作數(shù)。檢測(cè)算數(shù)操作是否會(huì)產(chǎn)生溢出是容易的,但只要溢出就認(rèn)為發(fā)生了整數(shù)溢出攻擊會(huì)帶來大量的誤報(bào),在實(shí)際應(yīng)用中是不能接受的。

圖5是一個(gè)算數(shù)運(yùn)算庫的代碼,作用是防止整數(shù)溢出。當(dāng)加法溢出時(shí)(語句2),中止執(zhí)行智能合約(語句3)。所以,如果智能合約調(diào)用該庫中的函數(shù),即使發(fā)生了整數(shù)溢出,也不會(huì)帶來安全問題。所以,認(rèn)為圖5的加法函數(shù)存在整數(shù)溢出漏洞是誤報(bào)。

為了解決整數(shù)溢出檢測(cè)的高誤報(bào)問題,本方案提出基于污點(diǎn)分析排除誤報(bào)。污點(diǎn)分析是安全領(lǐng)域常用的技術(shù),由污點(diǎn)源、污點(diǎn)傳播和污點(diǎn)槽(taint sink)3大組件組成。本方案將整數(shù)溢出的運(yùn)算結(jié)果和操作數(shù)標(biāo)記為污點(diǎn)源,如圖5中的a、b、c;監(jiān)控所有的EVM操作,追蹤污點(diǎn)傳播;如果污點(diǎn)傳播到污點(diǎn)槽即一些關(guān)鍵位置,則認(rèn)為發(fā)生了整數(shù)溢出攻擊。典型的污點(diǎn)槽包括倉庫、內(nèi)部交易的參數(shù)以及合約返回值。下面給出整數(shù)溢出攻擊檢測(cè)時(shí)用到的污點(diǎn)分析規(guī)則。

6.jpg

其中,8.jpg7.jpg的操作結(jié)果;9.jpg表示操作結(jié)果有溢出;10.jpg表示任意操作本身是污點(diǎn);Arith表示算術(shù)運(yùn)算;11.jpg表示所有操作數(shù)和結(jié)果都被標(biāo)記為污點(diǎn);

式(1)是算數(shù)運(yùn)算采用的污點(diǎn)分析規(guī)則,如果任意操作數(shù)本身就是污點(diǎn)或者算數(shù)運(yùn)算的結(jié)果溢出,那么算數(shù)運(yùn)算的所有操作數(shù)和結(jié)果都被標(biāo)記為污點(diǎn)。

12.jpg

其中,OP表示EVM操作;13.jpg表示將操作結(jié)果標(biāo)記為污點(diǎn)。

式(2)是通用的污點(diǎn)分析規(guī)則,當(dāng)EVM操作不是算數(shù)操作也不是污點(diǎn)槽操作時(shí)匹配此規(guī)則。當(dāng)EVM操作的某個(gè)操作數(shù)是污點(diǎn),那么操作的結(jié)果也被標(biāo)記為污點(diǎn)。

14.jpg

其中,SSTORE/INVOKE/RET表示污點(diǎn)槽操作,分別對(duì)應(yīng)寫倉庫、內(nèi)部交易和合約返回值操作。

式(3)是污點(diǎn)槽采用的污點(diǎn)分析規(guī)則,如果污點(diǎn)槽操作(寫倉庫、內(nèi)部交易、合約返回值)的操作數(shù)是污點(diǎn),則檢測(cè)到了整數(shù)溢出攻擊。

采用污點(diǎn)分析后,由于圖5中的污點(diǎn)源沒有傳播到污點(diǎn)槽,所以本方案可以排除誤報(bào)。圖5是CVE-2018-13746披露的智能合約整數(shù)溢出漏洞,有漏洞的合約叫kBit。圖6中,語句2的加法運(yùn)算存在溢出漏洞,溢出后的結(jié)果將會(huì)存儲(chǔ)在balances[target]中,而balances是位于倉庫中的全局變量,所以語句2執(zhí)行時(shí),檢測(cè)程序認(rèn)為是整數(shù)溢出攻擊。

為了實(shí)現(xiàn)污點(diǎn)分析,檢測(cè)程序需要監(jiān)控每條EVM操作的執(zhí)行情況,因此檢測(cè)程序注冊(cè)字節(jié)碼執(zhí)行事件ExeOp。這樣每條字節(jié)碼執(zhí)行時(shí),事件處理例程都將得到通知,檢測(cè)程序在事件處理例程里實(shí)現(xiàn)對(duì)污點(diǎn)源的標(biāo)記與跟蹤。

5 結(jié)語

本文針對(duì)區(qū)塊鏈應(yīng)用層安全威脅,深入研究智能合約運(yùn)行時(shí)信息獲取、智能合約虛擬機(jī)插樁和安全威脅檢測(cè)技術(shù),提出了一種檢測(cè)算法可擴(kuò)展的區(qū)塊鏈安全威脅實(shí)時(shí)防御框架。該框架設(shè)計(jì)了基于虛擬機(jī)插樁智能合約運(yùn)行時(shí)信息全面采集方式,威脅檢測(cè)算法注冊(cè)、管理、調(diào)度機(jī)制以及檢測(cè)結(jié)果與處置方法聯(lián)動(dòng)機(jī)制,利用本文提出的實(shí)時(shí)防御框架,開展基于重入攻擊、整數(shù)溢出攻擊的防御邏輯討論,為該框架在區(qū)塊鏈安全威脅防護(hù)研究和實(shí)踐提供了參考思路。

作者簡(jiǎn)介 >>>

白楊(1988—),女,碩士,工程師,主要研究方向?yàn)樾畔踩?shù)據(jù)安全、云計(jì)算安全。

選自《通信技術(shù)》2020年第六期 (為便于排版,已省去原文參考文獻(xiàn))

來源:信息安全與通信保密雜志社

熱點(diǎn)新聞

推薦產(chǎn)品

x
  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: av资源每日更新网站在线-av资源免费每日更新-av资源在线-av资源在线播放-av资源在线播放韩国-av资源在线观 | 国产91av视频在线-国产91av在-国产91av在线-国产91av在线播放-国产91chinese在线观看-国产91l在线播放 | 中文无码熟妇人妻av在-中文无码视频三区四区在线观看-中文无码视频-中文无码肉感爆乳在线-中文无码日韩欧免费视频-中文无码日韩欧毛 | 韩国三级一区-韩国三级香港三级日本三级la-韩国三级香港三级日本三级-韩国三级视频网站-日韩欧美一及在线播放-日韩欧美一二三区 久久久久久久久国产-久久久久久久久97-久久久久久久国产视频-久久久久久久国产精品影院-午夜精-午夜寂寞院 | 激情 亚洲,欧美日韩一区二区在线观看视频,欧美亚洲第一页,国内精品福利在线视频,国产黄色小视频网站,日本欧美成人 | 国产日韩欧美亚洲综合在线-国产日韩欧美视频在线观看-国产日韩欧美视频-国产日韩欧美久久久-人人澡人人澡人人澡-人人澡人人澡人人 | 欧美夜夜骑,青草视频在线观看完整版,久久精品99无色码中文字幕,欧美日韩一区二区在线观看视频,欧美中文字幕在线视频,www.99精品 热久久国产-热99这里只有精品-热99这里有精品综合久久-热99在线观看-国产精品99久久久-国产精品99久久99久久久看片 | www五月天,国产精品视频网站你懂得,精品国产你懂的在线观看,久久伊人成人,国产精品黄页网站在线播放免费,国产va在线 | 成人综合网久久-成人综合网亚洲伊人-成人综合网站-成人综合网站一区二区三区四区-成人综合网站在线-成人综合网址 | 国产日屄视频播放-国产日本中文久久-国产日本在线观看网址-国产日本在线观看播放-国产日本在线播放-国产日本亚洲一区二区三区 | 国产欧美日韩精品一区二区三区-国产欧美日韩精品一区二-国产欧美日韩精品高清二区综合区-国产欧美日韩精品第三区-天天舔天天操天天干-天天添天天干 | 欧美日韩国产在线成人网,成人免费一级片,在线观看国产一区,国产麻豆精品免费密入口,国产欧美日韩在线,在线视频观看国产 | 久久久久久99精品-久久久久久99-久久久久久91香蕉国产-久久久久久91精品色婷婷-中国一级片免费看-中国一级毛片国产高清 | 午夜欧美福利-午夜欧美成人香蕉剧场-午夜欧美成人久久久久久-午夜久久网-国产亚洲男人的天堂在线观看-国产亚洲免费观看 | 激情区小说区偷拍区图片区-激情偷乱人成视频在线观看-激情文学另类小说亚洲图片-激情销魂乳妇奶水小说-香蕉九九-香蕉成人啪国产精品视频综合网 | 精品国产在线亚洲欧美-精品国产在线手机在线-精品国产在线国语视频-精品国产在线观看福利-亚洲色噜噜狠狠站欲八-亚洲色噜噜狠狠网站 | 欧美一区二区三区香蕉视-欧美一区二区三区网站-欧美一区二区三区四区在线观看-欧美一区二区三区四区五区六区-欧美一区二区三区四区视频-欧美一区二区三区视视频 欧美性xxxxxx性,国产精彩视频在线观看,亚洲欧美视屏,久艹网,国产日韩欧美中文,亚洲欧美经典 | 牛牛精品专区在线-牛牛超碰 国产-牛和人交videos欧美-妞干网手机免费视频-99精品视频在线观看免费-99精品视频在线观看re | 国产免费看-国产免费久久精品久久久-国产免费久久精品99-国产免费久久精品44-天天干天天天天-天天干天天爽天天射 | 波多野结衣的av一区二区三区-波多野结衣的电影-波多野结衣的中文-波多野结衣第二页视频-波多野结衣电影网-波多野结衣电影一区二区 | 亚洲视频一区二区,国产一区二区网站,国产精品…在线观看,欧美高清正版在线,欧美日韩 国产区 在线观看,亚洲最新视频在线观看 | 99re在线精品99re8热视频-99re在线精品-99re在线观看视频-99re在线观看-99re在线播放视频-99re在线 | 亚洲A片一区日韩精品无码-亚洲H成年动漫在线观看不卡-亚洲VA欧美VA天堂V国产综合-亚洲VA天堂VA欧美片A在线-亚洲爆乳精品无码AAA片-亚洲不卡高清免v无码屋 | 亚洲A片一区日韩精品无码-亚洲H成年动漫在线观看不卡-亚洲VA欧美VA天堂V国产综合-亚洲VA天堂VA欧美片A在线-亚洲爆乳精品无码AAA片-亚洲不卡高清免v无码屋 | 香蕉网站男人网站-香蕉网站狼人久久五月亭亭-香蕉网在线视频-香蕉网在线观看-香蕉网伊-香蕉婷婷 中文有码中文字幕免费视频-中文有码视频-中文伊人-中文一区在线观看-欧美性综合-欧美性在线视频 | 久久精品免费电影-久久精品免费-久久精品美乳-久久精品美女视频-亚洲最大福利视频-亚洲综合视频一区 | 精品国产亚一区二区三区,91久久精品国产一区二区,久久精品国产国产精品四凭,91午夜精品亚洲一区二区三区,精品在线看,国产视频资源在线观看 | 国产激情对白一区二区三区四-国产或人精品日本亚洲77美色-国产黄站-国产黄在线免费观看-日韩中文字幕网-日韩中文字幕视频在线观看 | 久久精品一区二区三区不卡牛牛,国产片精品电影www,久久久久久97,www奇米,好姑娘中文在线播放,美女被羞羞视频网站在线 | 久久夜视频-久久夜色视频-久久夜色精品国产欧美-久久夜色精品国产噜噜小说-久久夜色精品国产-久久亚洲这里只有精品18 | 中文区永久区乱码六区-中文欧美一级强-中文免费观看视频网站-中文免费-狼牙视频在线免费观看入口-狼窝by揽春全文免费阅读 | 在线日韩亚洲-在线日韩视频-在线日韩欧美一区二区三区-在线日韩欧美-久久精品嫩草影院-久久精品免视看国产盗摄 | 国产成人18黄网站免费网站-国产成人18黄网站免费-国产成人+亚洲欧洲-国产成年网站-国产成年-国产成a人亚洲精v品久久网 | 国产一级视频在线-国产一级视频免费-国产一级视频久久-国产一级视频播放-日本中文字幕在线视频站-日本中文字幕在线视频 | 亚洲六月丁香婷婷综合,久久精品亚洲精品国产欧美,玖玖精品视频在线,国产日本精品,www成人在线观看,精品日产一区二区 | 国产精品v欧美精品v日本精品动漫-国产精品porn-国产精品jizzjizz-国产精品h片在线播放-热久久伊人-热久久亚洲 | 在线观看黄色网-在线观看黄色片网站-在线观看黄色片-在线观看黄色的网站-久久精品影视-久久精品一区二区 | 久久99国产精品一区二区,欧美日韩另类在线,婷婷四月开心色房播播网,收集最新中文国产中文字幕,亚洲综合激情六月婷婷在线观看,欧美一级淫片 | 国产午夜视频在线,国产夜夜操,人人添人人澡人人澡人人人爽,欧美日韩国产综合视频在线看,精品久久一区二区,亚洲欧美一区二区三区久久 | 成人综合网久久-成人综合网亚洲伊人-成人综合网站-成人综合网站一区二区三区四区-成人综合网站在线-成人综合网址 | 国产精品国产三级大全在线观看-国产精品国产三级囯产av中文-国产精品国产三级国av在线观看-国产精品国产三级国v麻豆-国产精品国产三级国产-国产精品国产三级国产aⅴ |