智能合約又出漏洞,要補上可不容易

最近幾天,區塊鏈平臺EOS智能合約漏洞事件再次把區塊鏈安全推上了風口浪尖。

360Vulcan(伏爾甘)團隊發現了區塊鏈平臺 EOS 的一系列高危安全漏洞。經驗證,其中部分漏洞可以在 EOS 節點上遠程執行任意代碼,即可以通過遠程攻擊,直接控制和接管 EOS 上運行的所有節點。攻擊者會構造併發布包含惡意代碼的智能合約,EOS 超級節點將會執行這個惡意合約,並觸發其中的安全漏洞。攻擊者再利用超級節點將惡意合約打包進新的區塊,進而導致網絡中所有全節點(備選超級節點、交易所充值提現節點、數字貨幣錢包服務器節點等)被遠程控制。

智能合約又出漏洞,要補上可不容易

由於已經完全控制了節點的系統,攻擊者可以“為所欲為”,如竊取 EOS 超級節點的密鑰,控制 EOS 網絡的虛擬貨幣交易;獲取 EOS 網絡參與節點系統中的其他金融和隱私數據,例如交易所中的數字貨幣、保存在錢包中的用戶密鑰、關鍵的用戶資料和隱私數據等等。攻擊者還可以將 EOS 網絡中的節點變為殭屍網絡中的一員,發動網絡攻擊或變成免費“礦工”,挖取其他數字貨幣。

可以看出,這些漏洞的最大危害是攻擊者可以發佈包含惡意代碼的“智能合約”,進而遠控所有節點。

一、什麼是智能合約?

智能合約(smart contract) 這個術語是在1994 年由Nick Szabo 提出的,後來經過幾次在不同環境下的重新定義。我們現在通常所說的區塊鏈智能合約以以太坊為代表,以太坊的作者Vitalik Buterin 意識到,在區塊鏈系統中,交易邏輯是可以和底層系統機制分離的。底層系統負責交易塊的創建和驗證,記賬者的共識達成等基礎功能,而交易本身到底做什麼事情是可以通過二次編程的方式來定義的。因此他設計了一種交易代碼執行的虛擬環境EVM,使用者可以開發自定義的交易邏輯,發佈到鏈上,當交易進行時,鏈上所有的節點都執行相同的代碼,從而同步改變鏈上數據的狀態。他為這種代碼使用了“智能合約”這個名字,這是我們目前通常所說的智能合約的內涵。

二、智能合約漏洞,左右為難!

智能合約本質是一段運行在區塊鏈網絡中的代碼,它完成用戶所賦予的業務邏輯。以以太坊體系的代幣為例,其業務邏輯是代幣發幣和交易。以太坊在設計之初,將智能合約設計成了一旦部署就不能修改的模式。這種設計有可能是為了提高智能合約的可信性。 但是我們知道,只要是由人編寫的程序,就一定會出現錯誤和缺陷。以太坊這種設計本身就違背了程序設計的一般規律,在智能合約出現漏洞的時候可能會造成無法彌補的損失。 我們可以看到,近期出現的以太坊體系智能合約的漏洞,造成了巨大的影響,有的代幣也因此毀滅。

智能合約又出漏洞,要補上可不容易

目前以太坊體系區塊鏈智能合約的機制設計,加之漏洞可能帶來的毀滅性影響,使得已上線智能合約的漏洞的報告和處理變得非常棘手。360代碼衛士團隊在近期的研究中發現了以太坊體系下多個已上市交易的代幣的智能合約安全漏洞,並已第一時間報告廠商,但到目前為止廠商尚未作出任何回應。對於廠商來說,由於智能合約不可修改的特性,要對上線後發現的漏洞進行有效修復,只能選擇重新部署新的合約,這將付出巨大的代價,因此有的廠商可能會選擇不響應,不處理。而對於安全研究者來說,也面臨尷尬的境地,左右為難。在廠商修補漏洞前公開漏洞細節對於廠商不利,有悖漏洞披露的一般原則,但如果廠商遲遲不修補漏洞,公眾對於漏洞的存在不知情,風險會隨著時間的增長迅速膨脹,漏洞一旦爆發可能會造成更大的危害,波及更大的人群,可能會造成很多人的投資瞬間化為烏有。接下來我們還將與廠商保持積極的聯繫和溝通,以期幫助其修復漏洞。

三、智能合約漏洞,如何應對?

在一些聯盟鏈中,智能合約的設計是可以在部署之後更新的,當然這種更新需要一定的線下協商流程。要應對區塊鏈智能合約的安全漏洞問題,未來需要普遍考慮設計相應的智能合約協商更新機制,降低漏洞修復的成本。

但現在,我們需要面對現實, 做出幾乎唯一可行的、切實有效的努力 —— 在智能合約上線之前,對其進行全面深入的代碼安全審計,儘可能的消除漏洞,降低安全風險 。


分享到:


相關文章: