創宇區塊鏈實驗室 | Harvest.finance 閃電貸攻擊事件

買賣虛擬貨幣


前言


前不久,defi 專案 harvest.finance 遭受駭客攻擊,駭客利用閃電貸套利 2400 萬美元,涉及金額巨大,轟動一時

知道創宇區塊鏈安全實驗室  旨在透過全盤梳理攻擊流程和程式碼細節,一窺閃電貸套利的秘密。


全盤梳理


基礎資訊

攻擊者地址:0xf224ab004461540778a914ea397c589b677e27bb
攻擊合約地址:0xc6028a9fa486f52efd2b95b949ac630d287ce0af
首次攻擊 tx:0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877
vaultproxy(fusdc):0xf0358e8c3cd5fa238a29301d0bea3d63a17bedbe
crvstrategystablemainnet:0xd55ada00494d96ce1029c201425249f9dfd216cc
vaultycrv:0xf2b223eb3d2b382ead8d85f3c1b7ef87c1d35f3a
crvstrategyycrvmainnet:0x2427da81376a0c0a0c654089a951887242d67c92
convertor:0xfca4416d9def20ac5b6da8b8b322b6559770efbf
*為方便起見,後面提到的地址均只用地址前 4 位代表

交易始末

從 tx0x35f8 中的代幣轉移記錄中可以大致看出事件經過





  1. curve yswap 中進行 usdt=>usdc 的鉅額兌換(鉅額兌換造成 y 池中 usdc 價格上漲)
  2. usdc 質押存入 vaultproxy fusdc 池( usdc 價格上漲,鑄造出較平常更多的 fusdc )
  3. curve yswap 進行 usdc=>usdt 回兌(1 步驟的逆操作,usdc 價格恢復)
  4. vaultproxy fusdc 池中贖回 usdc ( usdc 價格回落,贖回出較平常更多的 usdc )

最後歸還閃電貸並將獲利的 usdc 兌換為 eth 提取

程式碼細節

攻擊合約未開源,暫時不作分析。可先從關鍵的 vaultproxy fusdc 池合約 0xf035 的 deposit 函式入手,分析 fusdc 的鑄造量是如何計算的



underlyingbalancewithinvestment 函式實現如下:



來到穩定幣策略合約 0xd55a,investedunderlyingbalance 函式實現如下:



我們先來看 ycrvvault 合約 0xf2b2



也就是說上面獲取的 shares 即是策略合約擁有的 fytoken 量

然後是 price,來看 getpriceperfullshare 函式:



這裡就到了整個過程中最關鍵的地方了,也是問題的根本所在

convertor 合約 0xfca4 並未開源







而當前面鉅額兌換 usdc 後,y 池中 usdc 價格上漲,那麼相對價格 usdc/yusdc 就會下跌。harvest.finance 的 usdc 策略中 yusdc 資產所具有的 usdc 淨值經 calc_withdraw_one_coin 計算而來就損耗減少,最終反映到 deposit 函式的 fusdc 鑄造演算法中,將導致 fusdc 鑄造量增加



總結

歸根到底,harvest.finance 被攻擊的本質原因在於對策略穩定幣價值的估價出現了問題,直接呼叫易被操縱價格的 curve 的 calc_withdraw_one_coin 函式來估價,從而使攻擊者有機可乘。這就是一次典型的喂價機制不完善導致的價格操縱的經濟攻擊事件。



知道創宇區塊鏈安全實驗室官網:www.knownseclab.com
知道創宇唯一指定存證平臺:www.attest.im
聯絡我們:[email protected]



知道創宇區塊鏈安全實驗室導航


微信公眾號
@ 創宇區塊鏈安全實驗室


微博
@ 知道創宇區塊鏈實驗室
https://weibo.com/blockchainlab


知乎
@ 知道創宇區塊鏈安全實驗室
https://www.zhihu.com/org/zhi-dao-chuang-yu-qu-kuai-lian-an-quan-shi-yan-shi


twitter
@ks_blockchain_
https://twitter.com/ks_blockchain


免責聲明:

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

推荐阅读

;