最新消息:图 床

EOS 回滾攻擊手法分析之黑名單篇

COOL IAM 225浏览 0评论

作者:yudan@慢霧安全團隊
公眾號:慢霧科技

事件背景

2018 年 12 月 19 日,眾多遊戲類 DApp 遭遇交易回滾攻擊,其中包括 BetDice,EOSMax,ToBet 等。按當時 18 元人民幣的價格計算,損失超過 500 萬人民幣。期間 BetDice 通過鏈金術平台發出多次公告,一度造成恐慌。

與此同時,慢霧安全團隊對交易所和中心化錢包給出了暫時性的方案。此刻,攻擊手法依舊是一個謎團。那麼,攻擊手段究竟是怎樣的呢?在進行攻擊回顧之前,需要先了解一點技術背景。

技術背景

1、我們知道 EOS 採用的共識算法是 DPOS 算法,採用的是 21 個超級節點輪流出塊的方式。除了 21 個超級節點外的其他全節點,並沒有出塊的權限。起到的作用是將收到的交易廣播出去,然後超級節點將其進行打包。

說到這裡,很容易看出,如果一筆交易是發給除了超級節點外的其他全節點,這筆交易會經歷兩個過程。首先,這筆交易先被全節點接收,然後交易再被節點廣播出去進行打包。而一筆交易是需要超級節點中超過 2/3+1 的節點進行確認之後才是不可回滾的,也就是不可逆的。

這個過程大概需要 3 分鐘左右,也就是說,交易發到除了超級節點外的全節點的時候,由於全節點沒有打包的權利,此時此刻交易仍然處於可逆狀態(這裡假定節點數據庫的讀取模式為默認的 speculative,有關閱讀模式的參考:https://developers.eos.io/eosio-nodeos/docs/read-modes )。這是一個核心關鍵點。

2、每一個 bp(超級節點),都可以在自己的節點的 config.ini 文件內進行黑名單的配置,在黑名單中的帳號是不能進行交易的,也就是說無論怎樣,黑名單的交易都會被回滾。

黑名單配置路徑:

Mac OS:

~/Library/Application Support/eosio/nodeos/config/config.ini

Linux:

~/.local/share/eosio/nodeos/config/config.ini

配置方法:

將 config.ini 文件內的 actor-blacklist 填入黑名單帳號,如下圖中,將 attacker 這個帳號作為黑名單帳號。

转载请注明:IAMCOOL » EOS 回滾攻擊手法分析之黑名單篇

0 0 vote
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x