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