织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 区块链

DODO 众筹池被黑损失 200 万美元,慢雾拆解攻击细节

时间:2021-03-09 19:36来源:未知 作者:admin 点击:
本次攻击发生的主要原因是资金池合约初始化函数没有任何鉴权和防止重复调用初始化的限制,攻击者利用漏洞将假币换成真币转出。 原文标题:《狸猫换太子 —— DODO 被黑分析》 撰

本次攻击发生的主要原因是资金池合约初始化函数没有任何鉴权和防止重复调用初始化的限制,攻击者利用漏洞将假币换成真币转出。

原文标题:《狸猫换太子 —— DODO 被黑分析》
撰文:慢雾安全团队

DODO 众筹池被黑损失 200 万美元,慢雾拆解攻击细节

据消息,去中心化交易平台 DODO 的 wCRES/USDT V2 资金池被黑客攻击,转走价值近 98 万美元的 wCRES 和近 114 万美元的 USDT。DODO 表示,团队已下线相关资金池建池入口,该攻击仅影响 DODO V2 众筹池,除 V2 众筹池之外,其他资金池均安全;团队正在与安全公司合作调查,并努力挽回部分资金。

慢雾安全团队在第一时间跟进并分析,下面将细节分析给大家参考。

攻击细节分析

通过查看本次攻击交易,我们可以发现整个攻击过程非常简短。攻击者先将 FDO 和 FUSDT 转入 wCRES/USDT 资金池中,然后通过资金池合约的 flashLoan 函数借出 wCRES 和 USDT 代币,并对资金池合约进行初始化操作。

DODO 众筹池被黑损失 200 万美元,慢雾拆解攻击细节

为何存入 FDO 和 FUSDT 代币却能成功借出 wCRES 和 USDT ,并且初始化资金池合约呢?是因为资金池的闪电贷功能有漏洞吗?

接下来我们对 flashLoan 函数进行详细分析:

DODO 众筹池被黑损失 200 万美元,慢雾拆解攻击细节

通过分析具体代码我们可以发现,在进行闪电贷时会先通过_transferBaseOut 和_transferQuoteOut 函数将资金转出,然后通过 DVMFlashLoanCall 函数进行具体外部逻辑调用,最后再对合约的资金进行检查。可以发现这是正常闪电贷功能,那么问题只能出在闪电贷时对外部逻辑的执行上。

通过分析闪电贷的外部逻辑调用,可以发现攻击者调用了 wCRES/USDT 资金池合约的 init 函数,并传入了 FDO 地址和 FUSDT 地址对资金池合约进行了初始化操作。

DODO 众筹池被黑损失 200 万美元,慢雾拆解攻击细节

到这里我们就可以发现资金池合约可以被重新初始化。为了一探究竟,接下来我们对初始化函数进行具体的分析:

DODO 众筹池被黑损失 200 万美元,慢雾拆解攻击细节

通过具体的代码我们可以发现,资金池合约的初始化函数并没有任何鉴权以及防止重复调用初始化的逻辑,这将导致任何人都可以对资金池合约的初始化函数进行调用并重新初始化合约。至此,我们可以得出本次攻击的完整攻击流程。 (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容