Web3 安全 | Compounder Finance 被攻击事件分析
2023-06-07 12:40
Numen Cyber Labs
2023-06-07 12:40
Numen Cyber Labs
2023-06-07 12:40
订阅此专栏
收藏此文章

根据 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/

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

Numen Cyber Labs
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开