'區塊鏈安全入門筆記'

""區塊鏈安全入門筆記

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

系列回顧:

智能合約 Smart Contract

智能合約(Smart Contract)並不是一個新的概念,早在 1995 年就由跨領域法律學者 Nick Szabo 提出:智能合約是一套以數字形式定義的承諾(Promises),包括合約參與方可以在上面執行這些承諾的協議。在區塊鏈領域中,智能合約本質可以說是一段運行在區塊鏈網絡中的代碼,它以計算機指令的方式實現了傳統合約的自動化處理,完成用戶所賦予的業務邏輯。

隨著區塊鏈智能合約數量的與日俱增,隨之暴露出來的安全問題也越來越多,攻擊者常能利用漏洞入侵系統對智能合約用戶造成巨大損失,據 SlowMist Hacked 統計,截止目前僅 ETH、EOS、TRON 三條鏈上因智能合約被攻擊而導致的損失就高達 $126,883,725.92,具有相同攻擊特徵的手法更是呈現出多次得手且跨公鏈的趨勢,接下來我們將為大家介紹近年來一些常見的智能合約攻擊手法。

交易回滾攻擊 Roll Back Attack

交易回滾攻擊(Roll Back Attack),故名思義,指的是能對交易的狀態進行回滾。回滾具體是什麼意思呢?回滾具體指的是將已經發生的狀態恢復成它未發生時候的樣子。那麼,交易回滾的意思就是將已經發生的交易變成未發生的狀態。即攻擊者本來已經發生了支付動作,但是通過某些手段,讓轉賬流程發生錯誤,從而回滾整個交易流程,達到交易回滾的目的,這種攻擊手法多發於區塊鏈上的的智能合約遊戲當中,當用戶的下注動作和合約的開獎動作在一個交易內的時候,即內聯交易。攻擊者就可以通過交易發生時檢測智能合約的某些狀態,獲知開獎信息,根據開獎信息選擇是否對下注交易進行回滾。

該攻擊手法早期常用於 EOS DApp 上,後逐步向波場等其他公鏈蔓延,截止目前,已有 12 個 DApp 遭遇攻擊,慢霧安全團隊建議開發者們不要將用戶的下注與開獎放在同一個交易內,防止攻擊者通過檢測智能合約中的開獎狀態實現交易回滾攻擊。

交易排擠攻擊 Transaction Congestion Attack

交易排擠攻擊(Transaction Congestion Attack)是針對 EOS 上的使用 defer 進行開獎的遊戲合約的一種攻擊手法,攻擊者可以通過某些手段,在遊戲合約的 defer 開獎交易前發送大量的 defer 交易,惡意侵佔區塊內的 CPU 資源,使得智能合約內本應在指定區塊內執行的 defer 開獎交易因資源不足無法執行,只能去到下一個區塊才執行。由於很多 EOS 上的遊戲智能合約使用區塊信息作為智能合約本身的隨機數,同一個 defer 開獎交易在不同區塊內的執行結果是不一樣的。通過這樣的方式,攻擊者在獲知無法中獎的時候,就通過發送大量的 defer 交易,強行讓智能合約重新開獎,從而達到攻擊目的。

該攻擊手法最早在黑客 loveforlover 向 EOS.WIN 發起攻擊時被發現,隨後相同的攻擊手法多次得手,據 SlowMist Hacked 統計僅 2019 年就有 22 個競猜類 DApp 因此損失了大量資金,慢霧安全團隊建議智能合約開發者對在不同區塊內執行結果不同的關鍵的操作不要採用 defer 交易的方式,降低合約被攻擊的風險。

隨機數攻擊 Random Number Attack

隨機數攻擊(Random Number Attack),就是針對智能合約的隨機數生成算法進行攻擊,預測智能合約的隨機數。目前區塊鏈上很多遊戲都是採用的鏈上信息(如區塊時間,未來區塊哈希等)作為遊戲合約的隨機數源,也稱隨機數種子。使用這種隨機數種子生成的隨機數被稱為偽隨機數。偽隨機數不是真的隨機數,存在被預測的可能。當使用可被預測的隨機數種子生成隨機數的時候,一旦隨機數生成的算法被攻擊者猜測到或通過逆向等其他方式拿到,攻擊者就可以根據隨機數的生成算法預測遊戲即將出現的隨機數,實現隨機數預測,達到攻擊目的。

2018 年 11 月 11 日,攻擊者向 EOS.WIN 發起連續隨機數攻擊,共獲利 20,000 枚 EOS,在此慢霧安全團隊建議智能合約開發者使用安全的隨機數源作為合約隨機數,如通過使用鏈下的隨機數種子生成隨機數的方式上傳至鏈上,降低合約被攻擊的風險。

"

相關推薦

推薦中...