400-638-8808
|
微信公眾號




穩(wěn)定可靠 永不間斷

海外收發(fā) 暢通無阻

協(xié)同辦公 資源管理

超大郵件 超級功能

智能反垃圾郵件技術
易管理 免維護

兩年前,在我們開始討論區(qū)塊鏈安全的時候,當時我們手頭上幾乎沒有任何可以直接使用的工具。我們既沒有靜態(tài)分析工具和模糊測試工具,也沒有任何針對以太坊的逆向分析工具,我們什么都沒有。

因此,我們投入了大量的時間和精力并利用專業(yè)知識創(chuàng)造出了我們所需要的東西,而且我們還進行了無數(shù)次測試以完善我們的成果。今天,我們很高興可以和大家分享這些工具,希望它們能夠幫助提升以太坊的安全水平。
開發(fā)工具
為了構(gòu)建安全的以太坊代碼庫,我們首先要熟悉一些常見的錯誤實踐,并避免再犯這些錯誤。其次,我們還要對新添加的代碼進行各種靜態(tài)分析,對新添加的功能進行模糊測試,并通過符號執(zhí)行來驗證最終產(chǎn)品的有效性及安全性。
1. Not So Smart Contracts
這個名叫“NotSo Smart Contracts”的代碼庫中包含了很多常見的以太坊智能合約漏洞,其中包含了真實的代碼。查看這個代碼庫之后,你將會了解并熟悉一些有可能會出現(xiàn)的安全問題。
這個代碼庫為每一種類型的漏洞都提供了一個子目錄進行存儲,例如整形溢出、可重入性(注:可重入與遞歸概念相似)以及 未保護的功能等等。每一個子目錄中都包含了相關的readme文件以及真實場景下的合約漏洞樣本,而且有些還提供了漏洞利用代碼。
演示視頻:https://asciinema.org/a/6W3GSHeisBrohMRqrhbjqg08v
我們可以利用這些樣本和測試用例來測試我們所開發(fā)的以太坊漏洞挖掘工具,并評估工具的有效性。需要注意的是,大家一定要在充分了解漏洞細節(jié)之后再進行測試,否則可能會引起一些嚴重后果。
2. Slither
Slither包含了一整套針對Solidity(以太坊智能合約腳本語言)的專用靜態(tài)分析工具,它可以用來檢測可重用性、構(gòu)造函數(shù)和方法訪問等編碼中的常見錯誤。Slither目前只提供給那些跟我們有合作的公司使用,但如果你感興趣的話,你也可以通過API來監(jiān)聽或訪問相關功能【傳送門】。
演示視頻:https://asciinema.org/a/Guu4k6vxgF9C17z3rwhbECCK0
Slither的運行非常簡單:
$ slither.py contract.sol
運行之后,Slither將會把所有尋找到的漏洞信息輸出給你。
3. Echidna
Echidna采用了下一代智能模糊測試技術來對EVM字節(jié)碼進行檢測。它提供了簡單且覆蓋率高(80%以上)的單元測試用例,你可以在完成了某項功能的開發(fā)之后,使用Echidna測試你的代碼是否存在安全漏洞。
演示視頻:https://asciinema.org/a/zfeDxWagBIadulMU5mlqYdBGF
Echidna的使用也非常簡單:
(1) 向你的代碼中添加Echidna測試用力(參考樣例);
(2) 運行命令“./echidna-test contract.sol”;
(3) 查看輸出信息;
如果你還想進行更高級的安全分析(比如說抽象狀態(tài)機測試),Echidna同樣可以做到。
4. Manticore
Manticore使用了符號執(zhí)行來模擬針對EVM字節(jié)碼的復雜的多合約以及多重交易攻擊。當你的應用程序開發(fā)完成之后,你可以使用Manticore來檢測你程序中的危險狀態(tài),Manticore可以枚舉出合約的執(zhí)行狀態(tài),并驗證關鍵功能的安全性。
演示視頻:https://asciinema.org/a/MCIMEImS8wIeHHvWfxiNKMc67
如果你的合約不需要初始化參數(shù),那你就可以使用命令行工具來查看智能合約的所有執(zhí)行路徑了:
manticore contract.sol --contract ContractName --txaccount [attacker|owner]
Manticore還可以生成一份包含了所有可到達狀態(tài)的列表,以及觸發(fā)這些路徑的輸出參數(shù)。而且它還可以標記處安全問題的類型,比如說整形溢出或者未初始化內(nèi)存等等。
你還可以使用Manticore API來檢查更加高級的合約:
(1) 使用正確值初始化你的合約;
(2) 定義交易信息來查看潛在的狀態(tài);
(3) 檢查輸出列表以獲取狀態(tài)信息

逆向分析工具
智能合約開發(fā)完成之后,或者說你想分析其他人的代碼,你可以使用逆向工具來實現(xiàn)。
1. EVM操作碼數(shù)據(jù)庫
當你在使用Remix調(diào)試器檢查代碼時,或者對合約二進制代碼進行逆向分析時,你可能需要查看EVM指令的細節(jié)信息。這里提供了一份包含了完整EVM操作碼的列表,以及相關的實現(xiàn)細節(jié)。我們覺得這樣可以幫大家節(jié)省很多時間,感興趣的朋友可以點擊【這里】獲取。
2. Ethersplay
Ethersplay是一款擁有圖形界面的EVM反匯編工具,它可以進行方法恢復、動態(tài)跳轉(zhuǎn)計算、源代碼匹配和二進制代碼比較等等。用戶可以使用Ethersplay來分析和調(diào)試已編譯合約或已部署在區(qū)塊鏈中的合約。
Ethersplay的輸入數(shù)據(jù)為EVM字節(jié)碼(ASCII十六進制編碼或原始二進制格式),這里需要選擇相應的test.evm和test.bytecode測試用例。在Binary Ninja(Ethersplay插件)中打開test.evm文件之后,它會自動對文件進行分析,并識別代碼中的函數(shù),然后生成一份控制流程圖。
3. IDA-EVM
IDA-EVM是一款針對IDA Pro的圖形化EVM反匯編工具,可以進行函數(shù)恢復、動態(tài)跳轉(zhuǎn)計算、代碼簽名和二進制代碼比對等等。IDA-EVM允許我們在沒有源代碼的情況下對智能合約進行逆向工程分析。工具的使用也很簡單,按照readme的安裝步驟進行安裝,然后在IDA中打開一份.evm或.bytecode文件即可。
4. Rattle
Rattle是一款EVM靜態(tài)分析工具,它可以直接搜索EVM字節(jié)碼中的安全漏洞。Rattle目前只提供給那些跟我們有合作的公司使用,但如果你感興趣的話,你也可以通過API來監(jiān)聽或訪問相關功能【傳送門】。
演示視頻:https://asciinema.org/a/py5RpGwdLqOZtsfMt864xO4ZT
后話
大家在使用過這些工具之后,可以到相應的代碼庫中提交問題或參與功能的更新。除此之外,大家也可以去Empire Hacking Slack的#ethereum專區(qū)進行討論。
* 參考來源:trailofbits,F(xiàn)B小編Alpha_h4ck編譯
天下數(shù)據(jù)已為多家企業(yè)提供區(qū)塊鏈服務器租用托管解決方案,為他們的區(qū)塊鏈服務器支持!具體詳詢在線客服!
產(chǎn)品與服務
香港服務器 香港高防服務器 美國服務器 韓國服務器 新加坡服務器 日本服務器 臺灣服務器云服務器
香港云主機 美國云主機 韓國云主機 新加坡云主機 臺灣云主機 日本云主機 德國云主機 全球云主機高防專線
海外高防IP 海外無限防御 SSL證書 高防CDN套餐 全球節(jié)點定制 全球?qū)>GPLC關于我們
關于天下數(shù)據(jù) 數(shù)據(jù)招商加盟 天下數(shù)據(jù)合作伙伴 天下數(shù)據(jù)團隊建設 加入天下數(shù)據(jù) 媒體報道 榮譽資質(zhì) 付款方式關注我們
微信公眾賬號
新浪微博
天下數(shù)據(jù)手機站 關于天下數(shù)據(jù) 聯(lián)系我們 誠聘英才 付款方式 幫助中心 網(wǎng)站備案 解決方案 域名注冊 網(wǎng)站地圖
天下數(shù)據(jù)18年專注海外香港服務器、美國服務器、海外云主機、海外vps主機租用托管以及服務器解決方案-做天下最好的IDC服務商
《中華人民共和國增值電信業(yè)務經(jīng)營許可證》 ISP證:粵ICP備07026347號
朗信天下發(fā)展有限公司(控股)深圳市朗玥科技有限公司(運營)聯(lián)合版權
深圳總部:中國.深圳市南山區(qū)深圳國際創(chuàng)新谷6棟B座10層 香港總部:香港上環(huán)蘇杭街49-51號建安商業(yè)大廈7樓
7×24小時服務熱線:4006388808香港服務電話:+852 67031102
本網(wǎng)站的域名注冊業(yè)務代理北京新網(wǎng)數(shù)碼信息技術有限公司的產(chǎn)品