如何使用閃電貸從 0 撬動百萬美元?Value DeFi 協議閃電貸攻擊簡要分析

By :[email protected]慢霧安全團隊

據慢霧區訊息,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. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读