By : yudan@慢雾安全团队

据慢雾区消息,2020 年 11 月 15 日,Value DeFi 的 Value DeFi MultiStables 保险库遭遇闪电贷攻击,慢雾安全团队于第一时间跟进并进行相关分析,以简要的形式呈现给大家,供大家参考。

背景提要

Value DeFi 协议是旨在为去中心化金融带来公平、真实价值,以及创新的平台与产品套件。他们遵循四个核心原则:增加获取流动性挖矿收益的机会;提供下一代链上投票以进行治理; 其旗下的 Value Vaults 允许用户存入一定量的链上资产后获取收益。

攻击流程简析

1. 攻击者首先从 Aave 中借出 80000 个 ETH,为攻击做准备;

2. 攻击者使用 80000 个 ETH 在 Uniswap WETH/DAI 池中用闪电贷借出大量的 DAI 和 在 Uniswap WETH/USDT 兑换出大量的 USDT;

3. 用户调用 ValueMultiVaultBank 合约 的 deposit 合约使用第 2 步中小部分的 DAI 进行充值,ValueMultiVaultBank 合约中一共有 3 种资产,分别是 3CRV、bCRV、和 cCRV。ValueMultiVaultBank 合约在铸币的时候会将合约中的 bCRV, cCRV 转换成以 3CRV 进行计价,转化的途径为bCRV/cCRV -> USDC -> 3CRV。其中 USDC -> 3CRV 使用的是 DAI/USDC/USD 池中USDC/3CRV 的价格。转换完成后,Value Defi 合约根据合约中总的 3CRV 的价值和攻击者充值的 DAI 数量计算 mVUSD 铸币的数量;

4. 攻击者在 Curve DAI/USDC/USDT 池先使用第二步中剩余的大部分 DAI 和 USDT 兑换 USDC,拉高 DAI/USDC/USDT 池中的USDC/3CRV 的价格

5. 攻击者在 ValueMultiVaultBank 合约中发起 3CRV 提现,此时 ValueMultiVaultBank 合约和第 3 步一样,会先将合约中的 bCRV, cCRV 转换成以 3CRV 计价,由于在第 4 步中,USDC/3CRV 的价格已经被拉高,导致换算的过程中,ValueMultiVaultBank 合约中的 bCRV, cCRV 能换算成更多的 3CRV,也就是说使用同等份额的 mVUSD 可以换取更多的 3CRV;

6. 拿到 3CRV 后,攻击者到 Curve 的 DAI/USDC/USDT 池中使用 3CRV 换回 DAI,并在 Uniswap 中兑换回 ETH,然后归还 Aave 的闪电贷 。

总结

由于 Value Defi 合约在铸币过程中将合约资产转换成 3CRV 时依赖 Curve DAI/USDC/USDT 池中 USDC/3CRV的价格,导致攻击者可以通过操控 Curve DAI/USDC/USDT 池 中 USDC/3CRV 的价格来操控 mVUSD/3CRV 的价值,从而获利。

相关链接:

(1) 分析样本:

https://etherscan.io/tx/0x46a03488247425f845e444b9c10b52ba3c14927c687d38287c0faddc7471150a

声明:本文来自慢雾科技,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。