20 萬美元 UniLend 黑客事件:問題出在哪,DeFi 該如何改進?

中級1/22/2025, 4:26:42 PM
UniLend平臺因漏洞遭到攻擊,約20萬美元(佔總價值鎖倉TVL的4%)資金被盜。攻擊者利用閃電貸存入6000萬USDC,篡改了抵押品的計算方式,並利用健康檢查環節的合約漏洞,虛增了抵押物的價值,最終提取了60個stETH。問題的根源在於userBalanceOfToken函數的實現缺陷。UniLend已經修復了漏洞,暫停了V2版本的存款,並提供了賞金以追回資金。這起事件突顯了DeFi平臺在安全方面的脆弱性,也強調了智能合約審計的重要性。

UniLend簡介

@UniLend_Finance是一個去中心化的無許可貨幣市場協議,通過智能合約為用戶提供借貸服務。

在UniLend平臺上,用戶可以將其加密貨幣作為質押物投入網絡,借用其他加密資產。為了確保借貸安全,借貸者通過支付利息來獲得資金,而借出者則根據每個區塊的複合年化收益率(APY)賺取利息。

UniLend 如何運作

UniLend協議V2主要通過以下三個技術功能來運作:

1、雙資產池模型

UniLend為每個ERC20/ERC20兼容的資產對設置了獨立的雙資產池。這樣一來,一個資產的波動不會影響到其他資產,從而增加了安全性和穩定性。用戶可以在多個區塊鏈上創建和管理不同的借貸池,涵蓋多種資產。

2、供應與借款機制

  • 供應:用戶將ERC20代幣存入指定池中,並獲得代表其獨特流動性位置的非同質化代幣(NFT)。這些NFT存儲了關於提供資產的詳細信息,並可根據需要轉讓或贖回。提供的資產將根據池的使用情況和市場需求賺取可變利息。
  • 借款:借款時,用戶需提供過度抵押的加密資產。協議會自動執行抵押比率,並允許通過治理調整。借款利息按區塊積累,基於池的使用率來決定,確保借款始終有足夠的保障。

3、 利率模型

UniLend採用動態利率模型,通過使用率(U)來設定利率,公式如下:

Ux=借款x借款x+現金x

借款利率:

借款利率x=10%+(Ux×30%)

當使用率越高時,利率就會相應上升,以平衡供需。

  • 供應利率:

供給利率x=借款利率x×Ux×(1−S)

這樣一來,供應商可以確保獲得持續的回報,同時平臺也能保持盈利。

這三大功能共同運作,打造出一個安全、高效且可擴展的去中心化貨幣市場。

攻擊詳情分析

2025年1月12日,UniLend協議的一個安全漏洞被攻擊者利用,導致UniLend池中約20萬美元的資金被盜。攻擊者通過操控抵押物的計算,錯誤評估了用戶的健康因子,從而使得攻擊者能夠在沒有足夠抵押的情況下提取60個stETH代幣。

被盜的資產包括60個stETH代幣,攻擊者利用協議對用戶代幣餘額的錯誤計算來實現這一操作。

攻擊詳細過程

1.漏洞啟動

攻擊者通過閃電貸啟動了攻擊,向UniLend池存入了大量的USDC。具體來說,他們存入了6000萬USDC,從而大幅增加了他們在池中的抵押物。

閃電貸是一種無需抵押物的借貸方式,借款人在同一筆交易內必須歸還借款。通過這一機制,攻擊者無需事先擁有資金,就能獲得所需的USDC,從而在人為膨脹的抵押物基礎上發起攻擊。

2. 抵押計算的操控

在存入USDC後,攻擊者開始借入stETH代幣。協議會根據池中用戶的代幣餘額來計算抵押物的價值。然而,由於實現上的漏洞,協議錯誤地使用池合約中的當前代幣餘額來進行計算,而非基於健康因子檢查時實際轉移的代幣數量。結果,用戶的代幣餘額被高估,尤其是在流動性較大的池中。

這一操控的根本原因在於userBalanceOfToken函數。在流動性較大的池中,即使實際的借出份額較少,該函數仍可能返回較高的借出餘額。這種高估使得攻擊者獲得了比實際擁有更多的抵押物,從而能夠借出超過其實際抵押物的stETH代幣。

3. 贖回基礎資產

利用膨脹後的抵押物價值,攻擊者繼續贖回他們的USDC和stETH。攻擊者調用了redeemUnderlying函數,銷燬了與其存款相關的LP代幣。然而,由於健康因子檢查發生在代幣轉移之前,系統錯誤地認為攻擊者擁有足夠的抵押物,允許其提取超出實際應得的代幣。這一漏洞使得攻擊者能夠在沒有足夠抵押物的情況下提取60個stETH代幣,實際上是免費獲得了這些代幣。

如何防止此類攻擊

為了避免類似的攻擊,UniLend 應該調整 redeemUnderlying函數中的操作順序。具體來說,應該在把代幣轉給用戶後再進行健康因子檢查。這樣,協議可以確保用戶的實際代幣餘額準確反映他們的抵押物情況。

區塊鏈安全至關重要,不能忽視。選擇 Three Sigma 來保護您的智能合約和 DeFi 協議,Three Sigma 是區塊鏈審計、智能合約漏洞評估和 Web3 安全領域的可靠合作伙伴。

點擊此處, 立即審核您的智能合約

結果

UniLend 這次漏洞攻擊造成了約 20 萬美元的財務損失,影響了 UniLend 池的資金儲備,降低了平臺的流動性,可能會影響其他用戶的借貸活動。

UniLend 協議迴應

在攻擊發生後,UniLend 迅速採取了措施修復漏洞,並安撫用戶情緒。

他們宣佈,將向負責任的人員提供 20% 的獎勵,以安全歸還資金。

相關地址

攻擊交易地址:

攻擊者地址:

UnilendV2 核心地址:

免責聲明:

  1. 本文轉載自【X】。所有版權歸原作者所有【@trisigmaxyz】。若對本次轉載有異議,請聯繫 Gate Learn 團隊,他們會及時處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. Gate Learn 團隊將文章翻譯成其他語言。未經允許,禁止複製、分發或抄襲翻譯文章。

20 萬美元 UniLend 黑客事件:問題出在哪,DeFi 該如何改進?

中級1/22/2025, 4:26:42 PM
UniLend平臺因漏洞遭到攻擊,約20萬美元(佔總價值鎖倉TVL的4%)資金被盜。攻擊者利用閃電貸存入6000萬USDC,篡改了抵押品的計算方式,並利用健康檢查環節的合約漏洞,虛增了抵押物的價值,最終提取了60個stETH。問題的根源在於userBalanceOfToken函數的實現缺陷。UniLend已經修復了漏洞,暫停了V2版本的存款,並提供了賞金以追回資金。這起事件突顯了DeFi平臺在安全方面的脆弱性,也強調了智能合約審計的重要性。

UniLend簡介

@UniLend_Finance是一個去中心化的無許可貨幣市場協議,通過智能合約為用戶提供借貸服務。

在UniLend平臺上,用戶可以將其加密貨幣作為質押物投入網絡,借用其他加密資產。為了確保借貸安全,借貸者通過支付利息來獲得資金,而借出者則根據每個區塊的複合年化收益率(APY)賺取利息。

UniLend 如何運作

UniLend協議V2主要通過以下三個技術功能來運作:

1、雙資產池模型

UniLend為每個ERC20/ERC20兼容的資產對設置了獨立的雙資產池。這樣一來,一個資產的波動不會影響到其他資產,從而增加了安全性和穩定性。用戶可以在多個區塊鏈上創建和管理不同的借貸池,涵蓋多種資產。

2、供應與借款機制

  • 供應:用戶將ERC20代幣存入指定池中,並獲得代表其獨特流動性位置的非同質化代幣(NFT)。這些NFT存儲了關於提供資產的詳細信息,並可根據需要轉讓或贖回。提供的資產將根據池的使用情況和市場需求賺取可變利息。
  • 借款:借款時,用戶需提供過度抵押的加密資產。協議會自動執行抵押比率,並允許通過治理調整。借款利息按區塊積累,基於池的使用率來決定,確保借款始終有足夠的保障。

3、 利率模型

UniLend採用動態利率模型,通過使用率(U)來設定利率,公式如下:

Ux=借款x借款x+現金x

借款利率:

借款利率x=10%+(Ux×30%)

當使用率越高時,利率就會相應上升,以平衡供需。

  • 供應利率:

供給利率x=借款利率x×Ux×(1−S)

這樣一來,供應商可以確保獲得持續的回報,同時平臺也能保持盈利。

這三大功能共同運作,打造出一個安全、高效且可擴展的去中心化貨幣市場。

攻擊詳情分析

2025年1月12日,UniLend協議的一個安全漏洞被攻擊者利用,導致UniLend池中約20萬美元的資金被盜。攻擊者通過操控抵押物的計算,錯誤評估了用戶的健康因子,從而使得攻擊者能夠在沒有足夠抵押的情況下提取60個stETH代幣。

被盜的資產包括60個stETH代幣,攻擊者利用協議對用戶代幣餘額的錯誤計算來實現這一操作。

攻擊詳細過程

1.漏洞啟動

攻擊者通過閃電貸啟動了攻擊,向UniLend池存入了大量的USDC。具體來說,他們存入了6000萬USDC,從而大幅增加了他們在池中的抵押物。

閃電貸是一種無需抵押物的借貸方式,借款人在同一筆交易內必須歸還借款。通過這一機制,攻擊者無需事先擁有資金,就能獲得所需的USDC,從而在人為膨脹的抵押物基礎上發起攻擊。

2. 抵押計算的操控

在存入USDC後,攻擊者開始借入stETH代幣。協議會根據池中用戶的代幣餘額來計算抵押物的價值。然而,由於實現上的漏洞,協議錯誤地使用池合約中的當前代幣餘額來進行計算,而非基於健康因子檢查時實際轉移的代幣數量。結果,用戶的代幣餘額被高估,尤其是在流動性較大的池中。

這一操控的根本原因在於userBalanceOfToken函數。在流動性較大的池中,即使實際的借出份額較少,該函數仍可能返回較高的借出餘額。這種高估使得攻擊者獲得了比實際擁有更多的抵押物,從而能夠借出超過其實際抵押物的stETH代幣。

3. 贖回基礎資產

利用膨脹後的抵押物價值,攻擊者繼續贖回他們的USDC和stETH。攻擊者調用了redeemUnderlying函數,銷燬了與其存款相關的LP代幣。然而,由於健康因子檢查發生在代幣轉移之前,系統錯誤地認為攻擊者擁有足夠的抵押物,允許其提取超出實際應得的代幣。這一漏洞使得攻擊者能夠在沒有足夠抵押物的情況下提取60個stETH代幣,實際上是免費獲得了這些代幣。

如何防止此類攻擊

為了避免類似的攻擊,UniLend 應該調整 redeemUnderlying函數中的操作順序。具體來說,應該在把代幣轉給用戶後再進行健康因子檢查。這樣,協議可以確保用戶的實際代幣餘額準確反映他們的抵押物情況。

區塊鏈安全至關重要,不能忽視。選擇 Three Sigma 來保護您的智能合約和 DeFi 協議,Three Sigma 是區塊鏈審計、智能合約漏洞評估和 Web3 安全領域的可靠合作伙伴。

點擊此處, 立即審核您的智能合約

結果

UniLend 這次漏洞攻擊造成了約 20 萬美元的財務損失,影響了 UniLend 池的資金儲備,降低了平臺的流動性,可能會影響其他用戶的借貸活動。

UniLend 協議迴應

在攻擊發生後,UniLend 迅速採取了措施修復漏洞,並安撫用戶情緒。

他們宣佈,將向負責任的人員提供 20% 的獎勵,以安全歸還資金。

相關地址

攻擊交易地址:

攻擊者地址:

UnilendV2 核心地址:

免責聲明:

  1. 本文轉載自【X】。所有版權歸原作者所有【@trisigmaxyz】。若對本次轉載有異議,請聯繫 Gate Learn 團隊,他們會及時處理。
  2. 免責聲明:本文所表達的觀點和意見僅代表作者個人觀點,不構成任何投資建議。
  3. Gate Learn 團隊將文章翻譯成其他語言。未經允許,禁止複製、分發或抄襲翻譯文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!
It seems that you are attempting to access our services from a Restricted Location where Gate is unable to provide services. We apologize for any inconvenience this may cause. Currently, the Restricted Locations include but not limited to: the United States of America, Canada, Cambodia, Thailand, Cuba, Iran, North Korea and so on. For more information regarding the Restricted Locations, please refer to the User Agreement. Should you have any other questions, please contact our Customer Support Team.