Euler Finance遭2億美元閃電貸攻擊 智能合約漏洞成禍因

Euler Finance 遭遇閃電貸攻擊,損失近2億美元

2023年3月13日,Euler Finance 項目因智能合約漏洞遭受閃電貸攻擊,造成約1.97億美元損失。攻擊者利用了合約中 donateToReserves 函數缺乏流動性檢查的漏洞,通過多次操作獲取了巨額利潤。

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

攻擊過程分析

  1. 攻擊者首先從某借貸平台閃電貸借入3000萬 DAI,並部署了兩個合約:借貸合約和清算合約。

  2. 將借來的 DAI 中的2000萬質押到 Euler Protocol 合約,獲得約1950萬 eDAI。

  3. 利用 Euler Protocol 的10倍槓杆功能,借出1.956億 eDAI 和2億 dDAI。

  4. 使用剩餘1000萬 DAI 償還部分債務並銷毀相應 dDAI,隨後再次借出同樣數量的 eDAI 和 dDAI。

  5. 調用 donateToReserves 函數捐贈1億 eDAI,然後通過 liquidate 函數進行清算,獲得3.1億 dDAI 和2.5億 eDAI。

  6. 最後提取3890萬 DAI,歸還閃電貸的3000萬 DAI,淨賺約887萬 DAI。

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

漏洞原因

攻擊得以成功的主要原因是 donateToReserves 函數缺少必要的流動性檢查。與其他關鍵函數(如 mint)相比,donateToReserves 未調用 checkLiquidity 函數來驗證用戶的流動性狀態。這使得攻擊者能夠操縱自身帳戶進入可被清算的狀態,並從中獲利。

正常情況下,checkLiquidity 函數會調用 RiskManager 模塊來確保用戶的 Etoken 數量大於 Dtoken 數量,以維持帳戶的健康狀態。然而,donateToReserves 函數跳過了這一關鍵步驟,爲攻擊創造了可乘之機。

Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

教訓與建議

這次事件再次凸顯了智能合約安全審計的重要性。對於借貸類項目,尤其需要重點關注以下幾個方面:

  1. 資金償還機制的完整性
  2. 流動性檢測的全面性
  3. 債務清算流程的安全性

項目方在合約上線前,應當進行全面而嚴格的安全審計,以確保合約的安全性和穩定性。同時,持續的安全監控和及時的漏洞修復也是不可或缺的。

隨着去中心化金融的快速發展,類似的安全事件可能會不斷出現。開發者和項目方需要保持警惕,不斷學習和改進,以構建更加安全、可靠的區塊鏈生態系統。

EUL4.73%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 6
  • 轉發
  • 分享
留言
0/400
链上冷面笑匠vip
· 9小時前
又一个牛哄哄的项目翻车了
回復0
线下纯韭菜vip
· 9小時前
韭菜又被割啦~
回復0
智能钱包vip
· 9小時前
1.97亿美刀?这操作手法太低级 资金量倒是不小
回復0
Solidity Strugglervip
· 9小時前
又是智能合约背锅侠
回復0
MetaRecktvip
· 9小時前
又双叒被套了
回復0
FadCatchervip
· 10小時前
又一个铁憨憨项目跑路
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)