刷屏的區塊鏈 想知道的都在這里! ——區塊鏈智能合約控制流識別的大規模實驗研究

發布時間 2019-11-01
中共中央政治局10月24日下午就區塊鏈技術發展現狀和趨勢進行第十八次集體學習,會議強調區塊鏈技術的集成應用在新的技術革新和產業變革中起著重要作用,要把區塊鏈作為核心技術自主創新的重要突破口,明確主攻方向,加大投入力度,著力攻克一批關鍵核心技術,加快推動區塊鏈技術和產業創新發展。


多年來,啟明星辰持續關注區塊鏈技術安全問題,在區塊鏈自身安全以及區塊鏈應用安全方面,都有相應的研究和實踐探索。

啟明星辰ADLab聯合電子科技大學計算機學院(網絡空間安全學院)陳廳副教授首次對以太坊區塊鏈智能合約控制流的識別進行了大規模研究。該成果《A Large-Scale Empirical Study on Control FlowIdentification of Smart  Contracts》于2019年發表在中國計算機學會(CCF)推薦的B類學術會議International Symposium on Empirical SoftwareEngineering and Measurement。

該研究分析了當前6個主流的智能合約靜態分析工具,通過對以太坊區塊鏈上已部署的全部合約(約500萬)實施執行跟蹤來評估他們的靜態控制流識別能力。實驗證明,一些典型的問題會導致上述流行工具都無法識別全部的控制流(如不完備的代碼模式)。同時,實驗發現通過執行跟蹤可以有效增強這些工具對控制流的識別。通過在OYENTE中引入執行跟蹤,實現了把靜態控制流分析誤報率降低百分之三十。同時,該研究獲得了最佳論文提名獎。


研究內容有哪些?

研究選擇了以下的六款主流面向字節碼智能合約的分析工具:


上述六款工具中,路徑敏感的工具可能比路徑不敏感的工具發現更多的控制轉移路徑,因為它們不會檢查在實際條件下的路徑可達性。其中OYENTE和MAIAN在處理某些合約時會觸發異常,通過分析發現共有三類原因:惡意無效字節碼、不支持的操作和求解器異常。為了深入比較,修復了這三類導致異常的軟件缺陷。

通過對每個工具進行全部以太坊區塊鏈智能合約的實驗,得出以下結論:


(1)由于采用的技術或者配置不同,所以當前主流工具識別的智能合約控制流數量差別加大;線性反匯編比遞歸反匯編能識別更多控制流,因為遞歸分析在識別到非法轉移目標時就停止工作。


(2)不同分析工具在分析復雜智能合約控制流時能力差異較大,典型原因有路徑爆炸、提前結束條件和不完備的代碼模式。


(3)上述的6款主流分析工具僅針對1.7%的智能合約才能識別出相同的控制流轉移。


(4)合約的復雜度越高,不同分析工具得到一致結果越困難。


為了提升合約分析工具的控制流分析能力,提出了基于執行trace的控制流識別增強。智能合約執行trace的一種獲取方式是通過標準編程接口 web3.debug.traceTransaction(),但該接口需要提供合約執行的交易哈希值。同時,該接口的運行效率很低,通過分析源碼發現其在獲取trace之前需要做運行環境初始化、構建正確狀態和重放交易記錄,加上web3編程接口是RPC調用過程,因此效率難以提升,最終選擇了對以太坊區塊鏈終端進行插樁,因為該終端能執行全部的歷史合約操作。具體來說,通過對JUMP和JUMPI操作進行了插樁,最終得到了6300萬的執行trace。同時,也對這些trace進行了切割,因為合約的執行trace記錄會包括合約內的控制轉移和合約間的控制轉移。通過對上述工具識別的控制流和執行trace獲得的控制流進行了分析,發現執行trace可以提升上述工具的控制流識別能力,尤其是對于MAIAN和Miasm工具,提升能力皆超過百分之八十;即使是最優秀的控制流發現工具Porosity,提升能力也有百分之十。


為了驗證基于執行trace的有效性,選擇了OYENTE工具進行增強實現和驗證,增強的具體算法如下圖所示。


研究結果是什么?

實驗結果表明,執行trace可以有效提升上述工具的智能合約控制流識別能力,能發現這些工具不能發現的控制轉移。 


通過對OYENTE的源碼進行了修改以嵌入增強算法,及對OYENTE能識別的四種合約漏洞進行了實驗,結論見下表。針對交易順序依賴、時間依賴和重入類型的漏洞,增強OYENTE能檢測更多的漏洞。針對未處理異常漏洞,增強OYENTE未能提升檢測能力;對OYENTE進行源碼分析發現,這是因為這類漏洞是直接用合約字節碼掃描來檢測的,與控制流分析無關。


此次針對以太坊區塊鏈智能合約控制流識別的大規模深度研究,取得了多項新的發現。通過插樁以太坊客戶端,收集了全部的智能合約并還原了全部的執行trace。實驗證明,執行trace可以提升當前主流的智能合約分析工具的控制流識別能力,該發現將有助于以太坊用戶、開發者和研究分析人員開展更深入的智能合約研究。

作為信息安全行業領軍企業,啟明星辰堅守初心及自主創新的精神,始終重視對區塊鏈技術安全問題的研究與探索,全力保障用戶對區塊鏈的安全需求。