freeBuf
主站

分类

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

特色

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

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

零时科技 || DPC攻击复现
零时科技 2022-09-30 12:43:29 73962
所属地 陕西省

微信图片_20220929155604.jpg

背景

北京时间2022年9月10日,DPC代币合约遭到黑客攻击,损失超73,614 BUSD, 零时科技安全团队及时对此安全事件进行分析,详情可移步至分析文章“零时科技 || DPC攻击事件分析”。

DPC合约简介

DPC合约是一个ERC20代币合约,合约提供兑换、转移代币等功能。用户可以使用USDT兑换获得DPC代币,将DPC代币与USDT进行质押来获得DPC代币奖励。

漏洞核心

由于DPC合约中计算奖励算法存在漏洞,攻击者通过质押流动性代币获得奖励,通过调用函数取出代币时进行奖励累加,在合约中取出任意数量代币都会进行奖励累加操作且对于操作没有频率的限制,并且在奖励累加时会进行两次累加操作,使得计算奖励时会翻倍增加。

1.通过质押代币将oldClaimQuota[] 与 dpcLp[]赋值

图片1.png

2.调用claimStakeLp()函数计算奖励

图片2.png

  1. getClaimQuota()函数中可以看到再次执行了ClaimQuota的加法操作,调用一次计算奖励函数时会给奖励进行翻倍。

图片3.png

漏洞测试

攻击合约核心代码

图片5.png

测试结果

攻击合约初始资金为204代币,向被攻击合约质押200代币后调用攻击函数,每调用一次攻击函数向被攻击合约转移1个代币实现奖励累加,调用四次攻击函数后获得的奖励为321代币,将奖励提取至被攻击合约。

漏洞预防

  1. 在计算奖励的函数中设置奖励计算的频率,并且设置每次调用函数时传入参数的最小值,避免攻击者可以通过转移小额代币就可以实现奖励的累加。
  2. 将计算奖励函数中累加计算改为只进行函数调用,避免一次调用函数实际进行了两次奖励累加。

图片6.png

修改之后用同样的攻击方法获利只有38代币,为正常应获得的奖励数额。

图片7.png

# 黑客攻击 # 安全审计 # 攻击分析 # 零时科技
本文为 零时科技 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
零时科技 LV.7
这家伙太懒了,还未填写个人描述!
  • 119 文章数
  • 16 关注者
【安全月报】| 3月因加密货币漏洞和诈骗造成损失达3,871万美元
2025-04-01
零时科技 || Four.meme 攻击事件分析2
2025-03-19
零时科技 || H2O 攻击事件分析
2025-03-18