Harvest官方詳解被駭客套利2400萬美元的過程,閃電貸只是其中一環

買賣虛擬貨幣

10月26日,駭客利用閃電貸從DeFi協議Harvest的金庫中盜走了2400萬美元資金,而根據Harvest官方的分析報告顯示,閃電貸只是這次攻擊的一環,具體還涉及到了DeFi 協議的無常損失問題,儘管攻擊者事後歸還了大約250萬美元的資金,但Harvest使用者面臨的損失依舊超過了2000萬美元(具體約為3380萬美元),對此,Harvest官方發出了懸賞,並請求駭客歸還剩餘的資金。

總結:

我們對這一工程錯誤負責,並確保此類事件在未來得到緩解;

為受影響的使用者制定補救計劃是我們在未來一週的首要任務;

我們謙卑地請求攻擊者將資金退還給部署者,以便可以將它們分配給受影響的使用者;

1

發生了什麼?

UTC時間10月26日2:53:31,一名攻擊者從Harvest Finance的USDC和USDT金庫中竊取了資金。攻擊者利用了影響Curve.fi Y池中個人資產的套利和無常損失進行了攻擊,而Curve.fi Y池正是Harvest金庫投資的地方。協議的以下機制允許執行此類攻擊:

Harvest的投資策略計算投資於基礎實時協議資產的實時價值。金庫使用資產的價值來計算將要發給資金存放使用者的股份數量。當使用者從金庫中取出資金時,它們還使用資產的價值來計算使用者退出時應收到的支出。

一些金庫(包括USDC和USDT)中的資產存放在底層DeFi協議的共享池中(例如Curve.fi的Y池)。這些資產池中的資產會受到無常損失、套利和滑點等市場影響。因此,它們的價值可透過大量的市場交易來操縱。

攻擊者反覆利用Curve.fi Y池中USDC和USDT的無常損失影響。他們利用被操縱的資產價值將資金存入Harvest的金庫,以一個對其有益的價格獲得金庫股份,然後以正常的價格退出金庫,從而產生利潤。以下是這次攻擊事件的跟蹤鏈:

攻擊者的錢包地址是0xf224ab004461540778a914ea397c589b677e27b,其部署了一個合約0xc6028a9fa486f52efd2b95b949ac630d287ce0af,透過該合約,他們於UTC時間2020年10月26日02:53:31 執行了攻擊。而進行攻擊的10 ETH是透過0x4b7b9e387a79289720a0226f695913d1d11dbdc681b7218a432136cc089363c4這筆Tornado交易來隱藏來源的。

攻擊本身在0x35f8d2f572fceaac9288e5d462117850ef2694786992a8c3f6d02612277b0877這筆交易中發起。

攻擊者從Uniswap獲得大量USDT(18,308,555.417594)以及USDC(50,000,000),以注入攻擊合約中。

該合約透過Y池的互換交易將17,222,012.640506 USDT兌換成了USDC。互換的影響是,由於其它資產發生了無常損失,Y池內的USDC價值較高。這個智慧合約獲得的金額大致相當於17,216,703.208672 USDC;

攻擊者將49,977,468.555526 USDC存入Harvest的USDC金庫,以每股0.97126080216 USDC的價格接收51,456,280.788906 fUSDC。在攻擊之前,每股fUSDC的價格為0.980007 USDC,因此攻擊者將股份價值降低了大約1%。Harvest策略內部的套利檢查沒有超過3%的閾值,因此沒有還原這筆交易。

攻擊者透過Y池將17239234.653146 USDC兌換回USDT,結果是,由於無常損失效應的恢復,因此在Y池中獲得了USDC的原始較低值。攻擊者從而收回了17,230,747.185604 USDT。

攻擊者從Harvest的USDC金庫中提幣,用所有fUSDC的股份交換回了50596877.367825 USDC。由於Y池內的USDC值下降,每股fUSDC的價格為0.98329837664 USDC。USDC完全由Harvest的USDC金庫支付,完全不與Y池互動。如此進行一次,攻擊者的淨利潤(不包括閃電貸費用)就是619408.812299 USDC,而攻擊者在同一筆交易中重複了幾次該過程。

在4分鐘內針對USDC金庫執行了17筆攻擊交易後,攻擊者以類似的方式對USDT金庫重複該過程,從交易0x0fc6d2ca064fc841bc9b1c1fad1fbb97bcea5c9a1b2b66ef837f1227e06519a6開始。他們在另外3分鐘內完成了13筆針對USDT金庫的攻擊交易。

在UTC時間2020年10月26日 03:01:48 ,攻擊者將13,000,000 USDC和11,000,000 USDT從攻擊合約中轉移至地址0x3811765a53c3188c24d412daec3f60faad5f119b。

攻擊者隨後又在0x25119cd54a4562aa427d9770af383512f9cb5e8e4d17232ad96b69dc293a3510這筆交易中將部分資金轉移回Harvest部署者地址,涉及1761898.396474 USDC和718,914.048541 USDT。

Harvest Finance在評估了這次攻擊並重構攻擊過程後,立即從共享池中取出了所有資金,這包括DAI、USDC、USDT、TUSD、WBTC以及renBTC。這些資金目前都在金庫中,不再受到市場操縱的影響。這次攻擊並沒有涉及DAI、TUSD、WBTC以及renBTC,這些金庫的儲存使用者也沒有受到影響。

攻擊發生後,USDC金庫的股份價格從0.980007下跌至0.834953 USDC,而USDT金庫的股份價格則從0.978874跌至0.844812 USDT,兩者分別下跌了13.8%和13.7%。使用者損失的價值大約為3380萬美元,相當於攻擊前協議中鎖定總價值的3.2%。

與攻擊有關的事務日誌可觀察攻擊者的地址0xf224ab004461540778a914ea397c589b677e27b。

2

下一步

Harvest Finance協議有一個定期的每週計劃表,它需要保持所有農民的持續收益。根據2020年10月27日的排放計劃,Harvest Finance團隊宣佈鑄造19637.46枚FARM代幣。而社羣要求的,原定於10月27日釋出的智慧合約改進計劃將被推遲,以便在攻擊背景下再次評估其安全性。金庫中使用共享池的資金,將繼續從策略中提取,直到此類攻擊的緩解措施到位(見下一節)。這些措施,以及為受影響的使用者提供補救的基礎設施,將是團隊下一個開發重點。我們對這一工程錯誤負責,並確保此類事件在未來得到緩解。

3

未來可能的緩解措施

Harvest Finance團隊致力於評估可能的緩解策略,並在即將釋出的版本中實施這些策略以及任何必要的使用者體驗更改。我們將利用新金庫的可升級特性,以及基於時間鎖(timelock)的投資策略替換,並在釋出前很好地與社羣溝通緩解策略。

可能的修復技術包括以下這些選項:

實現存款的提交和顯示機制。這將消除在單筆交易中執行存款和取款的能力,因此,基於閃電貸的攻擊就變為不可行了。就使用者而言,這意味著在存款期間,他們的代幣將在一次交易中轉移到Harvest。使用者隨後會在另一筆交易中claim他們的股份,最好是在不同的區塊中。這將構成使用者體驗的變化,並可能導致更高,但仍可接受的gas成本。

一個更嚴格的配置現有存款arb的檢查策略。當前的閾值設定為3%,因此不足以保護金庫免受此類攻擊。一個更嚴格的閾值可能使這種攻擊在經濟上不可行,然而,在自然無常損失效應的情況下,它可能會限制存款,週日的事件超過了7分鐘,這表明,這一措施不夠有效,因此應被視為對其他措施的補充。

基礎資產的提取。當使用者存入使用共享池(如Y池)的金庫時,他們會有效地將其單個資產交換為池資產(如yCurve)。如果使用者只提取基礎資產,他們就可以根據當前的市場狀況將其交易為資產組合。如果市場受到操縱,交易也會受到這種操縱,這將阻止攻擊實體產生利潤。從普通使用者的角度來看,提出yCRV之後可以在單獨的交易中轉換為穩定幣。雖然這需要進行UX方面的改變,但它可能有利於協議。而這種方法的缺點是,它將金庫提取機制與當前正在使用的策略繫結在一起:如果一個策略切換到另一個不使用共享基礎池的策略,或者使用不同的池,則提取所產生的資產也會發生變化。

使用預言機來確定資產價格。雖然一個近似的資產價格可有效地從外部預言機(由Chainlink或Maker提供)中確定,但是它與實際股份價格的聯絡非常鬆散。如果底層DeFi協議內的資產價值與預言機報價不同,金庫將面臨自由套利和閃電貸攻擊。這不是Harvest的解決方案,但是,在系統設計和可能的緩解策略中,我們將考慮使用預言機。

4

針對丟失USDC和USDT資金使用者的補救方法

透過快照和MerkleDistributor分發攻擊者已退還的資金,我們與幫助建立這些工具的開發人員聯絡,並致力於構建可為受影響的使用者提供補救措施的基礎架構。分配資金是當務之急,一旦工具被構建出來後,我們將會發布更多關於資金分發的細節資訊。

其他補救方法將在治理中進行分析和表決。

5

攻擊者資訊和賞金

攻擊者使用了新生成的以太坊地址0xf224ab004461540778a914ea397c589b677e27bb來執行這次攻擊;

Tornado交易0x4b7b9e387a79289720a0226f695913d1d11dbdc681b7218a432136cc089363c4;

攻擊在0x35F8D2F572FCEAAC9288E5D46211780EF2694786992A8C3F6D02612277B0877這筆交易發起;

攻擊者透過REN協議將比特幣傳輸到以下地址:

1Paykw4s2WX4SaVjDrQkwSiJr16AiANhiM

1HLG86DDEzAxAGmEzxr1SUfPCWcnWA6bMm

14stnrgMFNR4LesqQRUdo5n1VUx9xdAMeg

18w2Bm2cCsbLjWQU9BcnjzK8ErmzozrVa3

1FS2t2eAjmjaNmADN6SMHYo7G4XGpX1osS

1NdAJ89k1qpRMpZLwuYGQ7VnM45xD2NJXa

1CLHhshrusvT4XADWA29R2H4ndsSUamEWn

然後,攻擊者將幾筆交易傳送到已知的Binance存款地址:https://blockstream.info/tx/7777569f003193ae59dbc5afbbf8bfbf3ac6c8ce8a8ec2b8707de14ddc3329a6 https://blockstream.info/tx/9fcc273f2d50fc5824b8fd0bbe832831d02e7fe04bcc09d143e787455c602195

我們向第一個幫助我們找回資金的個人或團隊提供10萬美元的賞金。

如果是在接下來的36小時內完成退還,則賞金為40萬美元。請不要在這個過程中人肉搜尋攻擊者,我們強烈建議將所有努力集中在確保使用者資金成功返還給部署人員上。

關有關閃電貸攻擊者的資訊:

攻擊者已經證明了他們的觀點。如果他們能將資金返還給使用者,社會各界將不勝感激,將資金返還給受影響的使用者是重點。

我們犯了一個工程錯誤,我們承認了。成千上萬的人遭到了附帶損害,因此我們謙卑地請求攻擊者將資金退還給部署者,然後將資金全部分配給使用者。

免責聲明:

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

推荐阅读

;