零时科技 || DPC攻击复现

admin 2022年9月29日23:06:42评论30 views字数 981阅读3分16秒阅读模式
零时科技 || DPC攻击复现


背景

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


DPC合约简介

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


漏洞核心

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


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

零时科技 || DPC攻击复现

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

零时科技 || DPC攻击复现

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

零时科技 || DPC攻击复现


漏洞测试

攻击合约核心代码

零时科技 || DPC攻击复现

测试结果

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

零时科技 || DPC攻击复现


漏洞预防

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

  2. 将计算奖励函数中累加计算改为只进行函数调用,避免一次调用函数实际进行了两次奖励累加。

零时科技 || DPC攻击复现

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

零时科技 || DPC攻击复现


零时


零时科技 || DPC攻击复现


零时科技 || DPC攻击复现


往期内容回顾


零时科技 | Nomad 跨链桥被盗1.8亿美元事件分析

零时科技 | Audius金库1850万枚AUDIO被盗事件分析

零时科技 | Fortress攻击事件分析

Beanstalk Farms攻击事件分析 | 零时科技

为什么黑客如此“钟爱”跨链桥

零时科技 | Agave Finance攻击事件分析

零时科技联合创始人黄鱼先生受邀对话《Web3应用创新与生态安全》

零时科技创始人邓永凯先生受邀对话《公链隐私保护及生态安全》

零时科技 | 被盗6.1亿美金,Poly Network 被攻击复盘分析

零时科技 || Uniswap v3出现漏洞?No,新型钓鱼来袭!

原文始发于微信公众号(零时科技):零时科技 || DPC攻击复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月29日23:06:42
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   零时科技 || DPC攻击复现https://cn-sec.com/archives/1324925.html

发表评论

匿名网友 填写信息