2020 年 10 月 26 號中午 12 時 Harvest Finance 驚傳遭駭,官方稍後回應確認協議遭到駭客攻擊。駭客總計利用閃電貸奪走了約 2,400 萬美元的資金,並歸還了其中的 250 萬美元給合約部署者。本文將簡要分析此次閃電貸攻擊細節。本文由專欄作者 慢霧科技 SlowMist 撰稿,不代表動區立場。
(前情提要:10億美元危險了!DeFi超級明星「Harvest」遭遇閃電貸,Farm一小時暴跌60%)
2020 年 10 月 26 號,據消息 Harvest Finance 項目遭受閃電貸攻擊,損失超過 400 萬美元。
以下為筆者對此事件的簡要分析:
1/ 攻擊者通過 Tornado.cash 轉入 20 ETH 作為後續攻擊手續費。
2/ 攻擊者通過 Uniswap V2 閃電貸借出巨額 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 的鑄幣數量,從而使攻擊者有利可圖。
📍相關報導📍
KuCoin駭客再轉移「66.5萬美元以太幣」,已透過DEXs套現近2000萬鎂
Defi警示|駭客重現閃電貸手法,耗盡 Balancer 資金池超過 50 萬美元資產 (Bal)
什麼是「閃電貸 Flash Loan」?十幾秒內從借貸協議 bZx 狠賺 35 萬美元的 DeFi 策略
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務