區塊鏈安全入門筆記:越權訪問攻擊、女巫攻擊、假錯誤通知攻擊

買賣虛擬貨幣
隨著越來越的人參與到區塊鏈這個行業中來,為行業注入新活力的同時也由於相關知識的薄弱以及安全意識的匱乏,給了攻擊者更多的可乘之機。面對頻頻爆發的安全事件,慢霧特推出區塊鏈安全入門筆記系列,向大家介紹區塊鏈安全相關名詞,讓新手們更快適應區塊鏈危機四伏的安全攻防世界。越權訪問攻擊  Exceed Authority Access Attack和傳統安全的定義一樣,越權指的是訪問或執行超出當前賬戶許可權的操作,如本來有些操作只能是合約管理員執行的,但是由於限制做得不嚴謹,導致關鍵操作也能被合約管理員以外的人執行,導致不可預測的風險,這種攻擊在以太坊和 EOS 上都曾出現過多次。以 EOS 上著名的 BetDice 遊戲為例,由於在遊戲合約內的路由(EOS 內可自定義的事件轉發器)中沒有對來源賬號進行嚴格的校驗,導致普通使用者能透過 push action 的方式訪問到合約中的關鍵操作 transfer 函式,直接繞過轉賬流程進行下注,從而發生了越權攻擊,事後雖然 BetDice 官方緊急修復了程式碼,並嚴格限制了來源賬號,但這個漏洞已經讓攻擊者幾乎無成本薅走 BetDice 獎池內將近 5 萬 EOS。又如在以太坊使用 solidity 版本為 0.4.x 進行合約開發的時候,很多合約開發者在對關鍵函式編寫的時候不僅沒有加上許可權校驗,也沒有指定函式可見性,在這種情況下,函式的預設可見性為 public,惡意使用者可以透過這些沒有進行限制的關鍵函式對合約進行攻擊。慢霧安全團隊建議智慧合約開發者們在進行合約開發的時候要注意對關鍵函式進行許可權校驗,防止關鍵函式被非法呼叫造成合約被攻擊。交易順序依賴攻擊 Transaction-Ordering Attack
在區塊鏈的世界當中,一筆交易內可能含有多個不同的交易,而這些交易執行的順序會影響最終的交易的執行結果,由於在挖礦機制的區塊鏈中,交易未被打包前都處於一種待打包的 pending 狀態,如果能事先知道交易裡面執行了哪些其他交易,惡意使用者就能透過增加礦工費的形式,發起一筆交易,讓交易中的其中一筆交易先行打包,擾亂交易順序,造成非預期內的執行結果,達成攻擊。以以太坊為例,假如存在一個 Token 交易平臺,這個平臺上的手續費是透過調控合約中的引數實現的,假如某天平臺專案方透過一筆交易請求調高交易手續費用,這筆交易被打包後的所有買賣 Token 的交易手續費都要提升,正確的邏輯應該是從這筆交易開始往後所有的 Token 買賣交易的手續費都要提升,但是由於交易從發出到被打包存在一定的延時,請求修改交易手續費的交易不是立即生效的,那麼這時惡意使用者就可以以更高的手續費讓自己的交易先行打包,避免支付更高的手續費。慢霧安全團隊建議智慧合約開發者在進行合約開發的時候要注意交易順序對交易結果產生的影響,避免合約因交易順序的不同遭受攻擊。女巫攻擊  Sybil Attack傳聞中女巫是一個會魔法的人,一個人可以幻化出多個自己,令受害人以為有多人,但其實只有一個人。在區塊鏈世界中,女巫攻擊(Sybil Attack)是針對伺服器節點的攻擊。攻擊發生時候,透過某種方式,某個惡意節點可以偽裝成多個節點,對被攻擊節點發出連結請求,達到節點的最大連結請求,導致節點沒辦法接受其他節點的請求,造成節點拒絕服務攻擊。以 EOS 為例,慢霧安全團隊曾披露過的 EOS P2P 節點拒絕服務攻擊實際上就是女巫攻擊的一種,攻擊者可以非常小的攻擊成本來達到癱瘓主節點的目的。詳情可參考:https://github.com/slowmist/papers/blob/master/EOSIO-P2P-Sybil-Attack/zh.md慢霧安全團隊建議在搭建全節點的情況下,伺服器需要在系統層面上對網路連線情況進行監控,一旦發現某個IP連線異常就呼叫指令碼配置 iptables 規則遮蔽異常的 IP,同時鏈開發者在進行公鏈開發時應該在 P2P 模組中對單 IP 節點連線數量新增控制。
假錯誤通知攻擊  Fake Onerror Notification AttackEOS 上存在各種各樣的通知,只要在 action 中新增 require_recipient 命令,就能對指定的帳號通知該 action,在 EOS 上某些智慧合約中,為了使用者體驗或其他原因,一般會對 onerror 通知進行某些處理。如果這個時候沒有對 onerror 通知的來源合約是否是 eosio 進行檢驗的話,就能使用和假轉賬通知同樣的手法對合約進行攻擊,觸發合約中對 onerror 的處理,從而導致被攻擊合約資產遭受損失。慢霧安全團隊建議智慧合約開發者在進行智慧合約開發的時候需要對 onerror 的來源合約進行校驗,確保合約帳號為 eosio 帳號,防止假錯誤通知攻擊。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;