Back to Blog

#2:Euler Finance事件:2023年最大規模的駭客攻擊

Code Auditing
February 9, 2024
6 min read

2023年3月13日,我們的系統偵測到 Euler Finance 的借貸池遭受閃電貸攻擊,損失達1.97億美元。我們首先向社群發出警報,隨後提供了分析報告,以協助找出根本原因。

此次事件的根本原因在於 donateToReserves() 函式中缺乏償債能力檢查。具體而言,該漏洞合約提供了一項功能,允許用戶將其抵押品捐贈給協議,卻未檢查用戶頭寸是否具備償債能力。更糟糕的是,為了清除這些不良頭寸,協議為清算人提供了大幅折扣,使其只需支付較少的債務即可完成清算。攻擊者利用此功能建立了一個龐大頭寸,並使其陷入資不抵債的狀態,從而得以折價購回自己的抵押品並從中獲利。

背景

Euler Finance 概述

Euler Finance 是以太坊上的一個借貸協議,允許用戶存入和借出指定代幣。當貸款人向 Euler 的流動性池存款時,系統會鑄造相應數量的 EToken(計息 ERC20 代幣)並發送給他們。這些 EToken 可用於贖回所存入的基礎資產。

另一方面,借款人在獲得流動性後會收到 DToken。這些 DToken 符合 ERC20 標準,但持有人無法自行銷毀它們。具體來說,這些代幣並非允許發送給任何人,而是可以被任何人提取,但接受它們需要事先批准。就基礎資產而言,借款人須負責支付貸款利息,其中一部分利息用於彌補協議上的壞帳。

Euler Finance 的槓桿借款(又稱自我借款)機制與軟清算機制,是兩個幫助我們更好理解此次攻擊成因的關鍵概念。

槓桿借款

Euler Finance 提供槓桿借款功能,使用戶能夠模擬遞迴借款策略。簡單來說,用戶可以存入抵押品並鑄造 EToken,這些 EToken 隨後可作為抵押品再借入更多 EToken。合約同時也會鑄造相應數量的 dToken 作為債務代幣。用戶頭寸的健康狀況根據 EToken 與 dToken 的價值計算。根據 Euler Finance 的文件說明,用戶最高可使用19倍槓桿。槓桿借款功能在此次事件中扮演了關鍵角色——若無此功能的協助,攻擊者將無法獲利。透過槓桿借款,攻擊者將其頭寸規模擴大至閃電貸初始資金的近11倍。

軟清算

如 Euler Finance 的白皮書所述,軟清算機制使清算人能夠靈活地幫助被清算方償還債務,而非像 Compound 和 Aave 等協議採用固定係數進行清算。軟清算意味著頭寸的健康狀況越差,可被清算的抵押品比例越高——根據此次事件的數據,在發生壞帳的情況下最高可達75%。因此,以大幅折扣清算抵押品的機制,使攻擊者得以償還閃電貸並獲取利潤。

漏洞分析

主要漏洞——即缺乏償債能力檢查——存在於 donateToReserves() 函式中,該函式用於讓用戶將其頭寸中的 EToken 作為捐贈轉移至協議的儲備金。對於一般用戶而言,通常沒有執行此操作的動機或誘因。事實上,此漏洞的關鍵在於 donateToReserves() 函式在將 EToken 從用戶頭寸中轉出時,並未執行健康狀況檢查。這使得攻擊者可以直接將透過槓桿借款所建立的大型頭寸中的 EToken 捐出,導致該頭寸的健康因子降至100%以下,進而形成壞帳。

根據設計,Euler Finance 使用動態平倉因子對頭寸執行「軟清算」。簡言之,頭寸的健康狀況越差,該頭寸中可被清算的抵押品比例越高。在發生壞帳的情況下,清算比例最高可達頭寸內抵押品的75%(根據實際攻擊交易計算得出)。因此,被大幅折價清算的大量抵押品,使攻擊者得以償還閃電貸並從中獲利。

攻擊分析

此次攻擊針對不同資金池發起了多筆攻擊交易:

  • 0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d(DAI)
  • 0x71a908be0bef6174bccc3d493becdfd28395d8898e355d451cb52f7bac38617(WBTC)
  • 0x62bd3d31a7b75c098ccf28bc4d4af8c4a191b4b9e451fab4232258079e8b18c4(wstETH)
  • 0x465a6780145f1efe3ab52f94c006065575712d2003d83d85481f3d110ed13d9(USDC)
  • 0x3097830e9921e4063d334acb82f6a79374f76f0b1a8f857e89b89bc58df1f311(stETH)
  • 0x47ac3527d02e6b9631c77fad1cdee7bfa77a8a7bfd4880dccbda5146ace4088f(WETH)

攻擊步驟如下(以第一筆攻擊交易為例):

  1. 攻擊者透過 AAVE 閃電貸借入3000萬 DAI。
  2. 攻擊者存入2000萬 DAI,並獲得2000萬 eDAI。
  3. 由於 Euler Finance 提供槓桿借款功能,攻擊者鑄造了1.95億 eDAI 和2億 dDAI。此時攻擊者持有2.15億 eDAI 和2億 dDAI。
  4. 接續上步驟,攻擊者償還了1000萬債務,以便鑄造更多 eDAI。此時攻擊者持有2.15億 eDAI 和1.9億 dDAI。
  5. 重複步驟3。此時攻擊者持有4.1億 eDAI 和3.9億 dDAI。
  6. 攻擊者呼叫 donateToReserve 函式捐出1億 eDAI,然而在此過程中並未檢查攻擊者的健康因子。此時該頭寸已可被清算(3.1億 eDAI 對應3.9億 dDAI),從而為攻擊者創造了獲利機會。
  7. 攻擊者透過另一個地址合約作為清算人(0xa0b3...)對該頭寸進行清算。清算人(0xa0b3...)獲得3.1億 eDAI 和2.59億 dDAI。
  8. 攻擊者在清算人頭寸(0xa0b3...)中銷毀3890萬 eDAI,提取3890萬 DAI(因償債能力檢查而無法提取更多)。
  9. 攻擊者償還閃電貸。

關鍵攻擊步驟2至7已在交易追蹤圖中標註。

總結

這是2023年規模最大的駭客事件,創紀錄地盜取了1.97億美元資金,犯案者是一名20歲的阿根廷人 Federico Jaime,他向媒體提供了「一個迂迴曲折、有時令人困惑甚至自相矛盾的說法」。儘管如此,「所有可追回的資金」後來均已歸還至 Euler Finance 的國庫地址。然而,有一小部分資金(約20萬美元)被「無意中」轉入 Lazarus Group——一個被指控為受北韓國家支持、並遭美國財政部制裁的犯罪集團。您可以參閱以下連結,即link2link2,以了解這個詳細而有趣的故事。

此次事件的根本原因在於缺乏償債能力檢查,這為我們提供了深刻的教訓。事實上,對於借貸協議而言,評估是否應針對任何可能影響用戶頭寸的操作實施頭寸健康狀況檢查至關重要。此外,項目團隊應主動監控其借貸協議中的重大清算活動,並建立有效的警報系統,以便及時偵測和應對此類事件。

閱讀本系列其他文章:

Sign up for the latest updates
電子報 - 2026年6月
Security Insights

電子報 - 2026年6月

本月報告涵蓋2026年6月三起最大安全事件,確認損失合計約2200萬美元。一次精密蜜罐攻擊利用未受檢查的代幣授權,從JaredFromSubway的MEV機器人抽走約1500萬美元。兩個舊版Aztec rollup部署因證明結算邊界漏洞損失約435萬美元。SecondFi的Ed25519實現缺陷暴露錢包私鑰,導致374個錢包共損失約240萬美元。三起事件共同模式:表面完整但從未真正執行的安全保證。

~$400萬損失:Taiko、SecondFi遭攻擊 | BlockSec週報
Security Insights

~$400萬損失:Taiko、SecondFi遭攻擊 | BlockSec週報

本週區塊鏈安全報告涵蓋2026年6月22-28日兩起重大事件,以太坊和Cardano確認損失約410萬美元。Taiko橋接漏洞結合了外洩的SGX飛地簽名密鑰與不完整的認證策略,未能拒絕調試飛地,使攻擊者註冊惡意證明者並偽造L2狀態證明。SecondFi錢包漏洞源於Ed25519隨機數派生中的密碼學實現缺陷,移除了秘密輸入,可從Cardano公開交易數據離線恢復私鑰。

~$18M損失:jaredFromSubway、Aztec及更多 | BlockSec每週快報
Security Insights

~$18M損失:jaredFromSubway、Aztec及更多 | BlockSec每週快報

本週區塊鏈安全報告涵蓋2026年6月15日至21日,以太坊與BNB Chain共發生3起重大事件,總損失約1830萬美元。重點分析兩起事件:jaredFromSubway事件揭示反向授權攻擊模式——MEV機器人主動將資產授權給不可信第三方合約套利,攻擊者構造假包裝代幣與交易池,發出真實事件但從未消耗授權額度,損失約1500萬美元。Aztec三日內第二次漏洞:逃生艙ZK電路中`old_data_root`兩個見證值缺少相等約束,致使攻擊者可用偽造Merkle樹證明虛假票據所有權並通過鏈上驗證。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit