火星财经消息,据 BlockSec 监测,DBXen 合约今日上午遭遇攻击,估计损失约 15 万美元。根本原因在于 ERC2771 元交易下发送者身份不一致。在 burnBatch() 函数中,gasWrapper() 修饰器使用 _msgSender()(实际用户)更新状态,而回调函数 onTokenBurned() 使用 msg.sender(转发器)。这导致 accCycleBatchesBurned 为用户记录,但 lastActiveCycle 错误地为转发器更新。 该不一致性破坏了 claimFees() 和 claimRewards() 的逻辑。当为用户运行 updateStats() 时,合约错误地认为存在未处理的已销毁批次,因为 accCycleBatchesBurned 已更新而 lastActiveCycle 未更新,从而错误计算奖励和费用,使攻击者能够提取超额资金获利。
发表评论 取消回复