- Source: blockchain-security-auditor.md (The Agency Specialized, smart contract security audit agent) - Entities: The-DAO-2016, Euler-Finance, Nomad-Bridge, Curve-Finance - Concepts: Reentrancy, Oracle-Manipulation - Updated: index.md (消除了source missing标记), overview.md, log.md
2.2 KiB
2.2 KiB
title, type, tags, sources, last_updated
| title | type | tags | sources | last_updated | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Curve Finance | entity |
|
|
2026-04-25 |
基本信息
- 时间:2023 年 7 月 30 日
- 平台:Ethereum(多链,影响 ETH、ARB、CRV、MSRP 等池)
- 损失:超过 7,000 万美元
- 根本原因:Vyper 0.3.0 编译器的重入锁(Reentrancy Guard)实现 bug
- 特点:这是 DeFi 历史上罕见的编译器 bug 导致的安全事件,而非业务逻辑漏洞
攻击原理
Curve Finance 使用 Vyper 语言编写合约,Vyper 0.3.0 的 nonreentrant 修饰符存在 bug:当合约存在多个相同名称的回调函数(如 receive() 和 fallback())时,重入锁未能正确生效。
攻击者利用此漏洞对多个 Curve 池发起攻击:
- 在 AMM 池中进行兑换(swap)
- 触发
receive()回调 - 在回调中调用池的敏感函数(添加流动性/移除流动性)
- 由于重入锁失效,攻击者可以在单笔交易内重复执行操作
- 操纵池子的虚拟价格后执行大额提款,获取超额资产
CRV 池的流动性枯竭(攻击者大量提取 CRV)导致 Curve 创始人 Michael Egorov 的健康仓位差点被清算,引发 CRV 价格闪崩。
关键教训
- 编译器不等于安全:开发者通常信任编译器后端,但 Vyper 0.3.0 的 bug 打破了这一假设
- 语言级安全机制不可信:即使合约使用了
nonreentrant修饰符,编译器实现 bug 可使其完全失效 - 多池风险传染:Curve 的池共享相同的合约模板,一个漏洞影响多条链上的多个池
- DeFi 可组合性放大风险:CRV 池的风险传导至借贷协议(Aave),引发连环清算风险
关联漏洞类型
- Reentrancy — 核心漏洞类型,虽然是编译器 bug 导致,但最终表现为重入攻击
- AMM Invariant Violation(AMM 不变量破坏):攻击者在交易中操纵价格
关联页面
- blockchain-security-auditor — 区块链安全审计 Agent,将 Curve Finance 作为关键记忆模式收录于 Pattern Library
- The-DAO-2016 — 同为重入攻击案例,但前者是智能合约逻辑漏洞,后者是编译器 bug