400-638-8808
|
微信公眾號(hào)








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

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

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

超大郵件 超級(jí)功能

智能反垃圾郵件技術(shù)
易管理 免維護(hù)

微信掃一掃 關(guān)注"天下數(shù)據(jù)"商品一律九折
![]()
搜索"朗玥科技"關(guān)注,了解最新優(yōu)惠

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

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

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