freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

零时科技 || DPC攻击事件分析
2022-09-15 17:27:46
所属地 陕西省

1663233786_6322eefa94682f3c7cf2b.jpg!small

事件背景

零时科技区块链安全情报平台监控到消息,北京时间2022年9月10日,DPC代币合约遭到黑客攻击,损失超73,614 BUSD, 零时科技安全团队及时对此安全事件进行分析。

攻击信息

攻击者钱包地址:

0xf211Fa86CBc60d693D687075B03dFF3c225b25C9

攻击合约地址:

0x2109bbecB0a563e204985524Dd3DB2F6254AB419

被攻击合约地址:

0xb75ca3c3e99747d0e2f6e75a9fbd17f5ac03cebe

攻击步骤

1. 向被攻击合约转移代币,每次转移100 BUSD,共转移 4,200 BUSD

1663233821_6322ef1d1a7150c2ec0a5.png!small

2. 使用 50 BUSD 兑换 3.63 DPC

1663233835_6322ef2b68eb714890b25.png!small

3. 将兑换得到的 DPC与 47.4 BUSD 用于添加流动性,将获得的流动性代币质押

1663233850_6322ef3a3a8076038ff94.png!small

4. 调用claimStakeLp函数多次取出0.000000000000000001 LP代币,在claimStakeLp中会将当前奖励与之前奖励相加,使得获得的奖励增加。

1663233865_6322ef4982e10f7e5e62d.png!small

1663233878_6322ef56b56acba2468ff.png!small

5. 调用claimDpcAirdrop函数获得奖励20,602 DPC,将获得奖励兑换为 75,664 BUSD

1663233892_6322ef64b2b999bfa61df.png!small

漏洞核心

DPC中通过质押LP代币获得奖励,攻击者通过调用合约中claimStakeLp 函数使得获得的奖励增加。

1663233908_6322ef740dcbba67ffd8b.png!small

函数claimStakeLp() 中计算获得的奖励是将之前的奖励与getClaimQuota()计算出的奖励累加,而在函数getClaimQuota()中也进行了一次ClaimQuota的累加计算(下图),攻击者通过多次调用claimStakeLp函数使得获得的奖励增加。

1663233923_6322ef83e67b93a3afa6a.png!small

第一次调用claimStakeLp函数获得奖励

1663233939_6322ef9392f32c854bebb.png!small

多次调用claimStakeLp函数后获得奖励

1663233954_6322efa22443009af4a14.png!small

资金来源

通过混币平台Tornado.Cash转入 10 BNB

1663233973_6322efb56723ade45ad61.png!small

资金流向

攻击者通过重复攻击共获利约73,614 BUSD,目前资金仍在攻击者钱包中。

1663233986_6322efc2aedbfc9d94628.png!small

总结及建议

此次攻击主要原因是对于奖励机制设置出现漏洞,使得奖励数额成倍数增加,且奖励数额计算时与调用claimStakeLp()函数时传入的数字无关,因此攻击者可以用一个较小的金额进行多次调用,实现获得大额的奖励。

安全建议

  • 建议计算中涉及到函数调用时需要详细检查变量数值变动情况,避免数值被重复计算。
  • 建议项目方上线前进行多次审计,避免出现审计步骤缺失。
# 黑客攻击 # 安全审计 # 零时科技
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者