0
3月10日凌晨,EOS游戏Vegas Town (合约帐号 eosvegasgame)遭受攻击,损失数千EOS。
慢雾安全团队分析发现本次的攻击帐号为 fortherest12,通过 eosq 查询该帐号,发现首页存在大量的错误执行交易,查看其中任意一笔交易,可以发现其中的失败类型均为 hard_fail。
安全团队称:“根据之前对EOS黑名单攻击手法的分析其原理基本类似,区别在于没有对下注交易的状态进行分析。本次攻击有两点值得注意:一个是 hard_fail,第二个是时间延迟。此次攻击中的延迟竟达到了 2 个小时之久。”
他们认为,本次的攻击发生和 EOS 的机制相关,当交易的延迟时间不为0的时候,不会立马校验是否执行成功,对延迟交易的处理是push_schedule_transaction,而交易的延迟时间等于 0 的时候,会直接 push_transaction,这两个的处理机制是存在区别的。
安全团队针对这两个要点进行分析:
(1) hard_faild
一般来说,fail 有两种类型,分别是 soft_fail 和 hard_fail,此次攻击中呈现出的是后者。
在官方描述中,hard_fail被称作“客观的错误并且错误处理器没有正确执行”。通俗来说,就是出现错误但是没有使用错误处理器(error handler)处理错误,比方说使用 onerror 捕获处理,如果说没有 onerror 捕获,就会 hard_fail。
(2) 延迟时间
安全团队发现,fortherest12 属于普通帐号,这使得攻击者可以轻易通过 cleos 中的一个参数设置来对交易进行延迟。根据官方文档的描述,和非合法账号实现延迟最大的区别在于hard_fail会在链上出现记录。
本次攻击是因为项目方没有对 trx 的 status 状态进行校验,只是对 trx 是否存在作出了判断,进而导致了本次攻击的发生。
在此安全团队建议,在项目方进行开奖的时候,需要注意下注订单的执行状态,除了要判断交易是否存在,还要判断下注订单是否成功执行。雷锋网
参考来源:慢雾科技
雷峰网原创文章,未经授权禁止转载。详情见转载须知。