DPC代币合约遭到黑客攻击,损失超73,614BUSD,零时科技安全团队及时对此安全事件进行分析,详情可移步至分析文章“零时科技||DPC攻击事件分析”。
北京时间2022年9月10日,DPC代币合约遭到黑客攻击,损失超73,614 BUSD, 零时科技安全团队及时对此安全事件进行分析,详情可移步至分析文章“零时科技 || DPC攻击事件分析”。
DPC合约是一个ERC20代币合约,合约提供兑换、转移代币等功能。用户可以使用USDT兑换获得DPC代币,将DPC代币与USDT进行质押来获得DPC代币奖励。
由于DPC合约中计算奖励算法存在漏洞,攻击者通过质押流动性代币获得奖励,通过调用函数取出代币时进行奖励累加,在合约中取出任意数量代币都会进行奖励累加操作且对于操作没有频率的限制,并且在奖励累加时会进行两次累加操作,使得计算奖励时会翻倍增加。
1.通过质押代币将oldClaimQuota[] 与 dpcLp[]赋值
2.调用claimStakeLp()函数计算奖励
攻击合约核心代码
测试结果
攻击合约初始资金为204代币,向被攻击合约质押200代币后调用攻击函数,每调用一次攻击函数向被攻击合约转移1个代币实现奖励累加,调用四次攻击函数后获得的奖励为321代币,将奖励提取至被攻击合约。
修改之后用同样的攻击方法获利只有38代币,为正常应获得的奖励数额。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!