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

  • 事件概述:Euler Finance 因 Etoken 中的 donateToReserves 函數缺少流動性檢查,遭閃電貸攻擊,損失高達 1.97 億美元,涉及 6 種代幣。資金目前仍留在黑客賬戶中。

  • 攻擊手法

    • 黑客從 Aave 閃電貸借入 3000 萬 Dai,部署借貸與清算合約。
    • 透過質押 Dai 獲取 eDAI,並利用 Euler Protocol 的 10 倍槓桿借出更多 eDAI 和 dDAI。
    • 反覆調用 repaymint 函數,擴大債務後,利用 donateToReserves 漏洞捐贈超額資金,觸發清算獲利。
    • 最終歸還閃電貸後,淨獲利 887 萬 Dai。
  • 漏洞關鍵

    • donateToReserves 函數未執行 checkLiquidity 檢查,導致用戶可人為製造清算條件。
    • mint 函數相比,缺少風險管理模組(RiskManager)的債務驗證步驟。
  • 攻擊復現

    • 研究團隊已公開 PoC(概念驗證),證明漏洞可被重現。
  • 安全建議

    • 借貸類項目需嚴格審計「資金償還、流動性檢測、債務清算」等關鍵邏輯。
    • 合約上線前應通過專業安全審計,避免類似漏洞。
總結

背景

根據Numen鏈上監控顯示,Mar-13-2023 08:56:35 AM +UTC, Euler Finance 項目因為Etoken中的donateToReserves函數缺少流動性檢查而遭到閃電貸攻擊。黑客通過不同幣種多次調用完成獲利,本次攻擊共計損失1.97億美元,金額巨大,涉及6種代幣。當前,資金還存留在黑客的賬戶中。

黑客地址https://etherscan.io/address/0xb66cd966670d962c227b3eaba30a872dbfb995db

黑客合約https://etherscan.io/address/0x036cec1a199234fc02f72d29e596a09440825f1c

攻擊交易(其中一筆) https://etherscan.io/tx/0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d

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

詳細分析

1.黑客先從Aave閃電貸借了3000W個Dai後部署了兩個合約,一個是藉貸合約,一個是清算合約。

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

2.調用deposit函數將藉來的Dai其中的20 M個質押到Euler Protocol合約中獲取了19.5M個eDAI。

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

3.Euler Protocol可以調用mint函數借出10倍存款,此時黑客從中藉出了195.6M個eDAI 和200M個dDAI。

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

4.調用repay函數,用閃電貸剩餘的10M個DAI償還債務並且銷毀了10M個dDAI,然後繼續調用min函數借出195.6M個eDAI 和200M個dDAI。 Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

5.調用donateToReserves函數捐贈10倍的償還資金,發送了100M的eDAI,並調用liquidate函數去清算,得到310M的dDAI和250M的eDAI。 Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

6.調用withdraw函數獲取了38.9M的Dai並且去歸還了借的閃電貸30M。從中獲利8.87M個Dai。

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

漏洞成因

先看一下donateToReserves函數,用戶能夠被清算是在這一步發生的。

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

與下圖的mint函數對比我們發現,donateToReserves函數少了一個關鍵步驟checkLiquidity。

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

然後跟進看checkLiquidity的實現。我們發現了callInternalModule函數,它會調用RiskManager對用戶進行檢查保證Etoken>Dtoken。 Euler Finance漏洞分析:如何遭閃電貸攻擊,損失1.97億美金!

在每次操作的時候需要對用戶的流動性進行檢查,調用checkLiquidity完成,而donateToReserves這個函數沒有執行此操作,導致用戶可以通過該協議的某些函數先使自己處於被清算的狀態,然後在完成清算。

攻擊復現

我們成功復現了此次攻擊,詳細PoC可查看鏈接: https://github.com/numencyber/SmartContractHack_PoC/tree/main/EulerfinanceHack

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

總結

Numen實驗室提醒項目方,合約在上線前要做好安全審計,保證合約安全性,對於借貸類項目需要特別關注資金償還,流動性檢測,債務清算等問題。 Numen實驗室專注於為WEB3保駕護航。

分享至:

作者:Numen Cyber

本文為PANews入駐專欄作者的觀點,不代表PANews立場,不承擔法律責任。

文章及觀點也不構成投資意見

圖片來源:Numen Cyber如有侵權,請聯絡作者刪除。

關注PANews官方賬號,一起穿越牛熊
推薦閱讀
29分鐘前
10小時前
13小時前
2025-12-07 10:07
2025-12-07 06:24
2025-12-06 09:12

熱門文章

行業要聞
市場熱點
精選讀物

精選專題

App内阅读