据IMEOS消息,针对 DApp 遭受双花攻击的传闻,BetDice 回应攻击细节:不是双花攻击,是有人制造微分叉造成回滚,进而进行重放攻击。目前还无法重现攻击细节,但经过 BetDice 和 eoscafe 的研究,可以得出以下推论:
1. 攻击者部署合约;
2. 发送投注请求到节点;
3. 节点执行成功并同步上 BP 节点;
4. 攻击者在这个时间更新合约挡住 BP 节点执行;
5. BP 节点执行不成功;
6. api 节点于 30 秒内被 BP 节点通知交易失败;
7. 但结果已通知出去;
8. 当攻击者发觉赢了,再次重复投注,并不阻挡执行,否则重复攻击。
但目前无法重现此攻击,和以往的攻击相比,此次攻击手法很高明。BetDice 背后有 24 个节点在运行,很早做了读写分离,也不是同一节点进行读写,所以读写分离不能解决这个问题。
目前可以观察到:
1.攻击者不需要转走余额;
2.攻击者有合约;
3.攻击者攻击速度很慢;
4.攻击者提交的交易全部都在 api 节点上回滚了;
5.无论输赢全部都回滚,后来再重复投注现在可以确定有人在利用微分叉进行回滚,但如何实现的还无法确定。
BetDice 提醒其他 DApp 开发者,如果无法重现,现阶段唯一的应对办法是让重复投注得出不一样的结果,项目方要警惕再次被攻击的风险。