據慢霧區消息,2020 年11 月15 日,Value DeFi 的Value DeFi MultiStables 保險庫遭遇閃電貸攻擊,慢霧安全團隊於第一時間跟進並進行相關分析,以簡要的形式呈現給大家,供大家參考。 1. 攻擊者首先從Aave 中藉出80000 個ETH,為攻擊做準備; 2. 攻擊者使用80000 個ETH 在Uniswap WETH/DAI 池中用閃電貸借出大量的DAI 和在Uniswap WETH/DAI 兌換出大量的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