作者:慢霧安全團隊
公眾號:慢霧科技
披露時間線
2019 年 3 月 10 日,我們捕獲了 EOS DApp 上的一種新型攻擊手法,一個帳號名為 fortherest12 的攻擊者通過 hard_fail 狀態攻擊手法攻擊了 EOS 遊戲 Vegas town ,並造成了一定數量的損失。
2019 年 3 月 10 日,我們注意到出現了數量更多的 hard_fail 類型攻擊。
2019 年 3 月 11 日,我們披露了相關的攻擊手法,但是沒有披露具體的攻擊細節,並及時聯繫了相關的交易所以及項目方。
2019 年 3 月 12 日,我們發布紅色預警,提醒交易所和錢包需要對 EOS 交易執行狀態進行校驗,必要時可暫停充提系統。
2019 年 3 月 13 日,預警得到 EOS New York 及 Block.one 的 BM 等核心成員響應及認可。
2019 年 3 月 14 日,細節正式公開。
漏洞細節
參考官方文檔,可以得知 EOS 交易的執行狀態存在多種,相應的類別及相應的描述分別為:
- executed:交易正確執行,沒有觸發 error handler
- soft_fail:交易客觀失敗(沒有執行),但正確觸發 error handler
- hard_fail:交易客觀失敗,但沒有觸發 error handler
- delayed:交易延遲/deferred/在隊列中待執行
- expired:交易過期
此次的攻擊手法就是利用了上述狀態中的 hard_fail 狀態進行攻擊,在以前的開發過程中,許多開發者都不曾碰到過這種交易執行狀態,常規的區塊瀏覽器上也無法查詢到相關的交易,造成了開發者缺少對這種交易狀態的認知。開發中的慣常思維也是只有合約才能發起延時交易。但是,通過 cleos 中的具體參數配置 delay-sec 參數: