慢霧:Harvest.Finance 被黑事件簡析

買賣虛擬貨幣

2020 年 10 月 26 號,據慢霧區訊息 Harvest Finance 專案遭受閃電貸攻擊,損失超過 400 萬美元。以下為慢霧安全團隊對此事件的簡要分析。

1. 攻擊者透過 Tornado.cash 轉入 20ETH 作為後續攻擊手續費

2. 攻擊者透過 UniswapV2 閃電貸借出鉅額 USDC 與 USDT

3. 攻擊者先透過 Curve 的 exchange_underlying 函式將 USDT 換成 USDC,此時 Curve yUSDC 池中的 investedUnderlyingBalance 將相對應的變小

4. 隨後攻擊者透過 Harvest 的 deposit 將鉅額 USDC 充值進 Vault 中,充值的同時 Harvest 的 Vault 將鑄出 fUSDC,而鑄出的數量計算方式如下:

amount.mul(totalSupply()).div(underlyingBalanceWithInvestment());

計算方式中的 underlyingBalanceWithInvestment 一部分取的是 Curve 中的 investedUnderlyingBalance 值,由於 Curve 中 investedUnderlyingBalance 的變化將導致 Vault 鑄出更多的 fUSDC

5. 之後再透過 Curve 把 USDC 換成 USDT 將失衡的價格拉回正常

6. 最後只需要把 fUSDC 歸還給 Vault 即可獲得比充值時更多的 USDC。

7. 隨後攻擊者開始重複此過程持續獲利

其他攻擊流程與上述分析過程類似

參考交易雜湊:

0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877

總結:此次攻擊主要是 Harvest Finance 的 fToken(fUSDC、fUSDT...) 在鑄幣時採用的是 Curve y池中的報價(即使用 Curve 作為喂價來源),導致攻擊者可以透過鉅額兌換操控預言機的價格來控制 Harvest Finance 中 fToken 的鑄幣數量,從而使攻擊者有利可圖。

免責聲明:

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

推荐阅读

;