小心!智能合約再爆高危漏洞,兩大數字貨幣直接變廢紙!

小心!智能合約再爆高危漏洞,兩大數字貨幣直接變廢紙!

在智能合約漏洞頻出的背景下,又發現一個存在嚴重安全漏洞的智能合約——RMC代幣合約!

大家都還記得,前一段時間發生的BEC智能合約的安全漏洞問題。近日,智能合約安全問題再次上演,火幣Pro發佈公告,暫停EDU衝提幣業務,隨後EDU智能合約被爆出存在嚴重漏洞!

在智能合約漏洞頻出的背景下,我們利用形式化驗證工具對上百個智能合約進行深入分析,又發現一個存在嚴重安全漏洞的智能合約——RMC代幣合約

這一漏洞造成的影響是,直接把曾經市值300多萬美元的RMC和一度飆到0.08美元的UET(UselessEthereumToken),變得一文不值!

RMC漏洞發現細節

下圖是RemiCoin (RMC)代幣中的一段代碼:

小心!智能合約再爆高危漏洞,兩大數字貨幣直接變廢紙!

這段代碼實現了ERC20 代幣規範中的transferFrom函數,該函數的功能是用戶(_from)向另外一個用戶(_to)轉賬一定數量的代幣,但是在該函數中卻使用了錯誤的邏輯,在紅色框中要求只有:

allowed[from][msg.sender]

的值小於value時,代碼才能繼續運行,而下面卻進行了:

allowed[from][msg.sender] -= value的操作,

造成了溢出錯誤,讓該函數具有嚴重的漏洞。

而攻擊者就可以利用這個漏洞,不需要私鑰即可無限制的將任意賬戶的RMC幣轉到指定的賬戶(_to)從而導致所有持有RMC幣的賬戶都有可能被盜取,嚴重危害了用戶的財產安全。

RMC代幣自去年7月進入交易所以來,代幣價格最高時達到近2美元,市值300多萬美元。12月,有攻擊者對該合約進行攻擊,並被爆出漏洞,隨後,代幣價格一路暴跌,跌至4月份的不到0.02美元。

此時,由於該漏洞導致不需要用戶的私鑰即可對賬戶餘額進行操作,這使得用戶手中的RMC代幣也變得毫無價值。

無獨有偶,與此類似的是,據悉名為UselessEthereumToken的代幣,號稱世界上第一個100%誠實的以太坊ICO,也出現了嚴重的安全漏洞

小心!智能合約再爆高危漏洞,兩大數字貨幣直接變廢紙!

上圖紅框中的邏輯是:

balances[_from] <= _value

且:allowed[_from][msg.sender] <= _value

且:balances[_to] + _value <= balances[_to]

才能進行轉賬操作,而接下來的運算導致:balances[_to]balances[_from]allowed[_from][msg.sender]均產生溢出。

攻擊者無需任何私鑰,只需調用該函數時,把傳入的參數_value設置得足夠大,即可操縱_from_to的賬戶餘額

最終,這個漏洞使得UselessEthereumToken就像其名字一樣,變得毫無價值

截至發稿前,仍有攻擊者利用上述漏洞對兩個智能合約進行攻擊,下圖為攻擊者利用漏洞大量盜取RMC幣

小心!智能合約再爆高危漏洞,兩大數字貨幣直接變廢紙!

下圖為攻擊者利用漏洞大量盜取UET幣:

小心!智能合約再爆高危漏洞,兩大數字貨幣直接變廢紙!

不容忽視的安全問題

在這些漏洞的背後,往往是由於智能合約開發者的經驗欠缺。而如何有效地防止此類漏洞的發生,成為了區塊鏈智能合約開發中工作中的一個難題。安全是這場競賽的核心賽道,對各方而言,都不容忽視。

那麼這類安全事件該如何防範呢?各方又該如何避免漏洞的發生呢?

  1. 開發者應該提高自己的安全意識。現在發現的漏洞中,大多是因為直接使用普通的加減乘除符號,但卻沒有對可能溢出的情況作判斷,這就造成了數據溢出的隱患,而解決方法也很簡單,使用安全的運算庫library SafeMath就可以徹底避免數據溢出的問題。
  2. 項目方也應建立自己統一的安全標準,並對照安全標準嚴格執行,進行逐一檢查。在完成代幣的智能合約編寫後,請專業的智能合約審計公司,對合約代碼用形式化驗證的方法進行審計,並由審計公司給出詳細的審計報告。
  3. 形式化驗證方法是基於數學的特種技術,適合於軟件和硬件系統的描述、開發和驗證。將此方法應用於智能合約的驗證,能以邏輯推演的方式來進行系統性的快速審查,高效地解決智能合約安全漏洞問題,避免了存在漏洞的合約發佈後,所造成的嚴重經濟損失。
  4. 交易平臺應該做好對項目方的審核工作和自身安全防護
    。對交易平臺中的項目,應要求其能提供智能合約安全憑證,避免有漏洞的代幣對交易平臺的信譽產生不良影響。

普通用戶該如何選擇代幣

短短几個月以來,多個智能合約被曝出存在安全漏洞,除了眾所周知的BEC、SMT、EDU、BAI之外,多個在交易平臺交易的智能合約代幣,依舊存在安全隱患。

對廣大普通用戶來講,選擇有公信力的交易所在一定程度上可以降低風險;但更為重要的是,在投資代幣時要擦亮自己的眼睛,對不熟悉的代幣在購買時也要更為謹慎,選擇通過專業的代碼審計平臺審計過的代幣合約才能有效地保障自己的數字資產的安全,不然就真的一夜回到解放前了


分享到:


相關文章: