每日最新頭條.有趣資訊

智能合約頻出漏洞,一行代碼蒸發64億人民幣

圖片來源:視覺中國

4月22日中午,有黑客利用以太坊 ERC-20智能合約中BatchOverFlow漏洞攻擊BEC(美鏈的代幣“美蜜”)智能合約,成功向兩個地址轉出了天量級別的 BEC代幣,導致市場上海量BEC被拋售。此事使得當日BEC的價值幾乎歸零。64億人民幣瞬間蒸發。

4月25日,僅僅三天后,另一個智能合約SmartMesh(SMT)曝出漏洞,交易所表示,因SMT出現異常交易,各交易平台暫停SMT的充提和交易。

現實世界裡,財物失竊尚能夠通過立案偵查追回損失。但是在互聯網的世界裡,儘管數字貨幣“錢途”無量,一旦被黑卻血本無歸。

1小時幣值跌94%

智能合約,是指以數字形式定義的承諾,合約參與方可以在上面執行這些承諾的協定。簡單來說,就是利用區塊鏈的技術,大家共同約定,當一定條件被滿足的情況下,可以被自動執行的合約。目前區塊鏈最常用的智能合約平台是以太坊,誰都可以根據以太坊的ERC20標準分發代幣(Token)。

美鏈BEC於2018年2月在虛擬數字幣交易平台OKEx上線,曾被業內認為是美圖發行的數字貨幣,但美圖否認了這點,隻承認有合作。但因有此淵源,上線後,價格一度暴漲40倍。出現異常的4月22日,BEC當天最高價為2.27元,最低價0.137元,價格最高浮動率達94%。

浙江台州的蔣先生進入幣市5年,接觸數字貨幣十餘種。此次BEC合約漏洞被攻擊,也是蔣先生第一次遭遇這類事情。4月22日中午,蔣先生以每個幣0.32美元的價格入手了2000個BEC幣(價值約4000人民幣),沒想到時隔不到一個小時,幣價跌近0元。

據《IT時報》記者了解,這是基於ERC20標準的代幣首次出現智能合約漏洞,而造成如此大損失的原因僅僅是程式編寫者自身不嚴謹,調用函數時一行非常簡單的代碼寫錯所致。

從事區塊鏈安全防護的眾享比特市場總監陳鴻剛告訴記者,在智能合約中,設計者一般會在代碼中插入一筆轉账函數,這個函數應當保證轉出的账目小於等於錢包中原有账目。

但是此次BEC出現的漏洞,使轉账者在設計一筆特大轉账數額時,函數計算結果為0,這就導致黑客可以向自己的錢包轉運站入任意巨額的數字貨幣。

更多智能合約存在安全隱患

針對此次攻擊,OKEx官方網站表示,將采取發行另一種新幣的對策,對原有BEC按照一比一比例兌換,用戶账戶狀態將依照被攻擊前的網站映射進行還原,原有合約永久廢除。“就像你的車子壞了,廠家根據原來的汽車配置給你造一輛新車。”陳鴻剛頗為形象地比喻。

據騰訊玄武實驗室的資訊安全人員宋凱透露,其實很多虛擬貨幣交易在過程中都出現過安全問題,事後的解決方案大多是回滾,也就是將交易數據回溯到攻擊之前的狀態。這樣的補救措施只能使用戶账戶中擁有同樣數量的新幣,但因為攻擊導致BEC幣價大跌,事實上,用戶並沒能真正挽回損失。

此事發生後不久,PeckShield團隊利用自動化系統掃遍了以太坊上諸多智能合約並對它們進行分析。結果發現,有超過12個ERC-20智能合約都存在BatchOverFlow安全隱患。

4月25日,OKEx官微發出“關於暫停SMT交易和提現的公告”,指出當日4時左右,SMT出現異常交易。截至發稿,平台尚未給出異常交易的具體情況。

“天下代碼一大抄”

之所以如此多的智能合約出現同類漏洞,其背後是混亂的數字代幣發行現狀。

儘管國內早已嚴格禁止ICO(數字貨幣發行),但這反而讓一些“有心人”在國外找到了躲避監管的方式,而通過智能合約發行代幣的代價,已經低之又低。

一位從事區塊鏈技術的創業者告訴《IT時報》記者,一個程式員只要花5分鐘,從網上抄一些智能合約代碼,稍做修改,就可以發行一個代幣。如果再寫個白皮書,找幾個知名顧問月台,就可以在數字貨幣交易所裡發行幾千萬甚至上億的項目。

由於這些數字貨幣交易所注冊在海外,國內很難對其進行監管,因此顯而易見的是,上交易所發行代幣變得越來越容易,以往對發幣團隊相對嚴格的審核,現在都被有意無意地忽略了。

既沒有交易所的監管,又抱著“一夜暴富”的期待,這些發幣團隊的技術實力、對安全的防範意識,自然很難得到保證。

陳鴻剛認為,好的代碼應當經過非常嚴格的測試,倘若投資者無從判斷代幣發行團隊的水準,就要盡可能選擇相對主流的幣,或者經過一段時間市場考驗的幣來進行投資。但是在數字貨幣的世界裡,各種漏洞都潛伏其中,投資者需要做好漏洞隨時暴露的心理準備,同時,平台自身的資質,也是投資者需要仔細考慮的重要因素。(本文作者為IT時報見習記者 劉慧瑩)

更多精彩內容,關注鈦媒體微信號(ID:taimeiti),或者下載鈦媒體App

獲得更多的PTT最新消息
按讚加入粉絲團