freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

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

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

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

FreeBuf+小程序

FreeBuf+小程序

零时科技 | DCFToken 攻击事件分析
零时科技 2024-12-25 15:07:06 63865
所属地 陕西省

背景介绍

近期,我们监控到一起针对 BnbSmartChain 上的项目 DCFToken的链上攻击事件,

https://bscscan.com/tx/0xa88b907960c3c5a9dfcfd28aff12136359034653e34fa6d7bb9a6ef9c7a0532f

被攻击的项目为 DCFToken ,攻击者通过此次攻击获利约为 8800 USD 。

攻击及事件分析

首先,攻击者创建了一个新的合约,然后调用了该合约,

1735110218_676bae4a4e06a3ec4cf79.png!small?1735110218025

接着,该合约从 PancakeSwapV3Pool 中利用 flash 贷了 2,750,000 BUSDT 。

1735110234_676bae5a376f63a0677bb.png!small?1735110233972

随后,攻击者利用 flash 贷来的初始资金开始针对进行针对 DCFToken 的攻击。第一步,攻击者利用项目的未开源合约的兑换功能( BUSDT 兑换 DUSD )将该合约的所有 DUSD 使用 BUSDT 兑换,该函数的签名为 0xabb81c12 。

通过反编译我们得到该函数的具体实现如下:

1735110244_676bae64d66bc561a2a25.png!small?1735110245058

第一步:

从代码中可以看出 BUSDT 和 DUSD 的兑换比例由 stor_5 控制,由于攻击时 stor_5 为 1000 ,所以BUSDT和 DUSD 兑换比例为 1:1 。因此,攻击者使用了 10,927 BUSDT 将该合约中的 DUSD 全部兑换。

1735110260_676bae740a4e235814e8b.png!small?1735110259746

第二步:

利用 DUSD 购买 DCFToken ,该函数的签名为 0x62ee2f14 。通过反编译我们可以看到具体的实现如下:

1735110270_676bae7e7bc7355d042dd.png!small?1735110271562

简单来说,该函数实现了使用 DUSD 购买 DCFToken 的功能,其中购买价格由 PancakeSwapV2 的BUSDT 和 DCFToken 的价格决定。也就意味着在该函数的逻辑中, DUSD 和 BUSDT 的价格为 1:1 。

接着,会将购买的 DCFToken 的 1% 转入系统地址中。

攻击者随后利用第一步中购买的所有 DUSD 购买 DCFToken 。

1735110283_676bae8b6f9eb64f670e7.png!small?1735110283237

接着,攻击者重复上述的步骤,直到将项目方用于兑换 DUSD 和 DCFToken 的合约中的 DCF 买空。随后,攻击者利用 PancakeSwapV2 的兑换功能,将手中的 DCFToken 兑换为 BUSDT ,来操纵DCFToken 的价格,经过此次兑换,DCFToken 的价格由 1 BUSDT = 126 DCFToken 拉升到了 1BUSDT = 3 DCFToken 。

兑换前: 

1735110296_676bae98764afbda7034b.png!small?1735110296129

兑换后:
1735110308_676baea4e1c1446b3e7b5.png!small?1735110309408

第三步:

攻击者再掏空项目方合约中的 DCFToken 后,使用该合约的 DCFToken 兑换 DUSD ,该函数的签名为 0xd5088d27 ,与第二步中使用 DUSD 购买 DCFToken 类似。同样的,购买价格由PancakeSwapV2 的 BUSDT 和 DCFToken 的价格决定。也就意味着在该函数的逻辑中,DUSD 和BUSDT 的价格为 1:1 。接着,会将购买的 DUSD 的 1% 转入系统地址中。

1735110326_676baeb6e1cdf85a26c8f.png!small?1735110326696

第四步:

攻击者再利用项目方合约中的 DUSD 兑换 BUSDT 的功能,该函数的签名为 0xfea1cdc9 ,兑换比例为 1:1 ,但是 1% 的 BUSDT 会转入项目方地址中。

1735110339_676baec38a8fd1560282d.png!small?1735110339464

攻击者继续重复第三和第四步,直到掏空项目方合约中的 BUSDT 。

最后,攻击者使用剩余的 DCFToken ,利用 PancakeSwapV2 全部兑换为了 BUSDT ,再归还 flash 的贷款和利息后,获利 8,763 BUSDT 。

简单来讲,该项目的漏洞出现在兑换的价格计算上。DCFToken 的价格依赖于 PancakeSwap ,但是,使用项目方合约兑换又不影响 DCFToken 的价格。因此攻击者先使用 BUSDT 兑换 DUSD 再兑换DCF(99%) 掏空 DCFToken ,再利用 PancakeSwap 的 swap 拉升 DCFToken 的价格,最后使用DCFToken 兑换 DUSD(99%) 再兑换 BUSDT(99%) 来完成获利。

总结

本次漏洞成因主要是因为 DCFToken 项目方合约在获取 DCFToken 的价格时,通过单一来源PancakeSwapV2 来计算,导致价格被攻击者操纵,最终利用价差套利。建议项目方在设计经济模型、价格计算机制和代码运行逻辑时要多方验证,合约上线前审计时尽量选择多个审计公司交叉审计。

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