公开事件复盘Ethereum复盘 v1.0事件评级 · 严重风险

Euler Finance donateToReserves 缺失健康检查事件复盘

基于公开披露资料的事后复盘,非 umibit 受托审计。2023-03-13,攻击者利用 EToken 的 donateToReserves() 缺少账户健康度检查这一业务逻辑缺陷:借闪电贷自我加杠杆、调用 donateToReserves 把头寸主动做成资不抵债,再自我清算、借 Euler 的软清算折扣低价吃下抵押品,循环套利约 $1.97 亿。 该函数缺陷由 eIP-14 升级引入、存活约 8 个月。攻击者随后通过链上协商归还了几乎全部可追回资金。

这是一份公开事件复盘,不是 umibit 受托审计。

本页基于公开披露资料对一起真实安全事故做事后分析,用于安全研究与方法论说明,并不代表 umibit 与 Euler Finance(借贷协议) 存在任何业务关系。文中每一项结论均可对照下方「核验来源」独立核查。

报告编号
EULER-2023
受影响项目
Euler Finance(借贷协议)
区块链
Ethereum
语言
Solidity
损失规模
≈ $197M(后经链上协商追回约 $240M 价值)
报告版本
复盘 v1.0
事件日期
2023-03-13
事件评级
严重风险

相关合约 / 链上对象

事件涉及的合约 / 链上对象及其可核验身份(地址 / commit),据公开披露整理。

名称类型commit地址
EToken.donateToReserves()缺失健康检查的函数
liquidate()(软清算折扣)清算逻辑
攻击者地址链上地址0xb66cd966670d962c227b3eaba30a872dbfb995db
示例攻击交易(DAI 市场)交易哈希0xc310a0affe2169d1f6feec1c63dbc7f7c62a887fa48795d327d4d2da2d6b111d

根因与漏洞

严重 1 2
ID标题严重状态类别
EULER-01donateToReserves() 缺少 checkLiquidity 健康度检查,可主动制造资不抵债严重Resolved 已修复业务逻辑
EULER-02自我抵押 + 动态软清算折扣,使自我清算可低价吃下抵押品获利Resolved 已修复经济机制
EULER-03缺陷由治理升级 eIP-14(2022-07)引入,存活约 8 个月Resolved 已修复治理

公开事件复盘。 本页基于公开披露资料对一起真实安全事故做事后分析,用于安全研究与方法论说明, 并非 umibit 受托审计。文中数据请以「核验来源」所列公开资料为准。

事件概览

Euler 是部署于以太坊主网的无许可借贷协议。2023-03-13,攻击者在多个市场反复套利,造成约 $1.97 亿 损失, 是 2023 年最大的一起。由于赃款以 ETH 持有、后续 ETH 升值,最终在链上协商归还时按价值计约 $2.4 亿—— $1.97 亿是损失、$2.4 亿是追回价值,二者不应混为一谈

根因:一个本该有、却缺失的健康检查

Euler 中所有会改变账户余额、可能危及偿付能力的函数,都应调用 checkLiquidity 校验账户「健康度」。 但 EToken 模块的 donateToReserves() 漏掉了这道检查。攻击者据此构造闭环:

  1. 从 Aave 闪电贷 约 3000 万 DAI;
  2. 存入并用 mint() 递归自我抵押、放大杠杆;
  3. 调用 donateToReserves() 主动把自己的头寸做成资不抵债——因为没有健康检查拦截;
  4. 用第二个受控账户 自我清算:Euler 的 动态「软清算」折扣 让清算人能折价吃下抵押品,于是低价拿走抵押、 留下坏账、净赚一笔;
  5. 偿还闪电贷,跨市场重复,累计约 $1.97 亿。

根因是 业务逻辑缺陷(缺失的健康检查),并与「自我抵押 + 动态清算折扣」共同放大——不是重入、预言机或溢出。 该缺陷由治理升级 eIP-14(2022-07) 引入,已在主网存活约 8 个月,期间经过多家审计。

影响与处置

  • 攻击者在约三周内 通过链上消息协商,分批归还了几乎全部可追回资金
  • 此案也凸显:多家审计 + 形式化验证 + 漏洞赏金,仍可能放过一个「少调用一个检查」的逻辑缺口—— 覆盖面与不变量的完整性,比「审过几家」更关键。

AI 视角 · 为什么这类风险只会更多

Euler 最扎心之处在于:漏洞不深奥,就是 「同类函数都做了健康检查,唯独这一个忘了」。这种「缺失的检查 / 被打破的不变量」是最难靠人工通读发现、却最适合自动化大规模比对的一类——可以系统性地枚举「所有改变偿付能力的路径 是否都过了 checkLiquidity」。

随着协议组合度与升级频率升高,这类逻辑缺口只会更多,而 AI 正让攻击者能更快地在海量代码里定位它们。防御的答案不是 「再多审一家」,而是把 关键不变量做成可机检的规则、对全量路径求覆盖,并在每次升级时重新求证——这正是 「AI 全覆盖 + 专家研判」要解决的问题。

核验来源

本页结论所依据的公开资料,每项数据与论断都可对照独立核查。

如何核验本复盘

请对照上方「核验来源」所列的官方根因分析、安全机构报告与区块浏览器,独立核查事件日期、损失规模、根因与链上地址等每一项论断。

← 返回安全事件复盘