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合約中,獲得19.5萬個eDAI。

  3. 利用Euler Protocol的10倍槓杆功能,攻擊者借出了195.6萬個eDAI和200萬個dDAI。

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

  5. 關鍵步驟:攻擊者調用donateToReserves函數,捐贈了100萬eDAI,隨後通過liquidate函數清算,獲得310萬dDAI和250萬eDAI。

  6. 最後,攻擊者提取了38.9萬DAI,歸還了30萬DAI的閃電貸,最終獲利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漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

漏洞原因

此次攻擊的核心漏洞在於Euler Finance合約中的donateToReserves函數缺少必要的流動性檢查。與其他關鍵函數如mint相比,donateToReserves函數沒有執行checkLiquidity操作。這導致攻擊者能夠繞過正常的流動性檢查,人爲制造可被清算的狀態,然後完成清算獲利。

正常情況下,checkLiquidity函數會調用RiskManager模塊,確保用戶的Etoken數量大於Dtoken數量,以維持合約的安全性。然而,由於donateToReserves函數缺少這一關鍵步驟,攻擊者得以利用這一漏洞進行攻擊。

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

安全建議

針對此類攻擊,我們建議區塊鏈項目方:

  1. 在合約上線前進行全面的安全審計,確保合約的安全性。

  2. 對於借貸類項目,需特別關注資金償還、流動性檢測和債務清算等關鍵環節。

  3. 確保所有可能影響用戶資產狀態的函數都包含必要的安全檢查,如流動性檢查。

  4. 定期進行代碼審查和更新,及時修復發現的漏洞。

  5. 建立應急響應機制,以便在發生安全事件時能夠迅速反應和處理。

通過採取這些措施,項目方可以大大降低遭受類似攻擊的風險,提高合約的整體安全性。

EUL-0.73%
查看原文
此頁面可能包含第三方內容,僅供參考(非陳述或保證),不應被視為 Gate 認可其觀點表述,也不得被視為財務或專業建議。詳見聲明
  • 讚賞
  • 5
  • 轉發
  • 分享
留言
0/400
鲸鱼观察员vip
· 08-11 16:40
又一个当韭菜的进场了
回復0
Lonely_Validatorvip
· 08-10 08:22
区块链安全现在这么差?无语了
回復0
StakeWhisperervip
· 08-10 08:10
又一个吃币套餐
回復0
Gwei_Watchervip
· 08-10 07:58
又是不查合约就上线?
回復0
半佛薅羊毛vip
· 08-10 07:54
又一个归零的项目…狗带
回復0
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)