• <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>
     找回密碼
     立即注冊

    掃一掃,登錄網站

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

    公有鏈安全性TOP20評分排行榜

    2018-6-5 20:52

    來源: 鴕鳥區塊鏈

    公有鏈智能合約常見安全性問題


    本部分主要總結公鏈中智能合約常見的安全漏洞,部分安全問題普遍存在且基本得到解決。

    5.1 交易順序依賴合約

    交易順序依賴就是智能合約的執行隨著當前交易處理的順序不同而產生差異。例如,有兩個交易T[i]和T[j],兩個區塊鏈狀態S[1]和S[2],并且S[1]狀態處理完交易T[j]后才能轉化為狀態S[2]。

    那么,如果礦工先處理交易T[i],交易T[i]調用的就是S[1]狀態下的智能合約;如果礦工先處理交易T[j]再處理交易T[i],那么由于先執行的是T[j],合約狀態就轉化為S[2],最終交易T[i]執行的就是狀態S[2]時的智能合約。

    攻擊方法舉例:

    攻擊者提交高獎勵的需求(與數字及信息相關),讓用戶解決此需求。攻擊者提交完合約后就持續監聽網絡,如果有人提交了解決此需求的方案,此時提交答案的交易還未確認,那么攻擊者就馬上發起一個交易降低獎金的數額使之無限接近0。

    當礦工處理這兩個交易時,當前交易池就有兩個待確認交易:一個交易提交解決方案,一個交易更改獎金數額。如果礦工先處理的是攻擊者更改獎金的交易,那么等到礦工處理提交解決方案的交易時,方案提交者所獲得的獎勵將變得極低,攻擊者就能幾乎免費獲得解決方案。(注:攻擊者可以通過增加交易費用讓礦工先處理自己的交易。)


    5.2 誤操作異常

    以太坊中,一個合約調用另一個合約可以通過send指令或直接調用另一個合約的函數。然而在調用過程中可能會出現錯誤,調用的合約就會退回到之前的狀態。

    那么這個異常就可能無法很好地被調用者獲知,這取決于調用方式。例如,通過send指令調用的合約應該通過檢查返回值來驗證合約是否被正確執行。

    攻擊方法舉例:

    在一些數字收藏類游戲中:用戶可以通過一定數量的代幣獲得虛擬物品,下一任收藏者支付的數額由現任收藏者決定,當前收藏者可以通過買賣藏品獲得利潤。

    當一個用戶聲稱為新藏家后,合約就發送賠償金給現任藏家,并指定這個用戶為新的藏家。然而,這個合約并沒有檢查支付賠償金的交易的結果。這樣一旦合約在執行過程中產生了異常,現任藏家就有可能同時失去藏品和賠償金。

    可能的攻擊方式就是敵手故意超出調用棧的大小限制。以太坊虛擬機規定調用棧的深度為1024。攻擊者在攻擊之前,首先調用自身1023次,然后發送交易給數字收藏游戲合約,這樣就造成了合約的調用棧超出了限制,從而出現了錯誤。

    合約出錯后,因為這個合約沒有檢查合約的返回值,那么如果合約在發送賠償金給現任藏家的過程中出現了異常,那么現任藏家極有可能失去藏品和賠償金。


    5.3 可重入攻擊

    在以太坊中,當一個合約調用另一個合約的時候,當前的操作就要等到調用結束之后才會繼續。這時,如果被調用者需要使用調用者當前所處的狀態,就會產生重入問題。

    著名的DAO攻擊事件就是因為這個漏洞而發生的以太坊也因此進行硬分叉,分為ETH和ETC。



    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系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>
      妖精视频