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

robot
摘要生成中

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

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

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

攻擊過程分析

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

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

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

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

  5. 通過donateToReserves函數捐贈1億eDAI(爲償還資金的10倍),並立即執行清算操作,獲得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億美金!

漏洞原因

攻擊得以成功的關鍵在於Euler Finance的donateToReserves函數缺少必要的流動性檢查。與mint等其他函數不同,donateToReserves未調用checkLiquidity函數來驗證用戶的資金狀況。這使得攻擊者能夠操縱自身帳戶進入可被清算的狀態,並隨後執行清算獲利。

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

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

安全建議

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

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

項目方在合約部署前應進行全面、深入的安全審計,以確保各項功能的安全性和穩定性。同時,持續的安全監控和及時的漏洞修復也是保障項目長期安全運行的必要措施。

EUL-4.84%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 7
  • 轉發
  • 分享
留言
0/400
Ser_Liquidatedvip
· 07-14 00:49
又要献祭一个项目了tks
回復0
mev_me_maybevip
· 07-14 00:03
又又又被砸盘了
回復0
0xSoullessvip
· 07-13 14:42
韭菜年年割 割完接着割
回復0
Rugpull Survivorvip
· 07-11 02:50
又是大锅!心里没点负罪感?
回復0
GasFeeCriervip
· 07-11 02:46
坐等项目方失联跑路
回復0
GasFee_Crybabyvip
· 07-11 02:39
又双叒叕被盗了 啧啧
回復0
GasWastervip
· 07-11 02:35
rip... 又一次在gas优化上付出了昂贵的教训 smh
查看原文回復0
交易,隨時隨地
qrCode
掃碼下載 Gate App
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)