小浣熊下载站:值得大家信赖的下载站!

所在位置:首页 > 新闻资讯 > BlockSec DeFi 攻击系列之五以假乱真:DODO V2 众筹池造袭事件分析

BlockSec DeFi 攻击系列之五以假乱真:DODO V2 众筹池造袭事件分析

发布时间:2024-03-14 02:22:09来源:小浣熊下载站作者:


踏入以太坊的幽深领域,那些伺机而动的攻击者与套利者也得小心成为别人瞄准的靶子。在区块链生态炙手可热的去中心化金融(DeFi)世界里,安全性显得尤为关键。仅在过去的一年中,就发生了几十起安全事故。

BlockSec DeFi 攻击系列之五以假乱真:DODO V2 众筹池造袭事件分析

BlockSec团队:揭示DeFi安全迷雾


BlockSec团队作为长期关注并研究DeFi安全的专业团队,独立发现了多起重大安全事件,并在多个顶级安全会议如USENIX Security, CCS和Blackhat上发布了研究成果。接下来,我们将系统性梳理这些DeFi安全事件,深度剖析背后的根本原因。

0x0. 前言:一场意料之外的“狸猫换太子”


时光回溯到北京时间2021年3月9日凌晨,以太坊上的某去中心化交易平台V2众筹池遭遇了一场巧妙的攻击。攻击者小A利用了众筹池智能合约中的漏洞,用自己创造的假代币成功地换取了池内的真代币,上演了一场现实版的“狸猫换太子”。然而,后续事态的发展却并未按小A的设计剧本走……

对以太坊不太了解又爱听故事的朋友可以直接从【0x1 事件回顾】开始阅读;偏好直接了解攻击分析的朋友则可以跳至【0x2 攻击分析】部分。

0x1. 事件回顾:“成功?算成功,但不彻底。”


“攻击成功了吗?好像成功了,却又不尽然。” 这或许就是当时小A内心的写照。

代码的世界,无码即有洞。尽管智能合约头顶着“智能”的光环,但它本质上还是一串串等待执行的指令,总有人能找出其中的漏洞进行牟利。这次故事的主角——DODO V2众筹池智能合约,正是被小A发现并利用了其漏洞。

0x1.1 概念速览:揭开DODO V2众筹池的面纱


这DODO V2众筹池究竟是何方神圣?简单来说,它就是一个资金池,只不过这里的“资金”指的是以太坊上的ERC20代币。这个池子初始化时会设定两种有价值的代币作为交易对,用户可以通过使用该池提供的服务来进行操作。在这次攻击中,小A便是利用了闪电贷服务来实施他的计划。

0x1.2 小A的神操作:戏耍智能合约


小A做了两件事:

1.他创造了两个ERC20假代币FDO和FUSDT,然后将它们存入了即将被攻击的DODO池内。


接着,他利用了DODO V2众筹池的闪电贷功能。小A发现该池竟然可以被随意重新初始化,并且没有设置任何限制。于是,在借出资金后,他迅速将众筹池初始化为只处理他伪造的FDO/FUSDT这对假代币,并提前预存了足量的假代币进入池子。这样一来,当众筹池检查借款偿还情况时,检测的对象不再是真实的代币,而是小A放入的假代币,从而让小A用假代币轻易换取了真金白银。



0x1.3 攻击过程:一波三折,螳螂捕蝉黄雀在后


第一回合:抢跑者的逆袭

小A第一次瞄准的是(WSZO/USDT)池,但他还没来得及收网,就被一个名为小B的抢跑机器人截胡了。小B通过提高交易费的方式成功插队,使得矿工优先打包了他的交易,导致小A错失良机。

第二回合:半路杀出程咬金

两次失利后,小A把目标转向了(ETHA/USDT)池,并提高了交易费用防止再次被抢跑。然而,他并不知道小B已经盯上了他。结果,小A再一次被小B抢先。

第三回合:搬起石头砸自己的脚

第三次攻击中小A终于绕过了小B,但在成功取出资金后,他选择先将其存入一个新合约,打算之后再转移到自己账户。然而这个临时存储合约存在一个任何人都能提取资金的漏洞,这一疏忽又被另一位角色——小C发现。当小A准备转移资金时,又一次遭遇了抢跑。

0x2. 攻击分析:抽丝剥茧还原真相


为了便于理解,我们以下文提到的第三次攻击为例进行详细解析。

0x2.1 代码层面深入解读


涉及本次攻击的关键函数如下:

getVaultReserve 函数:用于获取当前池中代币对的储备量。


flashloan 函数:实现闪电贷功能,用户调用时会根据参数转入相应数量的代币,并触发外部逻辑。


init 函数:最关键的初始化函数,允许任何人随时调用重新初始化池子,且没有权限限制,这正是漏洞所在。



0x2.2 攻击全程再现


以下是攻击交易的具体流程,详情可通过我们团队的交易分析工具查看: https://tx.blocksecteam.com/

步骤0-5(内容同原文)

0x3. 小编建议与安全建议


此次攻击之所以发生,主要原因在于DODO V2众筹池的init函数设计缺陷。正常情况下,该函数应在创建池时仅调用一次,并随后限制访问权限以及禁止重复调用。攻击者小A正是利用了init函数可以随意重新初始化池子的漏洞,结合闪电贷机制,用假代币成功换取了真代币。

因此,我们向相关项目方提出以下建议:

加强对合约核心功能的权限审核,避免因权限控制不足导致关键函数被滥用,从而引发潜在风险和损失。


提升代码审计意识,项目上线前务必咨询专业的区块链安全公司进行全面的安全审计,最大程度保障项目安全稳定运行。



0x4. 参考文献


0x5. 附录


文中涉及的外部地址与合约地址
文中涉及的交易记录(五次攻击) DODO币

  • 热门资讯
  • 最新资讯
  • 手游排行榜
  • 手游新品榜