Euler Finance遭1.97億美元閃電貸攻擊 donateToReserves函數存漏洞

robot
摘要生成中

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

2023年3月13日,Euler Finance項目遭遇了一次重大的閃電貸攻擊。根據鏈上監控數據顯示,攻擊者利用項目合約中的一個漏洞,成功竊取了約1.97億美元的資金,涉及6種不同的代幣。

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

攻擊過程分析

攻擊者首先從某借貸平台獲取了3000萬個DAI的閃電貸,隨後部署了兩個關鍵合約:一個用於借貸操作,另一個用於清算。

攻擊的主要步驟如下:

  1. 將2000萬DAI質押到Euler Protocol合約中,獲得19.5百萬eDAI。

  2. 利用Euler Protocol的10倍槓杆功能,借出195.6百萬eDAI和200百萬dDAI。

  3. 使用剩餘的1000萬DAI償還部分債務,並銷毀相應的dDAI。

  4. 再次借出同等數量的eDAI和dDAI。

  5. 通過donateToReserves函數捐贈100百萬eDAI,隨後調用liquidate函數進行清算,獲得310百萬dDAI和250百萬eDAI。

  6. 最後提取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. 考慮引入多重籤名機制或時間鎖等額外安全措施,爲應對緊急情況預留緩衝時間。

此次事件再次凸顯了智能合約安全的重要性。項目方應當始終將安全置於首位,通過持續的安全實踐和技術創新,共同構建更加安全、可靠的Web3生態系統。

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

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 3
  • 分享
留言
0/400
ResearchChadButBrokevip
· 8小時前
合约漏洞真难防
回復0
倒霉的矿工vip
· 8小時前
代码审查不严啊
回復0
论坛挖矿达人vip
· 8小時前
又一漏洞被利用了
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)