0
| 本文作者: 靈火K | 2019-03-12 16:11 |
3月10日凌晨,EOS游戲Vegas Town (合約帳號(hào) eosvegasgame)遭受攻擊,損失數(shù)千EOS。
慢霧安全團(tuán)隊(duì)分析發(fā)現(xiàn)本次的攻擊帳號(hào)為 fortherest12,通過(guò) eosq 查詢?cè)搸ぬ?hào),發(fā)現(xiàn)首頁(yè)存在大量的錯(cuò)誤執(zhí)行交易,查看其中任意一筆交易,可以發(fā)現(xiàn)其中的失敗類型均為 hard_fail。

安全團(tuán)隊(duì)稱:“根據(jù)之前對(duì)EOS黑名單攻擊手法的分析其原理基本類似,區(qū)別在于沒(méi)有對(duì)下注交易的狀態(tài)進(jìn)行分析。本次攻擊有兩點(diǎn)值得注意:一個(gè)是 hard_fail,第二個(gè)是時(shí)間延遲。此次攻擊中的延遲竟達(dá)到了 2 個(gè)小時(shí)之久?!?/p>
他們認(rèn)為,本次的攻擊發(fā)生和 EOS 的機(jī)制相關(guān),當(dāng)交易的延遲時(shí)間不為0的時(shí)候,不會(huì)立馬校驗(yàn)是否執(zhí)行成功,對(duì)延遲交易的處理是push_schedule_transaction,而交易的延遲時(shí)間等于 0 的時(shí)候,會(huì)直接 push_transaction,這兩個(gè)的處理機(jī)制是存在區(qū)別的。
安全團(tuán)隊(duì)針對(duì)這兩個(gè)要點(diǎn)進(jìn)行分析:
(1) hard_faild
一般來(lái)說(shuō),fail 有兩種類型,分別是 soft_fail 和 hard_fail,此次攻擊中呈現(xiàn)出的是后者。

在官方描述中,hard_fail被稱作“客觀的錯(cuò)誤并且錯(cuò)誤處理器沒(méi)有正確執(zhí)行”。通俗來(lái)說(shuō),就是出現(xiàn)錯(cuò)誤但是沒(méi)有使用錯(cuò)誤處理器(error handler)處理錯(cuò)誤,比方說(shuō)使用 onerror 捕獲處理,如果說(shuō)沒(méi)有 onerror 捕獲,就會(huì) hard_fail。
(2) 延遲時(shí)間
安全團(tuán)隊(duì)發(fā)現(xiàn),fortherest12 屬于普通帳號(hào),這使得攻擊者可以輕易通過(guò) cleos 中的一個(gè)參數(shù)設(shè)置來(lái)對(duì)交易進(jìn)行延遲。根據(jù)官方文檔的描述,和非合法賬號(hào)實(shí)現(xiàn)延遲最大的區(qū)別在于hard_fail會(huì)在鏈上出現(xiàn)記錄。
本次攻擊是因?yàn)轫?xiàng)目方?jīng)]有對(duì) trx 的 status 狀態(tài)進(jìn)行校驗(yàn),只是對(duì) trx 是否存在作出了判斷,進(jìn)而導(dǎo)致了本次攻擊的發(fā)生。

在此安全團(tuán)隊(duì)建議,在項(xiàng)目方進(jìn)行開獎(jiǎng)的時(shí)候,需要注意下注訂單的執(zhí)行狀態(tài),除了要判斷交易是否存在,還要判斷下注訂單是否成功執(zhí)行。雷鋒網(wǎng)
參考來(lái)源:慢霧科技
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。