事件
降维安全实验室(johnwick.io)近日关注到不少项目方/交易所在确认客户交易时,只检测了是否存在交易哈希(tx hash),并未检测交易状态(tx status)。这样容易遭受“假充值(Fake Charge)”攻击。恶意用户只需要发起延迟交易,并在随后的实际延迟交易中造成硬失败(hard_fail),就可以不使用任何EOS,完成充值/押注等操作。
分析
我们在jungle2测试网上,从账号jimimokeraaa
延迟60秒给playboy
转账1000 EOS
cleos --wallet-url http://172.18.0.2:9876 push action eosio.token transfer '["jimimokeraaa", "playboy" "1000.0000 EOS", "delay test"]' -p jimimokeraaa --delay-sec 60
产生的延迟交易如下,我们注意到交易哈希是存在的,但交易状态是delayed
60秒延迟后,实际执行,因为jimimokeraaa`账户并没有那么多EOS,会导致交易状态变成硬失败(hard_fail)
总结
项目方/交易所 对待交易不仅应关注交易哈希是否存在,还需要关注交易状态的值,来确认交易的真实性。