輸入這串數字,你也能在這12種數字貨幣上獲利千萬
編者按:本文轉載自「區塊律動BlockBeats」(ID:BlockBeats),作者:,36氪經授權轉載。
昨日中午,黑客利用以太坊 ERC-20 智能合約中 BatchOverFlow 漏洞中數據溢出的漏洞攻擊蔡文勝旗下美圖合作的公司美鏈 BEC 的智能合約,成功地向兩個地址轉出了天量級別的 BEC 代幣,導致市場上海量BEC被拋售,該數字貨幣價值幾近歸零,給 BEC 市場交易帶來了毀滅性打擊。
區塊鏈安全公司 PeckShield 目前已經發現除了 BEC Token 之外,還有超過 12 多個項目 Token 的智能合約中存在 BatchOverFlow 整數溢出漏洞,黑客可以利用這一漏洞轉賬生成「不存在」的虛擬貨幣並進行交易獲利。
被黑客攻擊的 BEC 交易量數小時內形成價格「瀑布」,幣值歸零。目前 BEC 官方團隊已經暫停一切交易和轉賬,將對 Okex 交易所的交易回滾到黑客充幣之前。
黑客繞過驗證後生成「李鬼」幣
PeckShield 團隊今日凌晨發布安全報告,提到黑客利用 in-the-wild 手段抓取以太坊 ERC-20 智能合約中的「BatchOverFlow」這個整數溢出漏洞來進行攻擊。
利用這個漏洞,黑客可以通過轉賬的手段生成合約中不存在的、巨量的 Token 並將其轉入正常賬戶,賬戶中收到的 Token 可以正常地轉入交易所進行交易,與真的 Token 無差別。
PeckShield 的安全預警報告中提到了該漏洞的具體細節,這個漏洞出現在 BEC 智能合約的 batchTransfer 函數當中,代碼如下圖所示。
大家請注意第 257 行,cnt 和 _value 的計算結果生成了局部變數。第二個參數,即 _value,,可以是一個任意的 256 位元組整數,就比如是:0x8000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000(63 個 0)。
通過將兩個 _receivers 注入到 batchTranser(),再加上這個極其大的 _value,我們就能使得量溢出,將其 amount 的量變成 0。通過將量回歸到 0,攻擊者就可以繞過 258 行到 259 行的合理性檢測,使得 261 行的差值變得不再相關。
最後,出現了一個非常有趣的結果:你們可以看 262 行到 265 行,兩個 receriver 的餘額上增加了超級大的 _value,而這一切都不會花費攻擊者錢包里哪怕一毛錢!
隨後 PeckShield 團隊利用自動化系統掃遍了以太坊智能合約並對它們進行分析。結果發現,有超過 12 個 ERC-20 智能合約都存在 BatchOverFlow 安全隱患。
為了驗證該漏洞存在的真實性,PeckShield 團隊對其中一個智能協議進行了相似的攻擊(該合約中的代幣並不在任何交易所交易,所以不會出現 BEC 的慘劇)。
PeckShield 團隊還對一個未在交易所上線的以太坊寵物遊戲 CryptoBots 進行了 BatchOverFlow 安全性攻擊,並成功地在該協議上「生成」了 57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 枚代幣 CBTB(你沒看錯,就是這麼多 0 )。
總幣數已經超過合約規定的 2 萬枚 CBTB。
CryptoBots 這款遊戲目前正在以太坊上進行交易,但通過數據查看後發現該遊戲的實際遊玩人數並不高,只有寥寥幾十人在玩。
PeckShield 創始人蔣旭憲教授表示,「理論上可以把這個遊戲中所有的道具都買下來。」
除了 BEC 和 CryptoBots(CBTB)兩個智能合約之外,還有十餘個智能合約存在同樣的漏洞,其中也包括已經在交易所上進行交易幣種。
出於安全考慮,目前 PeckShield 已經與相關項目團隊進行了聯繫,暫時不能曝光這批項目的名稱。
區塊鏈安全難道只靠回滾?
BEC 智能合約出現這個漏洞之後,黑客在 2 小時後開始往 OKEx 的地址充幣進行交易,因為市場上出現大量未知來源的 Token,市場上出現恐慌心理,OKEx 交易所上的持幣者開始拋售 BEC Token,導致 BEC 價格持續下跌,幣值幾乎歸零。
下圖中我們可以看到黑客先是試探性地往 OKEx 中轉入 100 萬的 BEC Token,黑客發現成功轉入賣出後,又分 2 次轉入了 1000 萬的 BEC Token,發現兩次都成功,便轉入了 1 億枚 BEC Token。
但這 1 億枚 BEC Token 轉入後,OKEx 已經發現問題並停止了 BEC 的交易。
按照轉入記錄,預計黑客已經賣出了最少 1100 萬枚 BEC,摺合昨日售價約 1887 萬人民幣。
下午 4 點 12 分,OKEx 發布聲明中止了相關交易。BEC 團隊也公告表示將與 OKEx 交易所合作回滾到黑客轉入 Token 之前的數據以保護投資者的權益。
PeckShield 團隊認為,因為以太坊區塊鏈上所謂「代碼即一切」的原則精神的存在,導致目前沒有有效的安全防護手段來修復這些問題,而且因為 Token 交易背後牽扯著巨大的利益,是無法在多個交易所進行同步防護的。
因為中心化交易所只是對 Token 進行記賬式的交易,項目團隊與交易所配合之後回滾是可以一定程度上保護投資者利益的,但是如果在去中心化交易所進行交易那麼投資者的損失將無法挽回,同時,利用交易所反應的時間差,黑客也可以實現在多個交易所套利。
知乎作者爬蟲認為該漏洞很容易解決,只需要對計算結果進行 safeMath 的安全驗證就可以,同時表示區塊鏈智能合約代碼需要測試、需要 review,必要時可以請專門做代碼審計的公司來進行測試。
前有 OKEx 回滾期貨交易,後有 OKEx 回滾 BEC 交易,為什麼區塊鏈上的安全問題總是要靠回滾來解決?如果沒法從根本上解決漏洞,那麼受害的不僅僅是投資者,虛擬貨幣生態中的所有參與者都將遭受巨量損失。
※程序員:我只想安靜地寫代碼,領導卻跟我談大局、講奉獻
※小米計劃最早年底進入美國手機市場,如何避免重蹈華為的覆轍?
TAG:36氪 |