DOD:DODO攻击事件分析:搬起“石头”,竟砸了自己的脚?

安全态势感知平台】舆情监测显示,去中心化交易所DODO上的wCRES/USDT资金池似乎被黑客攻击,转移走价值近98万美元的WrappedCRES和近114万美元的USDT。据DODO官方回复目前团队正在进行调查。

原文链接如下:

https://www.odaily.com/newsflashes/235047.html

慢雾:DOD合约中的BUSD代币被非预期取出,主要是DOD低价情况下与合约锁定的BUSD将产生套利空间:据慢雾区情报,2022 年 3 月 10 日, BSC 链上的 DOD 项目中锁定的 BUSD 代币被非预期的取出。慢雾安全团队进行分析原因如下:

1. DOD 项目使用了一种特定的锁仓机制,当 DOD 合约中 BUSD 数量大于 99,999,000 或 DOD 销毁数量超过 99,999,000,000,000 或 DOD 总供应量低于 1,000,000,000 时将触发 DOD 合约解锁,若不满足以上条件,DOD 合约也将在五年后自动解锁。DOD 合约解锁后的情况下,用户向 DOD 合约中转入指定数量的 DOD 代币后将获取该数量 1/10 的 BUSD 代币,即转入的 DOD 代币数量越多获得的 BUSD 也越多。

2. 但由于 DOD 代币价格较低,恶意用户使用了 2.8 个 BNB 即兑换出 99,990,000 个 DOD。

3. 随后从各个池子中闪电贷借出大量的 BUSD 转入 DOD 合约中,以满足合约中 BUSD 数量大于 99,999,000 的解锁条件。

4. 之后只需要调用 DOD 合约中的 swap 函数,将持有的 DOD 代币转入 DOD 合约中,既可取出 1/10 转入数量的 BUSD 代币。

5. 因此 DOD 合约中的 BUSD 代币被非预期的取出。

本次 DOD 合约中的 BUSD 代币被非预期取出的主要原因在于项目方并未考虑到 DOD 低价情况下与合约中锁定的 BUSD 将产生套利空间。慢雾安全团队建议在进行经济模型设计时应充分考虑各方面因素带来的影响。[2022/3/10 13:48:45]

△图1

DODO社区建议将vDODO会员奖励从每区块12 DODO降低为6 DODO:3月9日,官方消息,DODO社区发起DIP-11提案,建议将vDODO会员奖励从每区块12 DODO降低为6 DODO,以及将vDODO退出费用上限从15%降至10%。

投票日期为3月11日1:00 PM至3月15日1:00 PM(SGT)。[2022/3/9 13:46:26]

成都链安安全团队第一时间针对该事件启动安全应急响应,并将事件细节分析进行梳理,以供参考。其实,该事件本身来说并不复杂,其攻击流程也非常简单。但因该事件涉及到“闪电贷”“重入攻击”等热门话题,因此成都链安认为有必要对该事件进行发声。

去中心化交易平台DODO宣布上线FEI和TRIBE代币:去中心化交易平台DODO宣布上线FEI和TRIBE代币。[2021/4/4 19:45:05]

二、事件分析

该事件的攻击原因主要在于合约的init函数未进行限制,从而导致攻击者有权利进行调用,如图2所示:

△图2

经分析,攻击者利用了DODO合约中提供的闪电贷工具,首先向合约转移了两种空气币。紧接着,发起了一笔闪电贷交易。在交易结束之前,调用合约的init函数将币种指向空气币,从而躲过了闪电贷的归还校验,如图3所示。

三、安全建议

成都链安安全团队认为,本起事件并不复杂,但值得敲响警钟,引起广大项目方的注意。具体而言,首先是DODO的闪电贷函数是进行了重入校验的,但由于init函数并没有添加重入校验,所以导致了类似重入攻击的发生。

另外,结合成都链安审计团队以往对项目方的安全审计经验,由于目前代码的复杂度越来越高,模块化也随之越来越多,有许多项目方虽然都使用了init函数进行管理,但需要提醒的是,init函数在solidity中也仅仅只是一个普通函数,在此呼吁广大项目方与开发者引起重视。切记,不要误以为取名为“init”,就只能进行一次调用。

同时,我们建议,在日常的安全防护中,项目方也需要做好事无巨细的安全加固工作;通过借助第三方安全公司的专业力量,采用“形式化验证与人工审核”结合的复合式审计方法,方能实现对项目面面俱到的全方位护航。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:0ms0-0:749ms