• APP內打開
    風險提示:防范以虛擬貨幣/區塊鏈名義進行的非法集資風險。 ——銀保監會等五部門

    Ultrain超腦鏈發現并協助修復EOS致命安全漏洞并獲官方致謝!

    白話區塊鏈 2019-05-06 17:25:59
    微信分享

    掃碼分享

    Ultrain技術團隊核心成員發現EOS全網宕機隱患的致命安全漏洞,并立即將問題詳細描述及修復辦法提交至EOS團隊。

    作者:投稿 / 來源:資訊

      據悉,Ultrain技術團隊核心成員近期在閱讀EOSchainbase開源代碼時,發現其底層實現存在可導致EOS全網宕機隱患的致命安全漏洞,并立即將問題詳細描述及修復辦法提交至EOS團隊。近日,EOS團隊已正式將修復提交EOS代碼主分支,并對于Ultrain@raymondnuaa表示多次致謝!

    image.png

    image.png

      公鏈EOS采用chainbase內存數據庫存儲世界狀態,包括鏈上所有賬號詳情、部署的所有智能合約以及所有歷史交易形成的狀態修改等內容。chainbase的安全性與穩定性是保證公鏈EOS穩定運行的重中之重。

      EOS該安全漏洞由chainbase對數據庫回滾操作的錯誤處理順序引發。chainbase內存數據庫底層有removed、created、modified三個stack來存儲區塊內交易對數據庫對象所進行的刪除、創建、修改操作,如果該區塊未能成功添加到區塊鏈主鏈,則需要對該區塊內所有交易對內存數據庫做的所有修改進行回滾。EOS對三個stack的原有回滾處理順序為:modified,created,removed,在該處理順序下,如果將數據庫某個已有對象A的鍵值修改,并創建一個新的對象B采用前述對象A的原有鍵值,那么在進行回滾時,會先嘗試將對象A修改過的數值恢復,此時會產生鍵值沖突(數據庫此時存在對象B具有相同鍵值),導致底層庫進入死循環狀態。一旦進入該狀態,EOS節點則無法正常繼續生產區塊。若惡意攻擊者構造觸發該狀態的交易廣播至全網執行(e.g.通過deferred trx),則EOS全網存在宕機隱患。

      發現問題后,EOS開發團隊按@raymondnuaa建議將stack處理順序修改為created,modified,removed,可正常處理前述場景。此外,@raymondnuaa在問題描述中還詳細描述了另一個更加復雜的兩個對象鍵值交換的場景,并指出僅靠調整三個stack的處理順序無法解決問題。EOS在此次修改中也增加了大量注釋,明確了chainbase內對象的使用需求限制,指出chainbase的特定字段不能在modifier 中進行修改(should not be changed within a chainbase modifier lambda),并對deferred_transaction的modify處理做了相應修改。

      公鏈是促進區塊鏈行業繁榮發展的一個重要角色,相信有如Ultrain這樣致力于提升基礎設施安全的公鏈存在,整個行業將會更加健康有序發展。

      詳情鏈接:
    https://github.com/EOSIO/eos/pull/7266
    https://github.com/EOSIO/chainbase/pull/44

    下載白話區塊鏈APP

    區塊鏈世界入口第一站,人人都能看懂的區塊鏈;24 小時熱點實時追蹤。

    毛片免费看