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

?

智能合約安全漏洞檢測技術(shù)研究

2022-10-14 02:01:36張春峰王國一
關(guān)鍵詞:安全漏洞合約漏洞

◆張春峰 王國一

(沈陽智能機(jī)器人創(chuàng)新中心有限公司 遼寧 110000)

隨著數(shù)字化時(shí)代的到來,區(qū)塊鏈技術(shù)作為關(guān)鍵的數(shù)字經(jīng)濟(jì)支持技術(shù),成為新的社會(huì)經(jīng)濟(jì)發(fā)展引擎。其中,憑借去中心化、不可篡改等優(yōu)點(diǎn),區(qū)塊鏈技術(shù)已經(jīng)廣泛應(yīng)用于多種場景。隨著應(yīng)用場景不斷豐富,智能合約越來越復(fù)雜多變,這樣導(dǎo)致對(duì)應(yīng)的安全漏洞越來越多,直接制約著區(qū)塊鏈技術(shù)發(fā)展。隨著關(guān)于智能合約的攻擊行為不斷增加,安全性能讓整個(gè)區(qū)塊鏈行業(yè)備受詬病,做好安全漏洞檢測越來越重要。

1 智能合約概述

智能合約本質(zhì)為一個(gè)程序模塊,被部署于區(qū)塊鏈技術(shù),從而實(shí)現(xiàn)各種服務(wù)于智能合約的豐富的業(yè)務(wù)功能。當(dāng)前隨著區(qū)塊鏈技術(shù)的快速發(fā)展,業(yè)務(wù)功能也趨近復(fù)雜化,可執(zhí)行的操作也豐富多樣。在智能合約的輔助下,用戶可以不通過對(duì)區(qū)塊鏈的結(jié)構(gòu)修改而實(shí)現(xiàn)整個(gè)邏輯操作的嵌入,以此實(shí)現(xiàn)區(qū)塊鏈的功能化拓展。作為一類程序化模塊,通常采用定制化程序來實(shí)現(xiàn),例如應(yīng)用于以太網(wǎng)的Solidity 語言和Libra中的Move 語言,并且可通過設(shè)置程序化接口來對(duì)接不同編程語言。

為了實(shí)現(xiàn)節(jié)點(diǎn)安全管控,智能合約和節(jié)點(diǎn)之間不再融合在一起,而是以分治的方式作用于區(qū)塊鏈節(jié)點(diǎn)中的沙盒中。程序和數(shù)據(jù)的智能合約分割不是馮諾依曼系統(tǒng)的傳統(tǒng)體系結(jié)構(gòu),因此,安全威脅在一定程度上不同于普通計(jì)算機(jī)。執(zhí)行智能合約往往會(huì)導(dǎo)致狀態(tài)變化,對(duì)此可在區(qū)塊鏈的不同環(huán)節(jié)之間達(dá)成協(xié)議并在達(dá)成共識(shí)后納入?yún)^(qū)塊。智能化合同和區(qū)塊特性帶來了新的安全問題。

2 智能合約安全漏洞分析

2.1 重復(fù)輸入

重復(fù)輸入是智能合約過程中發(fā)生的最危險(xiǎn)的安全漏洞之一,當(dāng)它調(diào)用其他智能合約時(shí)。被調(diào)用的智能合約可以通過重新調(diào)用原始合約來改變?cè)贾悄芎霞s的流量和狀態(tài),實(shí)現(xiàn)惡意重復(fù)翻譯等。轉(zhuǎn)移到智能合約后,將進(jìn)行控制轉(zhuǎn)移,執(zhí)行返回(fallback)功能,這一特點(diǎn)使反復(fù)攻擊更加頻繁。在這種情況下,攻擊過程中,其會(huì)采用惡意錯(cuò)誤的方式復(fù)制式攻擊。當(dāng)出現(xiàn)業(yè)務(wù)變更時(shí),智能合約則會(huì)因?qū)τ玫臈l件不匹配而引發(fā)定位偏差,由此造成程序的紊亂。

2.2 整數(shù)溢出

整數(shù)溢出作為一種漏洞攻擊主的重要方式,通常采用幾種編程語言。在執(zhí)行智能合約過程中,數(shù)字業(yè)務(wù)自身的轉(zhuǎn)換同計(jì)算之間的強(qiáng)大關(guān)聯(lián),使得整數(shù)溢出引發(fā)系統(tǒng)安全狀況。例如以太坊,當(dāng)對(duì)應(yīng)的無符號(hào)整數(shù)計(jì)算的結(jié)果超出表示范圍就會(huì)采用截?cái)鄶?shù)位的方式引發(fā)數(shù)據(jù)偏差問題。為此,可通過設(shè)置安全庫來處理該問題。具體而言,即通過庫中的數(shù)值計(jì)算來對(duì)溢出情況進(jìn)行評(píng)估,從而為出現(xiàn)該問題提供應(yīng)急預(yù)案,以此預(yù)防溢出問題。

2.3 交易順序依賴與時(shí)間戳依賴

在區(qū)塊鏈業(yè)務(wù)執(zhí)行中,對(duì)應(yīng)的交易順序和時(shí)間對(duì)形成的交易結(jié)果產(chǎn)生直接影響。當(dāng)出現(xiàn)交易順序和時(shí)間漏洞的時(shí)候,通過對(duì)交易順序的控制,利用時(shí)間戳容限誤差可實(shí)現(xiàn)攻擊,導(dǎo)致交易出現(xiàn)問題。由于這一漏洞的存在,且存在致命的缺陷,導(dǎo)致潛在的攻擊更加精準(zhǔn),也更容易出現(xiàn)。對(duì)此通常需要設(shè)計(jì)智能化時(shí)間戳管理來避免對(duì)區(qū)塊鏈中時(shí)間戳檢測和打包環(huán)節(jié)的攻擊,以實(shí)現(xiàn)對(duì)智能合約的有效保護(hù)。

2.4 拒絕服務(wù)攻擊漏洞

該漏洞即DoS,本質(zhì)上即干擾原有代碼的執(zhí)行邏輯,導(dǎo)致其無法被執(zhí)行,從而引發(fā)以太幣和GAS 的消耗,由此進(jìn)一步制約合約的運(yùn)行。目前而言,導(dǎo)致該攻擊的漏洞存在形式如下所示:

(1)細(xì)微化的智能合約編碼方式容易被攻擊者利用而形成有效攻擊,其會(huì)通過錯(cuò)誤操作引導(dǎo)來實(shí)現(xiàn)服務(wù)終止運(yùn)行。

(2)對(duì)應(yīng)的區(qū)塊鏈執(zhí)行代碼控制權(quán)被集中于某一單一變量上,這樣當(dāng)有用戶切入,就會(huì)對(duì)整個(gè)使用功能進(jìn)行帶來聯(lián)動(dòng)反應(yīng),當(dāng)出現(xiàn)不執(zhí)行或者丟失密鑰的情況下,系統(tǒng)則無法得以正常運(yùn)行,甚至?xí)?dǎo)致智能合約的癱瘓。

(3)DoS 漏洞攻擊會(huì)導(dǎo)致諸如以太坊的每個(gè)模塊一樣,由于存在gas limit 上限,當(dāng)出現(xiàn)外部操控?cái)?shù)組發(fā)生訪問時(shí),可在攻擊下引發(fā)gas 的枯竭,導(dǎo)致無空間來運(yùn)行智能合約。

2.5 未檢查call 調(diào)用返回值漏洞

該問題主要發(fā)生于Solidity 的調(diào)用中,其所涵蓋的send()、call()、delegatecall(),callcode()等函數(shù)調(diào)用異常時(shí),此時(shí)返回false,此時(shí)不將拋出異常指示。在外部調(diào)用過程中,由于沒有異常提示,導(dǎo)致合約運(yùn)行繼續(xù),這會(huì)隨著運(yùn)行的繼續(xù)而引發(fā)邏輯錯(cuò)誤。例如,圖1中,對(duì)應(yīng)的第7 行中,send()操作后,盡管出現(xiàn)異常,但是沒有進(jìn)行拋出操作而導(dǎo)致交易繼續(xù),然后運(yùn)行到第9 行則發(fā)生邏輯錯(cuò)誤,導(dǎo)致系統(tǒng)異常,引發(fā)連鎖反應(yīng)。

圖1 未檢查call 返回值漏洞代碼段

3 智能合約安全漏洞檢測方法

3.1 靜態(tài)程序分析

對(duì)于靜態(tài)程序分析而言,主要內(nèi)容在于結(jié)合統(tǒng)計(jì)特性,對(duì)所執(zhí)行的方案的特點(diǎn),特別是符號(hào)實(shí)現(xiàn)、語義分析等進(jìn)行分析,以從中發(fā)掘其中的漏洞和隱患。

(1)符號(hào)執(zhí)行

該方法主要通過對(duì)所執(zhí)行的程序的每個(gè)運(yùn)行的路徑進(jìn)行分析,對(duì)每個(gè)路徑所滿足的條件進(jìn)行分析和匹配,從而以通過約束規(guī)則,利用求解器來確定可能的條件。具體而言,當(dāng)滿足某一路徑條件時(shí),則會(huì)將該路徑設(shè)置為可實(shí)現(xiàn)路徑,否則將其設(shè)置為不可訪問,并將該路徑刪除。通過這一分析方法可有效地發(fā)掘可能存在的安全漏洞,其具體方法如下:在執(zhí)行智能合約的過程中,對(duì)應(yīng)執(zhí)行的指令下發(fā)前,須對(duì)可能執(zhí)行的路徑進(jìn)行檢索,并由此發(fā)出相應(yīng)的路由指令,以進(jìn)一步分析是否滿足該路徑路由條件。如果此時(shí)還是滿足所需條件,那么對(duì)應(yīng)的執(zhí)行代碼可以被重復(fù)執(zhí)行。此時(shí)會(huì)存在一定的安全風(fēng)險(xiǎn)。

為了進(jìn)一步分析,通常需要采用Oyente 等基于符號(hào)執(zhí)行的智能合同分析工具。在符號(hào)執(zhí)行分析方法采用的基礎(chǔ)上,依托Oyente 分析工具可有效生成智能合約控制流程圖,并對(duì)可能的路由路徑進(jìn)行分析,并通過分析原則和路由規(guī)則來檢測路由路徑中是否存在異常,并做進(jìn)一步驗(yàn)證以確定是否需要播報(bào)。

(2)語義分析

語義分析方法作為另一類關(guān)鍵分析方法,通常對(duì)智能合約的語義特征進(jìn)行分析,通過分析來獲取相關(guān)的語義特征,并通過挖掘的語義特征來分析是否存在漏洞或者異常等。通常,為了有效提升漏洞分析的效率,需要采用相應(yīng)的靜態(tài)工具來予以輔助分析,例如采用Securify 即為當(dāng)前進(jìn)行語義分析的關(guān)鍵工具,這是因?yàn)樵摴ぞ呤且环N基于語義和靜態(tài)分析的智能合約安全分析工具。采用該工具的過程中,通常需要將經(jīng)過智能合約編碼處理的信息作為輸入,并通過對(duì)應(yīng)的語義特征依賴關(guān)系,進(jìn)行分析,通過匹配的方式來驗(yàn)證是否存在對(duì)應(yīng)的漏洞,從而以高精度的挖掘潛在的風(fēng)險(xiǎn)。對(duì)于該分析工具而言,其存在很大的好處在于其挖掘的語義特征信息,通常能夠滿足特征的信息規(guī)則,并且可以通過邏輯語言datalog 定義,然后在該引擎框架下,進(jìn)行安全漏洞的檢測和修補(bǔ)。為了能夠有效提升發(fā)掘安全漏洞的效率,其同DSL 來對(duì)安全模式進(jìn)行描述,并且提供用戶以安全模式進(jìn)行登錄,以及擴(kuò)展內(nèi)置模式集,由此提升整個(gè)分析方法的靈活性和良好的可擴(kuò)展性。

3.2 動(dòng)態(tài)污點(diǎn)分析

(1)模糊測試

模糊測試是指發(fā)現(xiàn)智能合約中的安全漏洞、構(gòu)建大量輸入數(shù)據(jù)以及監(jiān)控智能合約的實(shí)施過程。合約模糊器是一種基于模糊測試的智能合約不在場證明工具。首先,分析了智能合約中的所有功能,并分析了智能合約中不提供ABI 的所有外部功能。然后,他使用智能合約ABI 生成輸入數(shù)據(jù),并使用EVM 記錄的執(zhí)行軌跡進(jìn)行漏洞分析。fuzzer 合同中定義了七種測試原語,以支持多個(gè)安全漏洞的檢測。針對(duì)合約間交互鏈接引起的返回問題,建立攻擊合約,并利用其保留函數(shù)完成返回檢測。在模糊測試中,經(jīng)常會(huì)出現(xiàn)一些問題,比如指數(shù)輸入數(shù)據(jù)和低代碼覆蓋率。

(2)污點(diǎn)的動(dòng)態(tài)監(jiān)檢測分析

動(dòng)態(tài)應(yīng)變分析方法通常將輸入數(shù)據(jù)標(biāo)記為應(yīng)變和傳播,并在智能合約操作期間分析應(yīng)變。區(qū)塊鏈分析側(cè)重于輸入?yún)?shù)的行為,并確定染料傳播路徑上是否存在安全漏洞。

Easyflow 是一種基于動(dòng)態(tài)染色不在場證明評(píng)估以太坊智能合約中是否存在整體轉(zhuǎn)運(yùn)漏洞的方法。通過修改EVM,每個(gè)輸入?yún)?shù)都設(shè)計(jì)為一個(gè)陰影。當(dāng)有數(shù)字操作時(shí),請(qǐng)注意操作員。如果操作不是污漬,且計(jì)算中沒有轉(zhuǎn)運(yùn),則應(yīng)證明操作是安全的;如果操作員受到污染,則會(huì)生成事務(wù)嘗試以使操作過載。如果超額流量成功激活,則應(yīng)指示轉(zhuǎn)運(yùn)漏洞;如果未激活過量流量,則報(bào)告潛在的過量流量漏洞。此外,Easyflow 還可以識(shí)別數(shù)學(xué)安全性及其可能的變體,從而有效降低誤報(bào)率。

3.3 形式化方法

形式化方法是驗(yàn)證程序修正的常用方法。當(dāng)定義某些公理、建立特定的邏輯推理系統(tǒng)并證明代碼的邏輯推理時(shí),可以驗(yàn)證智能合約功能的更正。通過正式驗(yàn)證的代碼可以確保它在所有條件下都顯示正確的功能。然而,復(fù)雜的證明過程使得形式化方法難以在邏輯復(fù)雜的大型程序中使用。

4 智能合約安全漏洞防護(hù)建議

4.1 擴(kuò)展形式化驗(yàn)證的應(yīng)用范圍

形式化驗(yàn)證方法當(dāng)前備受網(wǎng)絡(luò)安全問題專家所關(guān)注的方法之一,其通過嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)理論對(duì)整個(gè)安全漏洞進(jìn)行演算,實(shí)現(xiàn)對(duì)安全漏洞的高效檢索和發(fā)掘,但是由于數(shù)學(xué)理論參與度高而提升應(yīng)用門檻。對(duì)此為了提升其應(yīng)用范圍,針對(duì)不同應(yīng)用目標(biāo)進(jìn)行定制化的研究和規(guī)范化描述和驗(yàn)證,從而削減應(yīng)用成本,降低使用門檻,從而提升其大規(guī)模應(yīng)用價(jià)值。

4.2 提取重點(diǎn)路徑,縮短路徑空間

對(duì)于區(qū)塊鏈而言,進(jìn)行交易的過程中需要選擇可執(zhí)行的路由路徑來執(zhí)行該事件,從而完成交易過程。一般而言,攻擊者攻擊的目標(biāo)即采用非法手段,來竊取對(duì)應(yīng)的加密貨幣。在這一背景下,需要通過對(duì)當(dāng)前的智能合約審計(jì)經(jīng)驗(yàn)和已曝漏洞分析,對(duì)出現(xiàn)的或者可能出現(xiàn)漏洞的路由路徑中所執(zhí)行的指令進(jìn)行分析,提取其中可能的高危指令SUICIDE、CALL、ORIGIN、ASSERT_FAIL 等,對(duì)其路由的路徑進(jìn)行重點(diǎn)關(guān)注,并打上重視標(biāo)簽。為了進(jìn)一步提升安全漏洞挖掘的效果和檢測精度,在實(shí)際運(yùn)行中,不必對(duì)所有的路由路徑進(jìn)行分析,只需要重點(diǎn)關(guān)注高危漏洞驗(yàn)證工作,以此削減路由路徑檢索時(shí)間和存儲(chǔ)空間,提升路由和檢測效率。

4.3 改進(jìn)現(xiàn)有的模糊測試工具

對(duì)于安全漏洞檢測而言,一個(gè)重要的方式就是模糊測試,易提升安全漏洞檢測效率和定位效果,為精準(zhǔn)檢測提供技術(shù)支撐。但是由于技術(shù)的不夠完善,現(xiàn)有的模糊測試工具業(yè)務(wù)功能不足,且精度不足成為當(dāng)前用于檢測漏洞中存在的關(guān)鍵問題。對(duì)此進(jìn)行優(yōu)化處理是關(guān)鍵,例如可以考慮用多目標(biāo)優(yōu)化算法。此外,綜合其他技術(shù)來輔助提升檢測效果,如可采用靜態(tài)方法、符號(hào)執(zhí)行、模糊測試等多個(gè)測試策略的聯(lián)合應(yīng)用,能夠在靜態(tài)分析方法框架下來獲取對(duì)應(yīng)的可執(zhí)行的路由路徑,并在符號(hào)執(zhí)行分析技術(shù)下,結(jié)合生成種子測試用例,來測試該項(xiàng)綜合測試技術(shù),提升模糊測試效果。

4.4 完善智能合約漏洞庫,建立漏洞挖掘工具效率評(píng)價(jià)方法

智能合約在執(zhí)行中,由于缺乏足夠的漏洞檢索庫,導(dǎo)致安全漏洞的發(fā)掘效率受到影響。為了改善該局面,提升漏洞挖掘的效率,檢驗(yàn)相關(guān)工具的有效性能,并為安全化處理提供技術(shù)思路,需要根據(jù)當(dāng)前出現(xiàn)的漏洞情況,進(jìn)行分析、整理和總結(jié),將其納入規(guī)范化記錄存檔,并綜合在一起形成具有特性特征分類的數(shù)據(jù)庫,并結(jié)合處理經(jīng)驗(yàn)和基本技術(shù)理論,以及社會(huì)設(shè)置的規(guī)則對(duì),設(shè)定評(píng)估體系,充分考慮漏報(bào)率、誤報(bào)率、檢測時(shí)間、支持漏洞類型和漏洞的危害等級(jí)等因素,提升整個(gè)安全漏洞的檢測和修補(bǔ)提供建設(shè)性建議。

5 結(jié)語

智能合約作為區(qū)塊鏈業(yè)務(wù)中重要的功能集成,對(duì)區(qū)塊鏈交易提供了更多的便捷性和高質(zhì)量的服務(wù)業(yè)務(wù)。然而智能合約作為一類程序化模塊存在很多安全性問題,尤其是大量存在的安全漏洞,引起高效的嵌入效能而被帶入到各類區(qū)塊鏈應(yīng)用服務(wù)之中,導(dǎo)致區(qū)塊鏈在交易過程中面臨安全風(fēng)險(xiǎn)。為了解決這些問題,本文在深入分析了智能合約的基本概念的基礎(chǔ)上,進(jìn)一步分析了可能存在的安全漏洞,最后探討了安全漏洞檢測的基本措施,從而為當(dāng)前的智能合約的應(yīng)用以及區(qū)塊鏈技術(shù)的發(fā)展提供技術(shù)參考。

猜你喜歡
安全漏洞合約漏洞
漏洞
安全漏洞太大亞馬遜、沃爾瑪和Target緊急下架這種玩具
玩具世界(2018年6期)2018-08-31 02:36:26
基于安全漏洞掃描的校園網(wǎng)告警系統(tǒng)的開發(fā)與設(shè)計(jì)
三明:“兩票制”堵住加價(jià)漏洞
漏洞在哪兒
高鐵急救應(yīng)補(bǔ)齊三漏洞
安全漏洞Shellshock簡介
河南科技(2014年11期)2014-02-27 14:16:49
合約必守,誰能例外!——對(duì)“情勢變更”制度不可寄于過高期望
NSFOCUS 2010年2月之十大安全漏洞
平泉县| 车致| 澄迈县| 安新县| 桦南县| 普洱| 甘孜县| 曲阜市| 东源县| 怀仁县| 陇南市| 普宁市| 焉耆| 永兴县| 扶沟县| 洛隆县| 山阴县| 芮城县| 喜德县| 长顺县| 鄂州市| 汝阳县| 吉安市| 北京市| 堆龙德庆县| 霍城县| 昭苏县| 凭祥市| 上林县| 西乌珠穆沁旗| 驻马店市| 祁门县| 山东| 阜阳市| 南郑县| 景德镇市| 麟游县| 大安市| 穆棱市| 哈尔滨市| 柳州市|