Euler Finance遭1.97億美元閃電貸攻擊 智能合約漏洞引發巨額損失

robot
摘要生成中

Euler Finance遭受閃電貸攻擊,損失高達1.97億美元

2023年3月13日,Euler Finance項目因其智能合約中的一個漏洞遭受了大規模閃電貸攻擊。攻擊者利用Etoken中donateToReserves函數缺少流動性檢查的漏洞,通過多次調用不同幣種的操作獲取了巨額利潤。此次攻擊造成的總損失高達1.97億美元,涉及6種不同的代幣。

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

攻擊過程分析

攻擊者的操作步驟如下:

  1. 從某借貸平台閃電貸借入3000萬DAI。
  2. 部署兩個合約:一個用於借貸,另一個用於清算。
  3. 將2000萬DAI質押到Euler Protocol合約中,獲得19.5萬eDAI。
  4. 利用Euler Protocol的10倍槓杆借貸功能,借出195.6萬eDAI和200萬dDAI。
  5. 使用剩餘的1000萬DAI償還部分債務,並銷毀相應的dDAI。
  6. 再次借出195.6萬eDAI和200萬dDAI。
  7. 調用donateToReserves函數,捐贈10倍於償還資金的金額(100萬eDAI)。
  8. 觸發清算函數,獲得310萬dDAI和250萬eDAI。
  9. 提取38.9萬DAI,歸還30萬閃電貸,最終獲利8.87萬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的donateToReserves函數缺少必要的流動性檢查。與其他關鍵函數(如mint)相比,donateToReserves函數未執行checkLiquidity步驟。這個疏忽導致用戶可以操縱自己的帳戶狀態,使其符合被清算的條件,然後通過清算獲利。

正常情況下,checkLiquidity函數會調用RiskManager模塊,確保用戶的Etoken始終大於Dtoken,以維持系統的健康狀態。然而,由於donateToReserves函數缺少這一關鍵檢查,攻擊者得以繞過系統的安全機制。

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

安全建議

針對此類攻擊,我們提出以下安全建議:

  1. 智能合約上線前必須進行全面的安全審計。
  2. 借貸類項目應特別關注資金償還、流動性檢測和債務清算等關鍵環節。
  3. 確保所有可能影響用戶資產狀態的函數都包含必要的安全檢查。
  4. 定期進行代碼review,確保新增功能不會引入潛在漏洞。
  5. 建立應急響應機制,以便在發生安全事件時快速反應。

此次事件再次凸顯了智能合約安全的重要性。項目方應當始終將安全置於首位,通過持續的安全實踐和審計來保護用戶資產的安全。

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

EUL-1.3%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 7
  • 轉發
  • 分享
留言
0/400
The Memefathervip
· 08-02 02:56
合约又出事故了
回復0
MetaEggplantvip
· 07-30 18:24
又一个漏洞盗币现场
回復0
跑路预言家vip
· 07-30 18:22
又见跑路盛宴啊
回復0
Liquidation_Watchervip
· 07-30 18:22
又一个智能漏洞死亡
回復0
CryptoNomicsvip
· 07-30 18:12
糟糕的代码审查失败
查看原文回復0
纸手卖出惯犯vip
· 07-30 18:11
又一个合约烂大街了
回復0
GateUser-afe07a92vip
· 07-30 17:56
又一血汗钱没了
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)