ValueDefi合约在铸币过程中将合约资产转换成3CRV时依赖CurveDAI/USDC/USDT池中USDC/3CRV的价格,导致攻击者可以通过操控CurveDAI/USDC/USDT池中USDC/3CRV的价格来操控mVUSD/3CRV的价值,从而获利。
具体过程如下:查看交易详情
1.攻击者从Aave借出80000个ETH,为攻击做准备;
2.攻击者使用80000个ETH在UniswapDAI-ETH(https://info.uniswap.org/pair/0xa478c2975ab1ea89e8196811f51a7b7ade33eb11)池中用闪电贷借出大量的DAI和在UniswapETH-USDT(https://info.uniswap.org/pair/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852)兑换出大量的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的价格。转换完成后,ValueDefi合约根据合约中总的3CRV的价值和攻击者充值的DAI数量计算mVUSD铸币的数量;
4.攻击者在CurveDAI/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的闪电贷。
使用TokenviewDefi浏览器查看流动性挖矿DeFi列表
来源:金色财经
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。