'區塊鏈安全入門筆記(九)'

區塊鏈 腳本語言 P2P理財 Odaily星球日報 2019-09-08
""區塊鏈安全入門筆記(九)

隨著越來越的人蔘與到區塊鏈這個行業中來,為行業注入新活力的同時也由於相關知識的薄弱以及安全意識的匱乏,給了攻擊者更多的可乘之機。面對頻頻爆發的安全事件,慢霧特推出區塊鏈安全入門筆記系列,向大家介紹區塊鏈安全相關名詞,讓新手們更快適應區塊鏈危機四伏的安全攻防世界!

越權訪問攻擊 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/

慢霧安全團隊建議在搭建全節點的情況下,服務器需要在系統層面上對網絡連接情況進行監控,一旦發現某個IP連接異常就調用腳本配置 iptables 規則屏蔽異常的 IP,同時鏈開發者在進行公鏈開發時應該在 P2P 模塊中對單 IP 節點連接數量添加控制。

假錯誤通知攻擊 Fake Onerror Notification Attack

EOS 上存在各種各樣的通知,只要在 action 中添加 require_recipient 命令,就能對指定的帳號通知該 action,在 EOS 上某些智能合約中,為了用戶體驗或其他原因,一般會對 onerror 通知進行某些處理。如果這個時候沒有對 onerror 通知的來源合約是否是 eosio 進行檢驗的話,就能使用和假轉賬通知同樣的手法對合約進行攻擊,觸發合約中對 onerror 的處理,從而導致被攻擊合約資產遭受損失。

慢霧安全團隊建議智能合約開發者在進行智能合約開發的時候需要對 onerror 的來源合約進行校驗,確保合約帳號為 eosio 帳號,防止假錯誤通知攻擊。

"

相關推薦

推薦中...