深度分析Harvest Finance到底發生了什麼

買賣虛擬貨幣


10月26日,總鎖倉量超過10億美元的defi專案harvest finance曝出遭到駭客攻擊,已造成大約2400萬美元的損失,很多參與者自稱損失了15%以上的資金。受此訊息影響,harvest的治理代幣farm一度暴跌70%以上。


對此,defi領域的知名參與者建議使用者先將資金提出,以確保資金安全。另外官方此前已建議使用者暫停向穩定幣池以及btc保險池進行充值。

截至撰稿時,harvest合約鎖定的資金量已驟降至5.99億美元,較24小時之前下滑46.42%。

而在此次攻擊發生的前一天,defi觀察者chris blec剛剛揭示了harvest專案存在巨大的風險:該專案合約鎖定的10多億美元資金完全受匿名開發者的控制,並且開發團隊存在刻意隱瞞這一事實的嫌疑。

aelf創始人兼ceo馬昊伯針對此事發表了自己的推測:首先需要了解的是,閃電借貸可以無抵押借到很多錢,不管是有多少滑點的amm,都是有滑點的。而且curve的曲線雖然在兩個幣種之間的滑點比較低,但是到極端情況下還是會有不可控的事件發生。

馬昊伯猜測,駭客可能是利用閃電借貸借了一大筆錢,然後把curve的價格搞到十分離譜,然後再到harvest按照不合適的價格進行單邊充值(虧錢的情況下充值),然後利用 curve 將錢贖回。這樣一來 harvest 虧了,駭客就賺了,curve 也因為這波操作價格產生波動。而 curve 的所謂虧損其實和 uniswap 的 lp 虧損一樣,是一種無常損失,價格會很快恢復。

駭客到底是如何操作的?

像其他閃電貸攻擊操作一樣,攻擊者動作迅速,沒有給平臺反映的時間,連續 7 分鐘端到端地進行攻擊。

1.攻擊者到uniswap usdt-eth lp合約借了5000w usdt

2.攻擊者在curve合約用11,425,651.360209usdc兌換11,407,812.062025usdt,透過買入大量usdt改變curve的兌換價格,比如能夠使1 usdt = 1.00000x usdc 變為 1 usdt = 11,445,785.907417/11,437,077.011569 = 1.00076146168 usdc

3.攻擊者在fusdt合約抵押60,666,288.631146usdt獲取持幣持幣憑證71,668,595.794204 fusdt,向harvest充值,harvest會自動向curve提供流動性

4.攻擊者在curve合約用11,437,077.011569 usdt兌換11,445,785.907417 usdc,前面的操作使得curve的價格變為了1 usdt = 1.00076146168 usdc,然後駭客開始用少量的usdt換出了更多的usdc

5.攻擊者在fusdt合約透過第3步獲取的71,668,595.794204 fusdt 贖回61,093,558.168153 usdt,這個步驟表明,駭客已經成功的進行了一次套利,獲取了61,093,558.168153 usdt - 60,666,288.631146usdt = 427269.537007 usdt

我們看這個利潤是哪裡來的呢,很明顯是harvest在高位在curve從一個錯誤的方向新增了流動性引起。也就是curve的原始lp沒有受到任何損失,駭客獲取的是透過讓60,666,288.631146usdt 虧損產生的利潤。

重複2-5步驟

6.攻擊者在curve合約用11,425,651.360209usdc兌換11,407,840.0888usdt

7.攻擊者在fusdt合約抵押61,064,321.245384 usdt獲取持幣持幣憑證 72,458,553.719987 fusdt

8.攻擊者在curve合約用11,437,077.011569 usdt兌換11,445,757.818914 usdc

9.攻擊者在fusdt合約透過第7步獲取的72,458,553.719987 fusdt 贖回61,489,849.847749 usdt

重複2-5步驟

10.攻擊者在curve合約用11,425,651.360209 usdc兌換11,407,868.045888usdt

11.攻擊者在fusdt合約抵押61,460,640.882068 usdt獲取持幣持幣憑證 73,252,241.779134 fusdt

12.攻擊者在curve合約用11,437,077.011569 usdt兌換11,445,729.800332 usdc

13.攻擊者在fusdt合約透過第11步獲取的73,252,241.779134 fusdt 贖回61,884,410.538009 usdt

14.攻擊者還給uniswap usdt-eth lp合約 50,165,496.489468usdt

到此完成整個交易


此次攻擊主要是harvest finance的ftoken(fusdc、fusdt...) 在鑄幣時採用的是curve y池中的報價(即使用curve作為喂價來源),導致攻擊者可以透過鉅額兌換操控預言機的價格來控制harvest finance中ftoken的鑄幣數量,從而使攻擊者有利可圖。

對其他專案的警示

在區塊鏈的安全事件中,大多都是由於原始碼存在漏洞使得駭客趁虛而入。智慧合約受到區塊鏈本身保護,所以智慧合約程式碼可以最大限度的開源和讓人閱讀。但是程式碼的公開性使得駭客容易掌握程式碼的缺陷,進一步利用程式碼缺陷觸發條件改變智慧合約執行結果,使得區塊鏈專案存在巨大的經濟隱患。所以智慧合約程式碼的開源性需要程式碼的高可靠性,這種可靠性要求100%正確。

因此,其他開源專案應當始終把網路安全性列為最高優先順序,努力為使用者提供一個夠安全、高效能、體驗佳、可信賴的區塊鏈基礎設施。


免責聲明:

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

推荐阅读

;