{"content":{"title":"零时科技 || DPC攻击事件分析","body":"![](https:\/\/p3.ssl.qhimg.com\/t014ee861c92a44b38a.jpg)\r\n# 事件背景\r\n\r\n零时科技区块链安全情报平台监控到消息，北京时间2022年9月10日，DPC代币合约遭到黑客攻击，损失超73,614 BUSD, 零时科技安全团队及时对此安全事件进行分析。\r\n\r\n# 攻击信息\r\n\r\n攻击者钱包地址：\r\n\r\n0xf211Fa86CBc60d693D687075B03dFF3c225b25C9\r\n\r\n攻击合约地址：\r\n\r\n0x2109bbecB0a563e204985524Dd3DB2F6254AB419\r\n\r\n被攻击合约地址：\r\n\r\n0xb75ca3c3e99747d0e2f6e75a9fbd17f5ac03cebe\r\n\r\n# 攻击步骤\r\n\r\n1.向被攻击合约转移代币，每次转移100 BUSD，共转移 4,200 BUSD\r\n![](https:\/\/p5.ssl.qhimg.com\/t01d534edd3d5872ed9.png)\r\n2.使用 50 BUSD 兑换 3.63 DPC\r\n![](https:\/\/p5.ssl.qhimg.com\/t01fd878e3423129b25.png)\r\n3.将兑换得到的 DPC与 47.4 BUSD 用于添加流动性，将获得的流动性代币质押\r\n![](https:\/\/p0.ssl.qhimg.com\/t011377f2b2475a30a6.png)\r\n4.调用claimStakeLp函数多次取出0.000000000000000001 LP代币，在claimStakeLp中会将当前奖励与之前奖励相加，使得获得的奖励增加。\r\n![](https:\/\/p2.ssl.qhimg.com\/t01f11b82f28e1fe877.png)\r\n![](https:\/\/p3.ssl.qhimg.com\/t012959fb60c817e45c.png)\r\n5.调用claimDpcAirdrop函数获得奖励20,602 DPC，将获得奖励兑换为 75,664 BUSD\r\n![](https:\/\/p4.ssl.qhimg.com\/t019e908e243f7d744d.png)\r\n# 漏洞核心\r\n\r\nDPC中通过质押LP代币获得奖励，攻击者通过调用合约中claimStakeLp 函数使得获得的奖励增加。\r\n![](https:\/\/p2.ssl.qhimg.com\/t0174acae6524152710.png)\r\n函数claimStakeLp() 中计算获得的奖励是将之前的奖励与getClaimQuota()计算出的奖励累加，而在函数getClaimQuota()中也进行了一次ClaimQuota的累加计算（下图），攻击者通过多次调用claimStakeLp函数使得获得的奖励增加。\r\n![](https:\/\/p4.ssl.qhimg.com\/t0170227de87fe2f8e4.png)\r\n第一次调用claimStakeLp函数获得奖励\r\n![](https:\/\/p5.ssl.qhimg.com\/t01f7f854e9f14b78d7.png)\r\n多次调用claimStakeLp函数后获得奖励\r\n![](https:\/\/p5.ssl.qhimg.com\/t01d90aee19560ea6f7.png)\r\n# 资金来源\r\n\r\n通过混币平台Tornado.Cash转入 10 BNB\r\n![](https:\/\/p1.ssl.qhimg.com\/t01faa09aea23aa554e.png)\r\n# 资金流向\r\n\r\n攻击者通过重复攻击共获利约73,614 BUSD，目前资金仍在攻击者钱包中。\r\n![](https:\/\/p5.ssl.qhimg.com\/t018c5e41476d0da92f.png)\r\n\r\n# 总结及建议\r\n\r\n此次攻击主要原因是对于奖励机制设置出现漏洞，使得奖励数额成倍数增加，且奖励数额计算时与调用claimStakeLp()函数时传入的数字无关，因此攻击者可以用一个较小的金额进行多次调用，实现获得大额的奖励。\r\n\r\n# 安全建议\r\n\r\n建议计算中涉及到函数调用时需要详细检查变量数值变动情况，避免数值被重复计算。\r\n\r\n建议项目方上线前进行多次审计，避免出现审计步骤缺失。"},"author":{"user":"https:\/\/learnblockchain.cn\/people\/52","address":null},"history":null,"timestamp":1663235545,"version":1}