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

robot
摘要生成中

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

2023年3月13日,Euler Finance項目因智能合約漏洞遭受閃電貸攻擊,造成約1.97億美元的重大損失。攻擊者利用了合約中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,然後調用liquidate函數進行清算,獲得3.1億dDAI和2.5億eDAI。

  6. 最後提取3890萬DAI,歸還3000萬閃電貸,淨利潤約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. 債務清算流程的安全性

項目方在上線前應進行全面的安全審計,確保合約的每個功能都經過嚴格的安全檢查。同時,持續的安全監控和漏洞賞金計劃也是保障項目長期安全的有效措施。

此外,開發者應該注意函數間的一致性,確保關鍵的安全檢查(如流動性檢查)在所有相關函數中都得到正確實施。這不僅包括主要功能,還應涵蓋輔助功能如捐贈等。

最後,建議項目方和開發者保持對新興攻擊手法的警惕,定期更新安全策略,以應對不斷演變的區塊鏈安全威脅。

EUL7.24%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 7
  • 分享
留言
0/400
StableGeniusvip
· 11小時前
好吧好吧好吧……正如预期的那样,又一个协议以艰难的方式了解到数学的严谨性。 从经验上讲,这是不可避免的。
查看原文回復0
SelfCustodyBrovip
· 12小時前
躺好吃瓜咯~
回復0
诗与远链vip
· 12小時前
又一个脆皮合约凉了
回復0
MEVNewHuntervip
· 12小時前
又一卖合约的跑路了
回復0
SorryRugPulledvip
· 12小時前
没有技术审计的合约不亦是送钱
回復0
0xInsomniavip
· 12小時前
又见智能合约漏洞
回復0
GasFeeNightmarevip
· 12小時前
大半夜蹲着看gas 差点亏死...十个交易七个失败 还要给矿工交智商税
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)