• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 區塊鏈生態 查看內容
    • 8178
    • 0
    • 分享到

    復盤EOS安全事件及再議區塊鏈安全

    2018-6-1 16:17

    來源: 火幣區塊鏈 作者: 袁煜明、胡智威等

    EOS節點遠程代碼執行漏洞技術分析 — EOS智能合約WASM函數表數組越界


    我們首先從奇虎360技術博客的報告“EOS節點遠程代碼執行漏洞 — EOS智能合約WASM函數表數組越界”(http://blogs.#/blog/eos%E8%8A%82%E7%82%B9%E8%BF%9C%E7%A8%8B%E4%BB%A3%E7%A0%81%E6%89%A7%E8%A1%8C%E6%BC%8F%E6%B4%9E/ )中來查看本次漏洞的詳細技術內容。

    根據報告所述,在修復該漏洞的提交ea89dce21d13d41a22b3512a27be97b4be9df755之前的代碼版本上,我們可以看到在libraries/chain/webassembly/binaryen.cpp文件的76行,有assert用于檢查變量取值情況。但assert一般僅適用于程序編譯構建的Debug模式,對于正式發布的Release模式通常并不起作用,因此相當于沒有做檢查,導致78行對數組的訪問存在隱患。


    因此在發現該漏洞后,開發團隊已將assert改為可正常調用的名為FC_ASSERT的宏定義。


    知道了問題所在后,我們再來看一下編寫EOSIO所使用的C++程序的內存結構及語言特性。

    C++程序的內存區域包括棧區、堆區、自由存儲區、靜態全局存儲區、常量區及代碼區等。每個區域均有其獨特的作用。同時,C/C++允許程序員通過指針等方式,對內存進行極為自主的控制及使用,并不強制檢查數組邊界等條件。因為包括內存管理在內的種種極為靈活、可控制底層的語言特性,C/C++憑借其高性能被廣泛使用于對程序執行速度有嚴格要求的工業界。但也正是因為這種靈活性,C/C++程序常會因為內存管理的復雜性而出現內存泄露、宕機或內存越界等問題。這點在大型工程上尤其常見。

    圖 1 內存問題引起程序崩潰示例

    原因在于,C++程序指針訪問到相應內存區域,即有可能對其進行相應的操作,所以如果控制不當,訪問到原本的“界限”之外,就會產生越界的問題:如果訪問到數據區域,則可能會引起程序崩潰或讀取、修改到原本不應訪問到的信息;如果訪問到代碼區域,則可能注入或改變原有正常代碼。這就是緩沖區溢出的基本原理。

    作為計算機及互聯網上十分常見且潛在影響巨大的攻擊手段,利用緩沖區溢出進行攻擊有記錄的最早一次是發生在1988年的Morris蠕蟲攻擊。據估計,它一經出現便影響了互聯網上10%的計算機,造成約10萬至100萬美元的損失。從其首次出現到今天的30年間,很多著名的攻擊事件都采取了緩沖區溢出的方式進行,其影響也隨著互聯網的發展而擴大。

    回到本次EOSIO的這個漏洞,根據360的報告我們可以看到:當檢查代碼失效后,如果offset變量被任意設置一個地址,例如0xfffffff,則會引起segmentation fault的錯誤而導致程序崩潰;而如果對合約進行精心設計,攻擊者可通過對內存越界寫入的方式來執行惡意代碼,正如360報告中附加的視頻所示。

    同時,如果能將風險控制在單機范圍內,那對全局來說影響還是相對可接受的。但正是由于惡意代碼可以是一個區塊鏈上的合約,因此EOSIO將合約打包成區塊后會在整個網絡中傳播,使得所有節點均可被此惡意代碼控制,即整個網絡都受到致命影響。

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频