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