Curve Pools 黑客攻擊:Vyper 版本中的重入漏洞導致 5900 萬美元損失

本文為機器翻譯
展示原文

什麼?

Vyper是一種程式語言,旨在在區塊鏈平臺上建立智慧合約。受 Python 啟發,Vyper 採用使用者友好且易於閱讀的語法,適合各個級別的開發人員使用。

Curve Pool是一種去中心化金融 (DeFi) 協議,徹底改變了區塊鏈網路上的穩定幣交換。作為專門針對穩定幣進行優化的自動做市商 (AMM),Curve Pool 可確保穩定資產之間的無縫且經濟高效的交易,同時將滑點和費用降至最低。其獨特的演算法旨在最大限度地減少交易過程中的價格影響並最大限度地提高資本效率,使其成為尋求穩定幣流動性的交易者和流動性提供者的首選。

如何?

這些攻擊發生在多個區塊鏈上,導致總損失超過 5900 萬美元。這些損失歸因於使用易受攻擊的 Vyper 版本幷包含ETH的礦池。礦池被黑:

據Curve Finance稱, Arbitrum上仍有一些礦池可能容易受到攻擊。出於預防目的,他們建議使用者儘快消除流動性。

在攻擊中,攻擊者在呼叫remove_liquidity函式後重新進入add_liquidity函式。在重新進入add_liquidity函式之前狀態沒有完全更新,導致lp_price計算錯誤。

為什麼?

Curve Pools是使用Vyper程式語言開發的,該漏洞存在於Vyper編譯器中。

儘管該函式受到 Vyper 中內建的不可重入裝飾器的保護,但該漏洞仍允許攻擊者執行重入。

該漏洞的根本原因可以追溯到用 Python 編寫的 Vyper 編譯器版本 0.2.15 到 0.3.0 之間的提交。在編譯期間,Vyper 程式碼載入可重入裝飾器並將其儲存到儲存槽中。但是,程式碼中缺少驗證在儲存和槽增量之前是否已存在重入性的重要檢查。因此,每個函式都有其單獨的重入鎖槽,該鎖槽是獨立的並且無法提供針對重入攻擊的保護。

受影響的Vyper版本:

結論

攻擊者仔細檢查了 Vyper 的錯誤修復和使用易受攻擊版本的目標合約,導致 Curve 遭受重大損失。

吸取的重要教訓是,供應商必須及時向開發人員社群通報關鍵錯誤修復。鼓勵使用開源技術,包括社群開發和審查的安全功能。在釋出新版本或對基本功能進行重大更改之前進行徹底的安全審查至關重要。通過採用這些做法,我們可以增強系統安全性併為所有使用者提供更安全的環境。

相关赛道:
來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論