Web3 安全 | Compounder Finance 被攻击事件分析
2023-6-7 18:40:13 Author: mp.weixin.qq.com(查看原文) 阅读量:1 收藏

根据 NUMEN 链上监控显示,Jun-07-2023 04:14:11 AM +UTC, Ethereum 链上 Compounder Finance 项目由于流动性池中比例可通过调用方法更新发生变化,导致兑换资金数量出现波动从而遭到攻击,损失27,147枚 DAI,价值约27,147美元。

目前被盗资金暂未移动。

事件分析

攻击者地址:

etherscan.io/address/0x0e816b0d0a66252c72af822d3e0773a2676f3278

攻击者合约地址:

etherscan.io/address/0x2d7973177d594237a9b347cd41082af4cbb40f2b

被攻击合约:etherscan.io/address/0xaf274e912243b19b882f02d731dacd7cd13072d0

根本原因

由于流动性池中比例发生变化,导致兑换资金数量出现波动。

攻击流程

1.最初,攻击者通过 Uniswap V3 闪电贷借入123.9万枚 DAI。

然后攻击者抵押了20万枚 DAI 和100万枚 DAI,分别获得了134万枚 cDAI 和88万枚 yDAI。

2.攻击者将88万枚 yDAI 分别兑换成5万 yDAI 以及4.1万枚 yUSDC。
他们还将16万枚 yDAI 转换为9.4万枚 yTUSD,将67万枚 yDAI 转换为48,693,900 亿枚 yUSDT。
3.随后,攻击者将134万 cDAI 解除质押,并立即调用 StrategyDAICurve 存款,这里会将当前合约所有的 DAI 存入并且将 yDAI 添加流动性,这一步改变了交易对平衡。
4.攻击者将之前的三笔兑换(yDAI 分三笔兑换为4.1万 yUSDC,9.4万 yTUSD,48,693,900亿枚 yUSDT)按照原路径兑换:
  • 4.1万 yUSDC 兑换成75万 yDAI(兑换获利70万 yDAI)
  • 9.4万 yTUSD 兑换成10万 yDAI(兑换亏损6万 yDAI)
  • 48,693,900亿 yUSDT 兑换成5.1万 yDAI(兑换亏损62万 yDAI)
  • 共计90万 yDAI,比兑换之前的88万枚获利2万 yDAI。
5.最后,在提现过程中,攻击者释放了质押中累计的91万枚 yDAI,从而提现了103万枚 DAI。
在偿还闪电贷和手续费后,攻击者获利27,147枚 DAI。

  总 结 

更新流动性时需要考虑两种代币的数量是否处于正常比例,避免直接更新池子中单个币种数量,导致兑换资金数量出现波动从而被操控。

此外,代码上线前应做好全面的安全审计。

END

Numen 官网
https://numencyber.com/ 
GitHub
https://github.com/NumenCyber
Twitter
https://twitter.com/@numencyber
Medium
https://medium.com/@numencyberlabs
LinkedIn
https://www.linkedin.com/company/numencyber/

文章来源: https://mp.weixin.qq.com/s?__biz=Mzg4MDcxNTc2NA==&mid=2247485892&idx=1&sn=382b27774cc0ce17cda469e4efa5e04b&chksm=cf71bb5ff8063249cfa74e75c99c0b02f3930d8e1ffe8ae5bcebfd2c2b92560eeff307465541&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh