0
本文作者: 郭佳 | 2018-04-26 21:06 |
幣圈這幾天被黑客攻擊搞的人心惶惶。
先是4月22日,美蜜幣(BEC)在短短半小時(shí)內(nèi),從0.32美元暴跌到0.024美元,跌落了92.5%。OKEx緊急發(fā)布公告:暫停BEC的交易和提現(xiàn),重新開(kāi)放時(shí)間“另行通知”。
業(yè)界傳聞,此次 OKEx 下架親兒子BEC,是因?yàn)樵摯鷰藕霞s存在溢出漏洞,攻擊者可以利用漏洞批量轉(zhuǎn)賬,無(wú)限制生成代幣。
這相當(dāng)于,黑客針對(duì)某幣種的漏洞,可以自己造一臺(tái)印鈔機(jī),想印多少印多少。如未有效制止,“韭菜”們只能眼睜睜地看著自己手中的幣貶值到一文不值。
還沒(méi)等大伙緩過(guò)神來(lái),4月25日,又一幣種 SMT 也被類似的溢出漏洞整垮。
據(jù)火幣 Pro 公告,SmartMesh(SMT) 項(xiàng)目方反饋 4 月 25 日凌晨發(fā)現(xiàn)其交易存在異常問(wèn)題,經(jīng)初步排查,SMT 的以太坊智能合約存在漏洞。受此影響,火幣 Pro 目前暫停所有幣種的充提幣業(yè)務(wù)。
首先,我們來(lái)了解一下溢出漏洞。
小時(shí)候我們剛剛開(kāi)始學(xué)加法時(shí),總喜歡掰著手指頭數(shù),如果是10以內(nèi)的,比如算3+3=6,4+5=9時(shí),很好辦,可以正確的算出來(lái)。
有天,老師突然讓他們算6+5等于多少,這時(shí)候手指不夠用了。
于是,小朋友在掰完所有手指后,在等于號(hào)后算出了 1 這個(gè)答案。
BEC 和 SMT的智能合約漏洞,遇到的也是這個(gè)問(wèn)題。
BEC 智能合約中的 batchTransfer 批量轉(zhuǎn)賬函數(shù)存在漏洞,攻擊者可傳入很大的 value 數(shù)值,使 cnt * value 后超過(guò) unit256 的最大值使其溢出導(dǎo)致 amount 變?yōu)?0。
而這次SMT所遇到的問(wèn)題,則是因?yàn)橹悄芎霞s中proxyTransfer() 函數(shù)存在一個(gè)經(jīng)典的整數(shù)溢出問(wèn)題。
_fee 和 _value_ 這兩個(gè)輸入?yún)?shù)都能被攻擊者控制,如果 _fee + _value 的結(jié)果正好為 0(也就是溢出的情況),第206行的檢查將會(huì)失效。
這意味著攻擊者不需要任何Token,就可以向一個(gè)地址轉(zhuǎn)入大量的Token(第214行);同時(shí)根據(jù)第217行的代碼,相當(dāng)數(shù)量的手續(xù)費(fèi)也將發(fā)送給 msg.sender。
在永信至誠(chéng) Ar 實(shí)驗(yàn)室負(fù)責(zé)人omg和教研總監(jiān)幻泉看來(lái),雖然其核心漏洞原理與 BEC 并無(wú)差別,但這次 SMT 所遭遇的困境更為嚴(yán)重。
一是黑客已經(jīng)在25日凌晨做了一系列操作,包括生成幣、轉(zhuǎn)賬等;二是 SMT 在火幣、OKEx等多家交易所進(jìn)行交易,所以面臨的情況更為復(fù)雜。
也就是說(shuō),BEC所遇到的問(wèn)題,就好比你在一個(gè)銀行里黑了別人一筆錢到你賬上,你只是把這筆錢轉(zhuǎn)給了同一家銀行的其他幾個(gè)賬號(hào),這筆錢雖然流動(dòng),但還在這家銀行。而 SMT 所遇到的問(wèn)題是,這筆錢已經(jīng)被轉(zhuǎn)走、取走或消費(fèi),已經(jīng)不是這家銀行的了,贓款更難以追回。
與BET所受攻擊最大的區(qū)別是, SMT有往其他在使用的錢包上轉(zhuǎn)出的記錄,從錢包地址來(lái)看已經(jīng)轉(zhuǎn)出一部分到一些交易較大的地址中了,不排除已經(jīng)換成其他幣的可能。
幻泉認(rèn)為,由于這次所涉及的交易所相對(duì)較多,并且事件發(fā)生在凌晨,不像上次BEC發(fā)生在中午發(fā)現(xiàn)異常馬上交易就被關(guān)閉,黑客能利用時(shí)間差在交易所發(fā)現(xiàn)之前迅速轉(zhuǎn)賬,所以損失無(wú)法估量。
目前他能想到的補(bǔ)救措施,就是發(fā)幣方根據(jù)黑客操作之前的所有轉(zhuǎn)賬記錄進(jìn)行快照,然后通過(guò)快照新生成一個(gè)新的token幣,按照快照對(duì)應(yīng)不同地址的幣量重新發(fā)幣,廢掉當(dāng)前的token。
據(jù)公開(kāi)資料顯示,SMT是由創(chuàng)始人王啟亨發(fā)起,稱將通過(guò)結(jié)合區(qū)塊鏈和無(wú)網(wǎng)通信技術(shù),以手機(jī)等設(shè)備作為其中的共享節(jié)點(diǎn),構(gòu)建一個(gè)去中心化的,并且兼容有網(wǎng)和無(wú)網(wǎng)絡(luò)兩種情況的點(diǎn)對(duì)點(diǎn)分布式網(wǎng)絡(luò)。
即未來(lái)即使沒(méi)有WiFi和4G,大家也可通過(guò)彼此的手機(jī)或者其他的 IOT 設(shè)備本身進(jìn)行連接。
想法倒是不錯(cuò),但從其發(fā)布白皮書(shū)開(kāi)始,就屢屢遭到質(zhì)疑。
按理來(lái)說(shuō),去中心化的應(yīng)用對(duì)應(yīng)用設(shè)計(jì)和代碼要求是非常嚴(yán)謹(jǐn)?shù)?,否則黑客們很容易就能找到漏洞,從而造成損失。
但 smartmesh 的中文版的白皮書(shū)發(fā)布不久,知乎網(wǎng)友“bitkevin”就在重要的介紹板塊中發(fā)現(xiàn)錯(cuò)別字,其開(kāi)頭將“基于”smartmesh 寫成了“急于”smartmesh,他當(dāng)時(shí)就提出質(zhì)疑,很難相信這個(gè)團(tuán)隊(duì)未來(lái)能夠在協(xié)議層甚至網(wǎng)絡(luò)安全層面能夠做到嚴(yán)謹(jǐn)細(xì)致。
果不其然,目前的狀況也正應(yīng)了“bitkevin”的判斷。
為了更加深入的了解這家公司,雷鋒網(wǎng)編輯開(kāi)始轉(zhuǎn)陣微博,翻創(chuàng)始人王啟亨的微博,同樣沒(méi)有令我“失望”,料也不少,先是曬與奧巴馬的合照被網(wǎng)友懟。
有網(wǎng)友如此評(píng)論這條微博:
借奧巴馬來(lái)宣傳實(shí)乃一大敗筆,做區(qū)塊鏈最重要的是真正創(chuàng)造價(jià)值,用技術(shù)和思想來(lái)背書(shū),而不是借名人來(lái)背書(shū),借勢(shì)名人只能說(shuō)明耐不住寂寞,希望快速獲得關(guān)注,王啟亨作為團(tuán)隊(duì)領(lǐng)導(dǎo),從微博里面看得出來(lái)對(duì)奧巴馬的諂媚,這讓真正熱愛(ài)區(qū)塊鏈的人感覺(jué)有些不舒服,懂區(qū)塊鏈的人都明白區(qū)塊鏈帶給人們的精神財(cái)富是什么。
但顯然王老板對(duì)這些冷嘲熱諷并不在意,繼續(xù)“秀”接到美國(guó)現(xiàn)任總統(tǒng)特朗普的邀請(qǐng)。
對(duì)于評(píng)論區(qū)的某些互動(dòng),雷鋒網(wǎng)編輯看了也是很尷尬了~~~
總之,人家有錢、有空和總統(tǒng)握手,但就是沒(méi)空請(qǐng)安全審計(jì)。
其實(shí),這類事情本身是可以被避免的。
幻泉坦言,現(xiàn)在代幣發(fā)行量很大,發(fā)行的版本很多,難免有一些意識(shí)不強(qiáng),能力不高的程序員會(huì)犯這樣的錯(cuò),所以一行代碼,就可以讓黑客引發(fā)通貨膨脹,造成項(xiàng)目發(fā)行方和購(gòu)買者的利益被侵害。
很多發(fā)幣的創(chuàng)業(yè)公司最主要的目的就是贏利,它就想盡快上交易所,所以安全會(huì)相對(duì)滯后,發(fā)生這些問(wèn)題的主要原因是開(kāi)發(fā)者在代碼編寫的過(guò)程中的安全驗(yàn)證問(wèn)題,其他相同的合約代碼也會(huì)有可能存在這樣的漏洞,BEC 和 SMT 只是剛剛開(kāi)始。
不過(guò),對(duì)于程序員背鍋這件事,雷鋒網(wǎng)發(fā)現(xiàn)有人也有不同看法。
微博研發(fā)副總經(jīng)理Tim Yang在其發(fā)布的個(gè)人微博中表示:
最近的 ERC20 的轉(zhuǎn)賬的安全問(wèn)題,直接原因都是代碼安全漏洞,由程序員背鍋,但大家比較少討論其深層次的原因,為什么以太坊比較容易出安全問(wèn)題?以太坊只是一個(gè)記錄 dapp 執(zhí)行結(jié)果的區(qū)塊鏈,其本身并沒(méi)有加密貨幣復(fù)式記賬所需的 utxo 模型。重要的 token 資產(chǎn)本身是需要貨幣級(jí)別的安全程度,以太坊目前的設(shè)計(jì)更適合游戲積分之類的合約運(yùn)行結(jié)果。
因此,他強(qiáng)調(diào),重要的 token 資產(chǎn)不適合構(gòu)建在 ERC20體系基礎(chǔ)之上。
出問(wèn)題的只是BEC和SMT嗎?問(wèn)題可能比想象的嚴(yán)重得多。區(qū)塊鏈安全公司 PeckShield發(fā)出預(yù)警稱,多個(gè)ERC20智能合約遭受proxyOverflow漏洞影響,其檢測(cè)定位到大量的ERC20 Token都受此影響,包括:
通過(guò)以太坊智能合約“發(fā)幣”容易,但如果不做好嚴(yán)格的代碼審計(jì)和安全防護(hù),億級(jí)資金的損失只在一瞬間,這些擁有智能合約的漏洞更像是一顆定時(shí)炸彈,這兩天是BEC、SMT,下一個(gè)會(huì)是誰(shuí)?
相關(guān)文章:BEC 智能合約曝重大漏洞,60多億人民幣說(shuō)沒(méi)就沒(méi)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。