【火線視點(diǎn) 6】復(fù)盤 EOS 安全事件及再議區(qū)塊鏈安全
本文由火幣區(qū)塊鏈研究院出品,作者:袁煜明,胡智威,李慧。
2018年5月29日,360公布了其發(fā)現(xiàn)EOSIO嚴(yán)重漏洞的消息。此新聞及后續(xù)一系列相關(guān)跟進(jìn)事件迅速成為區(qū)塊鏈領(lǐng)域內(nèi)的輿論熱點(diǎn)。隨著越來(lái)越多的聲音與內(nèi)容出現(xiàn),各界對(duì)此次事件也逐漸有了更為清晰的認(rèn)識(shí)。在此有必要從技術(shù)角度對(duì)此次事件進(jìn)行客觀復(fù)盤與分析,并再次對(duì)區(qū)塊鏈安全進(jìn)行探討。
事件回顧
根據(jù)目前網(wǎng)上公開(kāi)資料,包括博客、代碼記錄等,我們對(duì)本次安全事件的技術(shù)過(guò)程進(jìn)行一個(gè)簡(jiǎn)要梳理:
北京時(shí)間5月28日 360公司Vulcan(伏爾甘)團(tuán)隊(duì)聯(lián)系主導(dǎo)EOSIO開(kāi)發(fā)的Daniel Larimer(即bytemaster,以下簡(jiǎn)稱BM)并報(bào)告了發(fā)現(xiàn)的高危安全漏洞情況
5月28日 BM在github的eos項(xiàng)目上新建了一個(gè)需要跟蹤的問(wèn)題(Issue)。同天,該問(wèn)題所描述的bug被修復(fù);該問(wèn)題關(guān)閉
5月29日中午,360公司在其官方微信公眾號(hào)上公布了區(qū)塊鏈平臺(tái)EOSIO的高危安全漏洞的消息
同天晚些時(shí)候,360公司在其公司博客“奇虎360技術(shù)博客”上公布了該漏洞的細(xì)節(jié)內(nèi)容
技術(shù)分析
我們首先從奇虎360技術(shù)博客的報(bào)告“EOS節(jié)點(diǎn)遠(yuǎn)程代碼執(zhí)行漏洞 — EOS智能合約WASM函數(shù)表數(shù)組越界”[1]中來(lái)查看本次漏洞的詳細(xì)技術(shù)內(nèi)容。
根據(jù)報(bào)告所述,在修復(fù)該漏洞的提交
ea89dce21d13d41a22b3512a27be97b4be9df755之前的代碼版本上,我們可以看到在libraries/chain/webassembly/binaryen.cpp文件的76行,有assert用于檢查變量取值情況。但assert一般僅適用于程序編譯構(gòu)建的Debug模式,對(duì)于正式發(fā)布的Release模式通常并不起作用,因此相當(dāng)于沒(méi)有做檢查,導(dǎo)致78行對(duì)數(shù)組的訪問(wèn)存在隱患。
因此在發(fā)現(xiàn)該漏洞后,開(kāi)發(fā)團(tuán)隊(duì)已將assert改為可正常調(diào)用的名為FC_ASSERT的宏定義。
知道了問(wèn)題所在后,我們?cè)賮?lái)看一下編寫(xiě)EOSIO所使用的C++程序的內(nèi)存結(jié)構(gòu)及語(yǔ)言特性。
C++程序的內(nèi)存區(qū)域包括棧區(qū)、堆區(qū)、自由存儲(chǔ)區(qū)、靜態(tài)全局存儲(chǔ)區(qū)、常量區(qū)及代碼區(qū)等。每個(gè)區(qū)域均有其獨(dú)特的作用。同時(shí),C/C++允許程序員通過(guò)指針等方式,對(duì)內(nèi)存進(jìn)行極為自主的控制及使用,并不強(qiáng)制檢查數(shù)組邊界等條件。因?yàn)榘▋?nèi)存管理在內(nèi)的種種極為靈活、可控制底層的語(yǔ)言特性,C/C++憑借其高性能被廣泛使用于對(duì)程序執(zhí)行速度有嚴(yán)格要求的工業(yè)界。但也正是因?yàn)檫@種靈活性,C/C++程序常會(huì)因?yàn)閮?nèi)存管理的復(fù)雜性而出現(xiàn)內(nèi)存泄露、宕機(jī)或內(nèi)存越界等問(wèn)題。這點(diǎn)在大型工程上尤其常見(jiàn)。
圖 1 內(nèi)存問(wèn)題引起程序崩潰示例
原因在于,C++程序指針訪問(wèn)到相應(yīng)內(nèi)存區(qū)域,即有可能對(duì)其進(jìn)行相應(yīng)的操作,所以如果控制不當(dāng),訪問(wèn)到原本的“界限”之外,就會(huì)產(chǎn)生越界的問(wèn)題:如果訪問(wèn)到數(shù)據(jù)區(qū)域,則可能會(huì)引起程序崩潰或讀取、修改到原本不應(yīng)訪問(wèn)到的信息;如果訪問(wèn)到代碼區(qū)域,則可能注入或改變?cè)姓4a。這就是緩沖區(qū)溢出的基本原理。
作為計(jì)算機(jī)及互聯(lián)網(wǎng)上十分常見(jiàn)且潛在影響巨大的攻擊手段,利用緩沖區(qū)溢出進(jìn)行攻擊有記錄的最早一次是發(fā)生在1988年的Morris蠕蟲(chóng)攻擊。據(jù)估計(jì),它一經(jīng)出現(xiàn)便影響了互聯(lián)網(wǎng)上10%的計(jì)算機(jī),造成約10萬(wàn)至100萬(wàn)美元的損失。從其首次出現(xiàn)到今天的30年間,很多著名的攻擊事件都采取了緩沖區(qū)溢出的方式進(jìn)行,其影響也隨著互聯(lián)網(wǎng)的發(fā)展而擴(kuò)大。
回到本次EOSIO的這個(gè)漏洞,根據(jù)360的報(bào)告我們可以看到:當(dāng)檢查代碼失效后,如果offset變量被任意設(shè)置一個(gè)地址,例如0xfffffff,則會(huì)引起segmentation fault的錯(cuò)誤而導(dǎo)致程序崩潰;而如果對(duì)合約進(jìn)行精心設(shè)計(jì),攻擊者可通過(guò)對(duì)內(nèi)存越界寫(xiě)入的方式來(lái)執(zhí)行惡意代碼,正如360報(bào)告中附加的視頻所示。
同時(shí),如果能將風(fēng)險(xiǎn)控制在單機(jī)范圍內(nèi),那對(duì)全局來(lái)說(shuō)影響還是相對(duì)可接受的。但正是由于惡意代碼可以是一個(gè)區(qū)塊鏈上的合約,因此EOSIO將合約打包成區(qū)塊后會(huì)在整個(gè)網(wǎng)絡(luò)中傳播,使得所有節(jié)點(diǎn)均可被此惡意代碼控制,即整個(gè)網(wǎng)絡(luò)都受到致命影響。
構(gòu)建區(qū)塊鏈安全生態(tài)
從本次漏洞結(jié)合近期以太坊ERC20漏洞等安全事件,我們應(yīng)更加認(rèn)識(shí)到《【火線視點(diǎn)3】從ERC20漏洞事件看區(qū)塊鏈安全生態(tài)建設(shè)》中的觀點(diǎn):區(qū)塊鏈安全生態(tài)不僅僅需要項(xiàng)目團(tuán)隊(duì)、開(kāi)發(fā)人員,更需要多方的通力合作。下面主要從項(xiàng)目團(tuán)隊(duì)內(nèi)控、項(xiàng)目生態(tài)激勵(lì)和投資者自我防范這三個(gè)方面去探討區(qū)塊鏈安全生態(tài)的建設(shè)。
1 完善代碼安全審查機(jī)制
回顧ERC20漏洞事件和EOSIO的緩沖區(qū)溢出事件,他們完全都可以通過(guò)有效的代碼安全審查機(jī)制來(lái)避免。以ERC20漏洞為例,經(jīng)過(guò)核查,使用ERC20協(xié)議的項(xiàng)目竟然有20余個(gè)都存在類似的問(wèn)題。
瞬息萬(wàn)變的幣圈確實(shí)發(fā)展的太快,每一個(gè)人都是飛奔著前進(jìn),都趕著寫(xiě)白皮書(shū)、趕著募資、趕著上項(xiàng)目,自然而然就很少有人沉下心來(lái)好好做測(cè)試,好好做安全審查,導(dǎo)致漏洞頻出、安全事件頻發(fā)。
區(qū)塊鏈作為一個(gè)分布式的去中心化系統(tǒng),代碼一旦部署將很難更新,需通過(guò)硬分叉或者軟分叉來(lái)對(duì)代碼進(jìn)行升級(jí),成本不可謂不高。THE DAO事件則直接將以太坊分裂成為ETH和ETC,是對(duì)以太坊生態(tài)的重大破壞。所以在項(xiàng)目發(fā)布之前,充足的測(cè)試和代碼審核變得十分關(guān)鍵和必要。比如多人代碼審核、內(nèi)部測(cè)評(píng)小組、外部專家評(píng)測(cè)等。
多人代碼審核
由于一個(gè)人的能力和認(rèn)知總是有限的,所以對(duì)于同一段代碼,不同的人將會(huì)發(fā)現(xiàn)不同的問(wèn)題,多人代碼審核機(jī)制能使得代碼的BUG率和漏洞率大大降低。這種方式也是軟件行業(yè)降低錯(cuò)誤率最為通用和有效的方式之一。
內(nèi)部測(cè)評(píng)小組
項(xiàng)目組建立內(nèi)部安全測(cè)評(píng)小組,梳理業(yè)界常見(jiàn)的安全問(wèn)題清單,并逐一對(duì)發(fā)布的項(xiàng)目進(jìn)行安全審計(jì),通過(guò)簡(jiǎn)單的梳理和測(cè)評(píng)便能將常見(jiàn)的基本漏洞一掃而空,大大增加了系統(tǒng)的可靠性。
外部專家評(píng)測(cè)
對(duì)于某些新型的,特殊性的漏洞,項(xiàng)目組可以借助于例如第三方評(píng)測(cè)機(jī)構(gòu)等外部安全專家的幫助進(jìn)行梳理和測(cè)評(píng),爭(zhēng)取在項(xiàng)目發(fā)布前將安全隱患降到最低程度。
2 發(fā)展白帽黑客激勵(lì)機(jī)制
世界無(wú)非兩極,一陰一陽(yáng)、一黑一白、一正一邪,有黑客肆意破壞,就有白帽黑客維護(hù)世界正義。隨著各類數(shù)字資產(chǎn)的市值越來(lái)越高,黑客們從中套取的收益也越來(lái)越客觀,相比之下,白帽黑客們卻窮酸的多。
這種巨大的收入差導(dǎo)致越來(lái)越多人加入的黑客的陣營(yíng),而白帽黑客們則為數(shù)稀少。通過(guò)激勵(lì)白帽黑客來(lái)抑制或者是平衡黑客越來(lái)越肆無(wú)忌憚的破壞行為或許將成為一種有效的手段。
那么如何激勵(lì)白帽黑客們?yōu)槠脚_(tái)做出貢獻(xiàn)呢?我想主要可以從兩方面入手,一是物質(zhì)激勵(lì),二是精神激勵(lì)。
物質(zhì)激勵(lì)
對(duì)于發(fā)行通證的公鏈來(lái)說(shuō),最實(shí)在的物質(zhì)激勵(lì)自然就是通證。它既是區(qū)塊鏈平臺(tái)的價(jià)值載體,也是平臺(tái)生態(tài)治理的重要手段。比如COSMOS,為了鼓勵(lì)發(fā)現(xiàn)并及時(shí)報(bào)告缺陷,Cosmos Hub允許黑客通過(guò)ReportHackTx 交易來(lái)“邀功”,主要就是說(shuō)明,“這個(gè)節(jié)點(diǎn)已被攻擊,請(qǐng)將獎(jiǎng)金發(fā)到這個(gè)地址”。黑客可以收到擊中資產(chǎn)的5%作為賞金。
除此之外我們也可以通過(guò)設(shè)立黑客獎(jiǎng)金池、黑客基金或者項(xiàng)目特別顧問(wèn)等方式來(lái)激勵(lì)白帽黑客主動(dòng)挖掘漏洞,幫助平臺(tái)持久安全地運(yùn)行。
精神激勵(lì)
除了物質(zhì)獎(jiǎng)勵(lì),對(duì)于Hacker這一非常另類、有性格的群體來(lái)說(shuō),精神上的激勵(lì)或許是更持久有效的方式。對(duì)于每一個(gè)為平臺(tái)或者項(xiàng)目作出貢獻(xiàn)的黑客來(lái)說(shuō),項(xiàng)目組、基金會(huì)或者社區(qū)都應(yīng)將給與其相應(yīng)的榮譽(yù)獎(jiǎng)勵(lì)。可以是排行榜、貢獻(xiàn)值亦或是某種稀缺頭銜等等,使其不僅能被社區(qū)其它成員知曉,更能明顯區(qū)別于普通會(huì)員,增強(qiáng)其在社區(qū)的存在感、參與感和榮譽(yù)感。更可考慮用較為“極客”的方式進(jìn)行精神激勵(lì),例如將白帽黑客對(duì)平臺(tái)、社區(qū)的貢獻(xiàn)記錄在區(qū)塊鏈上,形成更有針對(duì)性的生態(tài)系統(tǒng)良性循環(huán)。
您可能也感興趣:
為您推薦
諾基亞/堅(jiān)果/華為對(duì)決全面屏 2K價(jià)位誰(shuí)更值得買
廣州日?qǐng)?bào):創(chuàng)新讓非遺更好傳承
諾基亞7 Plus拆機(jī)測(cè)評(píng) 這做工照樣砸核桃
更多
- 中國(guó)企業(yè)人工智能產(chǎn)品驚艷法國(guó)科技展
- 武漢造純電動(dòng)公交車北京開(kāi)跑 踐行綠色交通經(jīng)營(yíng)理念
- 溧陽(yáng)市首個(gè)生物質(zhì)秸稈直燃熱電項(xiàng)目通過(guò)核準(zhǔn) 社會(huì)效益良好
- 分析報(bào)告:2017年我國(guó)創(chuàng)新驅(qū)動(dòng)產(chǎn)業(yè)發(fā)展新動(dòng)力已經(jīng)形成
- 創(chuàng)新企業(yè)登陸A股進(jìn)入預(yù)熱期 投資者準(zhǔn)入制度或較寬松
- 國(guó)資委將打造一批青年創(chuàng)新創(chuàng)業(yè)平臺(tái)
- 上海南通簽署科技創(chuàng)新戰(zhàn)略合作協(xié)議
- 華麗志全球時(shí)尚創(chuàng)新與投資論壇在京舉辦
更多
- 東莞銀行十年再?zèng)_IPO 股權(quán)分散成為上市一大障礙
- 易綱:加強(qiáng)投資者教育和保護(hù) 天上掉餡餅
- BAT巨頭入股富士康 20家戰(zhàn)略投資者出爐
- BAT等巨頭擲重金布局互聯(lián)網(wǎng)教育 明年市場(chǎng)規(guī)模將達(dá)3718億元
- 證監(jiān)會(huì):北京中視電傳傳媒IPO上會(huì)被否
- 阿里、菜鳥(niǎo)等戰(zhàn)略投資中通快遞13.8億美元 持股10%
- 中國(guó)PPP基金正式開(kāi)展記賬式國(guó)債投資
- 富士康開(kāi)始3年來(lái)最大規(guī)模的IPO 募資271億元
排行
- 荔枝微課成立黨支部,激發(fā)爭(zhēng)先創(chuàng)優(yōu)新動(dòng)力
- 宜人貸發(fā)布2017年第四季度及全年財(cái)報(bào) 科技驅(qū)動(dòng)持續(xù)高質(zhì)量發(fā)展
- 時(shí)刻保持德國(guó)血統(tǒng)的寶沃汽車
- 市場(chǎng)新選擇,寶沃汽車再添新寵
- 微盟啟動(dòng)小程序“颶風(fēng)行動(dòng)” 助全國(guó)50城企業(yè)商戶 搶占小程...
- 銷量如此之狂,除了寶沃還會(huì)有誰(shuí)
- 成品油調(diào)價(jià)窗口今日開(kāi)啟 或迎2018年首次擱淺
- 毛里求斯《挑戰(zhàn)報(bào)》記者:“我對(duì)中國(guó)治理模式很欽佩”
- 花下重門 《古劍奇譚三》城鎮(zhèn)場(chǎng)景鄢陵曝光
- 完美軍民融合"組合拳",制片人劇透《紅海行動(dòng)》幕后
今日要聞
- 【火線視點(diǎn) 6】復(fù)盤 EOS 安全事件及再議區(qū)塊鏈安全
- 【超越白皮書(shū) 2】EOS 主網(wǎng)上線前夕的實(shí)測(cè)分析與技術(shù)建議
- 荔枝微課成立黨支部,激發(fā)爭(zhēng)先創(chuàng)優(yōu)新動(dòng)力
- 荔枝微課榮獲第三屆中國(guó)“互聯(lián)網(wǎng)+”大賽金獎(jiǎng)
- 荔枝微課助力第四屆中國(guó)“互聯(lián)網(wǎng)+”大賽,推進(jìn)人才發(fā)展新格局
- EKT公鏈上線火幣,區(qū)塊鏈的多鏈平行獲得各方認(rèn)可
- 修羅魔族圣女龍?jiān)聝海 堆乐磷稹仿?huà)版女主人設(shè)來(lái)啦
- 中通快運(yùn)A輪融資超1億美金,騰達(dá)擔(dān)任獨(dú)家財(cái)務(wù)顧問(wèn)
- 火幣主力指數(shù)化產(chǎn)品HB10上線 對(duì)用戶而言利好不少
- 重磅消息 火幣HADAX項(xiàng)目轉(zhuǎn)板火幣PRO又多一途徑