北京时间2022年8月2日,CertiK安全团队监测到Nomad Bridge遭受攻击,导致了价值约1.9亿美元的损失。
合约的问题在于在initialize() 函数被调用的时候,“committedRoot” 被设成了0x00地址。因此,攻击者可以通过消息的验证,将在桥合约中的代币转移。
攻击步骤
① 攻击者调用process()函数开始攻击。
② process()函数中调用了acceptableRoot(messages[_messageHash]),这个函数检查了被提交的root以及OptimisticTimeOut是否过期。
③此时函数acceptableRoot(messages[_messageHash])返回了true,也就是说这条message就被批准了。这是因为0x0000在初始化过程中被设置为了true(CertiK安全专家认为这是部署过程中产生的错误)。
④当这条message被批准后,攻击者即可从桥中转移资金。
攻击交易
攻击示例:
○ 在Moonbeam Bridge上转移了0.01 WBTC:
欢迎光临 优惠论坛 (https://www.tcelue.co/) | Powered by Discuz! X3.1 |