Files
nexus/wiki/entities/Euler-Finance.md

43 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Euler Finance"
type: entity
tags: [blockchain, defi, exploit, lending, eoa-donation]
sources: [blockchain-security-auditor]
last_updated: 2026-04-25
---
## 基本信息
- **时间**2023 年 3 月 13 日
- **平台**Ethereum
- **损失**1.97 亿美元Euler Finance 无辜用户存款几乎全损)
- **根本原因**donate-to-reserves 操纵攻击Euler 白帽事后命名)
- **攻击者**:关联 Lazarus Group朝鲜黑客组织
- **白帽救援**:攻击者后归还全部资金(通过协商)
## 攻击原理
Euler Finance 的 `donateToReserves()` 函数允许任意用户将自己的 ETH 转入储备池。当攻击者先存款、后捐赠、后借款时其健康因子health factor`eToken.balanceOf()` 更新前被错误计算,导致超额借款:
1. 攻击者存入 30 ETH获得 30 eETH
2. 攻击者调用 `donateToReserves(30 ETH)`,将 30 eETH 转入储备
3. 此时攻击者的真实余额3000 ETH远高于名义余额0但清算逻辑基于名义余额
4. 攻击者以极低抵押率10 倍杠杆)借入 10 倍存款规模的资产
5. 抵押品价值下跌时,清算机器人按错误健康因子执行清算,攻击者获超额清算收益
关键漏洞:`donateToReserves()` 的实现没有考虑对内部 accounting 的影响,健康因子计算依赖于可被操纵的 `eToken.balanceOf()` 而非内部余额追踪。
## 关键教训
- **不要相信任何"管理员"函数是安全的**:看似无害的 `donateToReserves()` 影响了整个清算引擎
- **协议不变量必须考虑所有代码路径**:包括看似无害的辅助函数
- **白帽救援**:最终攻击者归还资金(否则 1.97 亿无法追回),成为 DeFi 历史上最大白帽救援案例
## 关联漏洞类型
- [[Flash-Loan-Attack]] — 攻击使用闪电贷提供初始资金
- [[Oracle-Manipulation]] — 健康因子计算依赖可操纵的内部状态
- 经济攻击Economic Exploit利用 DeFi 协议的会计逻辑错误
## 关联页面
- [[blockchain-security-auditor]] — 区块链安全审计 Agent将 Euler Finance 作为关键记忆模式收录于 Exploit Pattern Library
- [[The-DAO-2016]] — 同为 DeFi 安全史上的里程碑事件,但攻击类型不同
- [[Curve-Finance]] — 2023 年另一大 DeFi 安全事件