




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
0引言中本聰提出比特幣使用的區塊鏈技術實際上是一種特殊的電子賬本,賬本中公開記錄著從區塊鏈建立之初的每一條轉帳記錄。這是一種去中心化的賬本,其完全不依賴中心監管機構的工作,能夠完全獨立的完成交易的發生和確認,降低了由于單一節點風險引起的安全問題。事實上,由于區塊鏈的用戶、買賣雙方實際是互相不信任的節點,交易雙方均不信任對方能夠單獨正確記錄交易,則衍生出了基于運算能力保證的確認機制,用戶、交易、礦工三者構成了基本的加密貨幣交易。加密貨幣本質上是區塊鏈技術的一個小的應用方面,此外,依托于區塊鏈中記錄信息的不可更改的特性,我們可以在不依賴第三方公證機構的前提下,永久性記錄用戶雙方發生的一切交易、操作、合同等權威性文件、信息。而傳統的公證技術往往依賴第三方權威機構的參與,其中第三方機構公信力決定了公正文件的可信度。而基于區塊鏈智能合約的新一代合同、能夠擺脫對第三方機構權威的依賴,在增強合約、信息可信度的同時,能夠減少實際公證過程的人力物力財力的消耗。以太坊提供給開發者和用戶一套能夠構建去中心化應用的完整技術平臺。比特幣提供了完整的端到端加密交易系統,使用者能夠使用其完成完整的交易。以太坊相較于比特幣來說,除了提供傳統的類似于比特幣的交易記錄能力——以太幣外,同時能夠用于創建去中心化的程序、自治組織和智能合約。至今,以太坊已經在金融、物聯網、智能電網、游戲開發、智能合同等多領域被廣泛應用。智能合約是以太坊應用平臺的核心,本質上是以公開的形式隨著區塊鏈一同部署在應用網絡之中的一段程序代碼。能夠根據設定的規則,完成決策、資料儲存以及以太幣的傳輸。智能合約提供驗證及執行智能合約本身所設定的條件,對整個網絡的公開性與透明性,允許在沒有第三方的情況下完成可信交易,同時這些交易具有高度的匿名性。盡管智能合約設計本身目的在于減少可能存在的風險問題。但是,類似于以太坊的智能合約仍存在設計上的缺陷,攻擊者能夠利用設計漏洞,對其進行攻擊,導致大量經濟損失。例如,以太坊中最大規模的一次攻擊致使整個區塊鏈進行了版本回退,降低了人們對智能合約不可逆性質的信任。本文針對智能合約以及區塊鏈技術的攻擊進行分類與介紹,分析至今所進行的智能合約弱點檢測技術,提供合約部署之前的安全檢查手段,同時提出了智能合約安全研究的未來可能方向。1問題與挑戰智能合約存在的安全隱患主要可以被分為四類:惡意軟件傳播、共識機制缺陷、智能合約漏洞和用戶欺詐行為。本節針對每類安全隱患展開了具體介紹。1.1惡意軟件傳播惡意軟件為攻擊者開發,通過網絡傳播,在用戶端運行,目的是盜取用戶信息或者進行詐騙,其可以偽裝成正常的網頁頁面、郵件等形式,騙取用戶下載之后,干預用于在本終端上進行的交易行為。一種常見的形式是將用戶數據劫持到剛剛產生的硬分支上,要求用戶與該分支進行同步,這樣攻擊者就能夠在該分之上偽造交易記錄,騙取用戶的所有貨幣。另外攻擊者還常采取加密劫持、通信攻擊等技術誘導礦工處理錯誤分支,從而對自己偽造的數據進行區塊驗證。此外還有很多惡意軟件使用區塊鏈技術幫助自身的傳播,他們不對區塊鏈本身進行攻擊,而是使用區塊鏈的廣播特性,復制、傳播自己的拷貝。K-ary惡意軟件是一種利用區塊鏈技術的惡意軟件,通過將惡意程序的指令分成單獨的區塊,每個子程序僅包括一部分代碼,偽裝成正常的軟件,進而躲避現存的惡意軟件檢測技術。Glupteba利用了區塊鏈進行自身的復制和更新,能夠建立分散的將是網絡。這些惡意軟件還能夠竊取用戶的用戶名、密碼、Cookie等信息,從而造成更大的用戶數據泄露問題。1.2共識機制缺陷比特幣與以太坊最早使用的共識機制為工作量證明(ProofofWork,PoW),依賴散列值函數來確保數據的正確性,由分散在各地的計算機,通過計算找到對應區塊的猜測值,獲取該區塊的打包權,進而獲得區塊獎勵。攻擊者可以通過對該機制的攻擊獲得區塊鏈的完整控制權,可以控制交易記錄的記錄,甚至完全控制該加密貨幣的價格。常見的攻擊手段包括51%攻擊、自私挖礦以及34%攻擊。PoW假定整個區塊鏈網絡中至少存在50%的誠信節點,如果單一節點控制超過51%的計算能力,就能控制整個區塊鏈網。女巫攻擊通過在網絡中創建大量的無效節點,消除冗余備份的作用,當攻擊者創造足夠多的虛假身份,其可以以多數票控制整個區塊網絡,實現雙重花費攻擊。日蝕攻擊通過將區塊鏈網絡分割,進而在子網路中高于51%的計算能力,分別在兩個網絡中進行51%攻擊。此外,BGP劫持通過英特網路由本身的特性,攔截比特幣流量,通過干擾關鍵的比特幣消息,減緩廣播的傳播速度,進而攻擊比特幣網絡。1.3智能合約漏洞區塊鏈技術普遍采用智能合約作為區塊自動化運行的機制,不同的區塊鏈擁有自行設計的智能合約,盡管每個合約提出時都不同程度的強調了自身的完備性、隱私性與安全性。其中由于合約設計的問題,常常可以通過對合約本身的分析進而發現該區塊鏈的漏洞。智能合約應用類似于運行在區塊鏈上的網絡應用,如網絡應用一樣,如果沒有正確處理錯誤或者完全沒有處理意外的錯誤,會導致整個網絡受到巨大的影響。例如,TheDAO攻擊利用了Solidity中的扣除與轉帳的順序錯誤,多次調用了轉帳函數,而扣除函數始終沒有調用,導致損失了六千萬美元,以太坊應用均因代碼設計缺陷遭受了基于智能合約漏洞的攻擊。1.4用戶欺詐行為比特幣要求至少交易在6個區塊之后才能完全被確認,但是面對快速支付,如果不能在短時間內對交易進行確認,則交易者可以利用這一漏洞,欺騙賣家先支付貨物,同時短時間內再次執行相同金額的操作。對于礦工來說,只會打包其中的一條記錄,這樣,對于賣家來說在交易最終確認之前就已經支付了雙份的貨物,但是最終只能收到第二條交易的交易費用。2研究現狀分析2.1常見攻擊手段本節我們對可能存在的智能合約攻擊技術進行了介紹,這些可能存在的攻擊手段會使智能合約仍然正常運行,導致錯誤檢測變得尤為困難,因此這些攻擊手段會對區塊鏈造成嚴重的損害。2.1.1重入攻擊以太坊智能合約設計時,提供了調用外部其他合約的能力。合約通常也是處理以太幣,因此會將這一部分以太幣通過外部的合約處理,以太幣發送給外部用戶地址,調用外部合約。這些外部調用可能被攻擊者劫持,迫使合約進一步執行代碼,通過回調函數再次調用回調函數本身。這一過程實現了重新進入合約,在余額檢查之前重復執行回調函數。攻擊者可以發起單次重入和多次重入攻擊,通過攻擊者設定的特殊函數完成目標任務。以太坊中著名的TheDAO事件即通過重入攻擊實現,最終導致六千萬美元的以太幣被盜,以太坊社區最終采取硬分支以太坊區塊鏈,所有的資金被恢復到攻擊進行之前。2.1.2算法上下溢出這一漏洞主要是以太坊虛擬機(EVM)為整數制定了固定大小的整數類型。當輸入數據超過范圍且沒有進行檢查時,就會導致溢出發生。攻擊者可以利用這一漏洞,允許攻擊者濫用代碼并創建意外的邏輯流程,允許攻擊者無視原本的邏輯判斷,獲得用戶的以太幣、Token等私密信息。2.1.3默認可見性Solidity中的函數具有可見性說明符,決定了一個函數是否能夠由用戶或其他的派生智能合約在外部調用、只允許內部調用或只允許外部調用。默認的函數可見默認為puliic,如果沒有正確的隱藏有關合約余額更改的函數,則攻擊者可以直接調用該函數竊取合約中的貨幣。由于沒有對初始化函數制定可見性,導致攻擊者能夠在部署的合約上調用這些初始化函數,并將所有權重置為攻擊者,這樣攻擊者就可以盜取錢包中的所有以太幣。在ParityMultiSigWallet受到的一次攻擊中,價值約3100萬美元的以太幣被盜。2.1.4短地址攻擊短地址攻擊遠離同樣是因為以太坊虛擬機(EVM)的設計問題。ERC20標準中,transfer函數對于短地址會從轉帳金額中取高位的0來補充,轉帳金額同時會在地位補上移走的0,等效于轉帳金額左移翻倍。攻擊者可以通過不填寫轉帳地址末尾的0完成短地址攻擊,這是一種由于未檢驗用戶輸入導致的合約漏洞。2.1.5時間戳修改區塊鏈中,時間戳存在著很多的用途,包括生成隨機數、鎖定一段時間的資金,以及各種給予時間變更的條件語句,如果區塊鏈中的礦工能夠調整時間戳,可以發起對交易者不平等的攻擊。一方面,礦工可以通過調整時間戳,產生特定需求的隨機數,另外,礦工可以依靠時間的控制,在某些以太坊程序操縱獲勝機制,進而損害其他玩家利益。在GovernMental中,合約會在一輪內支付給最后一個加入的玩家,這里限制玩家至少需要加入一分鐘,如果礦工能夠調整時間戳,顯示玩家已經加入了一分鐘,則礦工可以限制快速滿足游戲要求。2.2防御手段及其局限性大部分以太坊智能合約出現問題的本質是智能合約本身的編寫存在嚴重漏洞,其中包括不正確的邏輯關系、未驗證的輸入行為以及很多未處理的錯誤類型。這些都會導致智能合約在運行過程中,被攻擊者利用,進而影響智能合約的正常運行。本節介紹了多種智能合約審計手段,并對其適用點以及不足進行了分析。2.2.1SlitherSlither是一種用于智能合約的靜態分析框架,用于提供有關以太坊智能合約的有關信息。通過將Solidity智能合約轉換成一種稱為SlithIR的中間表示來工作,Slither能夠獲得智能合約的繼承圖、控制流圖,通過預定義的分析列表來對SlithIR進行漏洞分析。能夠自動的進行程序分析、數據流和污點追蹤,主要可以應用于自動漏洞檢測、自動優化檢測、輔助用戶理解智能合約以及協助代碼審查。但是Slither缺乏形式語義,限制了執行更詳細的安全分析,不能準確的確定類似gas計算等低級信息。此外如果安全代碼不能夠吻合外部調用時,掃描進程會被終止。2.2.2MythriMythri是一種開源工具,利用符號執行技術來確定智能合約中可能存在的錯誤。其安全分析方法為檢查在以太坊虛擬機中執行的字節碼。當發現程序中的缺陷時,通過輸入的記錄分析確定可能存在的原因。能夠幫助推斷存在的漏洞并幫助減少利用漏洞的可能。盡管Mythri是一種啟發式檢測技術,在安全性分析中具有很高的準確度,但是其仍具有一定的局限性。在執行污點分析的時候,不能夠跨越內存區域的限制,如果參數調用方式為引用式,這種限制會更加嚴重。2.2.3OyenteOyente是一種符號執行工具,能夠直接與以太坊虛擬機一起使用,而無需訪問高級語言形式。其不僅可以檢測不安全的錯誤,同時能夠分析每條代碼的實際執行路徑。Oyente對19,366個智能合約進行分析,發現其中8,833個智能合約均存在漏洞問題。Oyente只能夠檢測20.2%的ParityWallet攻擊,無法有效的記錄TOD漏洞,僅能夠防御諸如重入攻擊和時間戳控制的漏洞。2.2.4ManticoreManticore是一種Solidity審計手段,能夠對智能合約進行符號分析,自動產生用于漏洞分析的特定輸入、記錄指令級實現過程,并通過PythonAPI提供對其分析引擎的訪問,對二進制文件和以太坊智能合約進行分析,用戶通過API自定義分析內容。Manticore能防御重入攻擊和TX.origin濫用,但是不能檢測時間戳控制問題。它需要針對每一種漏洞生成對應的攻擊分析,因此它的運行速度較慢。2.2.5SecruifySecruify是一種智能合約安全分析工具。能夠自動化的分析證明給定智能合約是否是安全的。Secruity主要包括兩個步驟,首先分析智能合約的依賴關系圖,從中分析精確的語義信息,然后檢查特定的用于計算資產擁有者的代碼模式,據此給出智能合約的安全性分析結果。與Oyente和Mythril對比來說,Securify利用靜態分析來分析智能合約的每條路徑。Secruify不包含數值分析,無法識別智能合約中可能存在的溢出問題。2.2.6SmartCheckSmartCheck是一種能夠檢測Solidity代碼中漏洞的一種可拓展靜態分析工具。其通過將源代碼轉換成基于XML的中間表示形式,并根據XPath模式,分析元素之間的關聯關系,進而分析程序漏洞。除了能夠檢測可能存在的漏洞,SmartCheck同時能解釋漏洞造成的原因并給出修改建議。SmartCheck無法檢測到一些只能由污點分析或者手動分析處理的嚴重程序錯誤,能夠識別智能合約中低風險的問題包括錯誤編譯器版本、不正確的樣式、冗余代碼等問題。同時,也有分析指出SmartCheck無法分析重入攻擊和自殺合同等問題。3未來研究方向智能合約中存在的主要問題來源均為Solidity程序語言以及智能合約開發者未能考慮到所有的漏洞情況。早期Solidity存在著很多的安全問題,包括未經檢查的函數回調、溢出未檢查以及時間戳修改設計等問題。實際在智能合約的設計過程中,需要設計者充分考慮可能存在于合約代碼中的執行漏洞,對錯誤進行完善的錯誤處理,并對合約本身執行相關的漏洞分析處理。但根本上應該是Solidity自身進行一定的迭代,從底層對可能發生的錯誤進行處理,而不應該將這些錯誤直接暴露給合約設計者。同時,應該有更多針對新漏洞的分析軟件,通過靜態、動態代碼分析,捕獲出現的風險問題,及時給予合約開發者調整修改的建議。另外可以考慮一種事實的合約保護處理方式,對常見的、危害大的漏洞增加新一層接口,使用這層接口首先對輸入輸出數據進行過濾,之后再輸入給底層的智能合約進行合約的處理工作。這樣可以實現動態過濾同時能夠在不更改底層合約的情況下,完成對用戶的保護,還可以根據新風險的出現實時調整過濾手段。既然智能合約擁有傳統合約所不具有的優點,也應對智能合約應用前景進行研究,提早對可能存在的應用場景進行分析,就可以在實際部署之前,對該應用角度進行安
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年高中地理上學期第4周 晨昏線、地方時教學設計 湘教版必修1
- 23 祖先的搖籃 教學設計-2024-2025學年統編版語文二年級下冊
- Module 9 Unit 2 Happy birthday (教學設計) -2024-2025學年外研版(一起)英語一年級上冊
- 2023七年級數學上冊 第五章 一元一次方程2 求解一元一次方程第3課時 解含分母的一元一次方程教學設計 (新版)北師大版
- Unit 4 My Favourite Subject Section A 1a~Pronunciation教學設計 2024-2025學年人教版英語七年級上冊
- 《9的乘法口訣》(教學設計)-2024-2025學年二年級上冊數學蘇教版
- 2024秋八年級數學上冊 第十五章 分式15.3 分式方程 2解分式方程教學設計(新版)新人教版
- 《乒乓變奏曲》(教案)-2023-2024學年人教版(2012)音樂二年級下冊
- Unit2 English and Chinese Get started (教學設計)-2024-2025學年教科版(2024)英語三年級上冊
- 茶道養生企業創業
- 【道法】做自強不息的中國人課件+-2024-2025學年統編版道德與法治七年級下冊
- 【道法】人生當自強課件-2024-2025學年統編版道德與法治七年級下冊
- 汽車維修質量保證制度
- 湖北省部分高中聯考協作體2023-2024學年高二下學期期中考試物理試卷(含答案)
- 外研版(三起)(2024)三年級下冊英語Unit 3 單元測試卷(含答案)
- 2024年廣州市衛生健康系統招聘“優才計劃”考試真題
- 重點營業線施工方案
- 餐飲店菜品成本計算表
- 《水土保持監測技術規范SLT 277-2024》知識培訓
- 2025年江蘇南京事業單位招聘(787人)高頻重點模擬試卷提升(共500題附帶答案詳解)
- 檔案管理制度培訓宣貫
評論
0/150
提交評論