Yearn yETH为什么会被黑? Yearn yETH被黑的漏洞原理

小编:小蝶 更新时间:2026-02-11 13:31

在Defi体系中,流动性池是自动化做市(AMM)得以运行的底层结构。Yearn Finance推出的yETH池便是典型案例。该池汇集多种以太坊流动性质押衍生品(LST),如stETH、cbETH、rETH、apxETH、sfrxETH、wstETH等。用户将这些资产注入池中,协议按份额铸造LP代币yETH,作为资产所有权与收益分配的凭证。

Yearn yETH为什么会被黑? Yearn yETH被黑的漏洞原理

最近Yearn Finance的yETH池后来因核心数学函数缺陷遭到攻击,成为2025年Defi安全领域的重要案例。

那么Yearn yETH为什么会被黑?Yearn yETH被黑的漏洞原理是什么?

LP代币的作用机制

1、当池子产生收益时,持有人可按持仓比例分配收益。

2、持有人可按比例赎回底层资产。

池内资产规模越大,滑点越低,定价越稳定。LP代币本质上是一种可流通的“份额映射”。

LP铸造逻辑与 _calc_supply函数

由于不同LST的兑换比例与实际价值存在差异,合约必须精确计算每次存入在池中总价值中的占比。Yearn yETH加权稳定池通过 _calc_supply 函数完成核心计算。

1、计算新的LP总供应量D

2、更新平衡指标 Π(vb_prod)

其中涉及两个核心参数。

Σ(虚拟余额之和)

反映池中资产的整体规模。

Π(虚拟余额之积)

衡量各资产之间的均衡程度,是AMM不变量曲线成立的前提。

当 Π 保持正常区间时,AMM能正确表达资产间的价格关系;一旦 Π 被推至异常区间,定价曲线即发生结构性偏移。2025年11月30日的攻击正是围绕 Π 展开。

Yearn yETH攻击全过程拆解

根据Check Point Research与SlowMist报告,攻击在单笔交易内完成(区块高度21,914,086),损失约900万美元。

第一阶段:构造数值临界状态

攻击者通过闪电贷借入大量LST,然后进行了以下操作。

1、调用 update_rates 更新虚拟余额

2、多次小额存取,使缓存变量 packed_vbs[] 留下残值

3、将 _calc_supply 推至数值敏感边界

这些操作均为合法函数调用,但组合方式改变了池内部状态。

第二阶段:Π 被截断为0

关键公式:Π' = Π × (s' ÷ s)^8

攻击者刻意让s' 远小于s,使比值趋近于0。

在Solidity定点数运算下,8次幂结果被直接截断为0:Π' = Π × 0 = 0

不变量约束A·Σ ≥ D·Π 失效,Newton迭代发散,AMM曲线退化。合约未做域检查,导致系统进入异常状态。

第三阶段:退化模式下超额铸造

Π = 0后,_calc_supply 退化为线性近似逻辑。

单边存入被严重高估,小额资产即可换取大量LP。攻击者以极低成本获得虚高的yETH。

第四阶段:循环赎回抽干流动性

攻击者调用 remove_liquidity。

1、合约按LP比例分配真实资产

2、无法识别LP来自异常计算

数轮循环后,池内资产接近耗尽。

第五阶段:16 wei触发天量铸造

当池清空后。

1、主供应量 self.supply = 0

2、packed_vbs[] 未清除

攻击者存入16 wei。合约误判为初始化流程。

在执行 unsafe_sub、unsafe_mul 时发生下溢,生成巨大正整数。

结果:约2.35 × 10^56枚yETH被铸造

攻击者将其通过Curve兑换为WETH,偿还闪电贷后净赚约900万美元。

约1100 ETH经Tornado Cash转移。

Yearn追回约240万美元。

同类数学漏洞对比

项目Yearn yETHCetus ProtocolBalancer V2
时间2025/11/302025/05/222025/11/03
损失900万美元2.23亿美元1.28亿美元
类型不变量截断+下溢位移溢出阈值错误舍入误差累积
手法Π 归零后超额铸造1枚代币伪装巨额流动性批量微兑换压低价格
追回约240万美元冻结1.62亿美元追回约1900万美元

Cetus:位移运算阈值错误

Sui上最大DEX。

checked_shlw 的溢出判断常量写错,使溢出值绕过检查。

攻击者以1枚代币换取天量流动性。

部分资产被冻结并治理追回。

Balancer:舍入误差被放大

攻击者执行65次微型batchSwap。

1、利用 _upscaleArray 向下舍入

2、累积精度损失

3、压低BPT价格

4、低价铸造再全额赎回

攻击合约含 console.log,显示可能借助LLM编写。

2025年Defi安全态势

Chainalysis数据显示。

1、2025年全年被盗约34亿美元

2、上半年24.7亿美元

3、单笔攻击规模显著扩大

特点

1、代码漏洞呈阶段性下降后反弹

2、钱包与私钥泄露成为最大损失来源

3、数学边界漏洞成为主攻方向

攻击演变路径

1、早期:重入、预言机操纵

2、中期:闪电贷套利

3、当前:算术边界、精度损失、不变量收敛失败

协议层面的工程防御思路

1. 极端值测试覆盖

1、除数趋近0

2、高次幂运算

3、极端供应比值

4、清池后再初始化

模糊测试应覆盖完整生命周期。

2. 禁用无检查算术

Yearn使用 unsafe_sub 导致下溢

Cetus位移阈值错误

Balancer舍入方向问题

关键路径必须使用安全算术。

3. LP铸造合理上限

规则示例:LP ≤ 存入价值 × 常数C

即便C设为3,也足以阻断异常放大。

4. 不变量文档化+模糊测试

1、每条数学不变量需记录逻辑假设

2、建立单元、集成、变异、fuzz测试体系

3、验证舍入方向在多步操作下仍成立

常见问题解析

Π 归零的根本原因?

(s'/s)^8在定点数下被截断为0,合约缺乏边界检查,导致不变量失效。

16 wei为何能铸造10^56级别代币?

清池后主供应量归零但缓存残留。

下溢生成巨大正整数,系统误判为初始化铸造。

与Cetus的区别?

Yearn:不变量截断+下溢

Cetus:位移溢出检查常量错误

分别发生在Vyper与Move合约中。

Yearn追回多少资产?

约240万美元,通过销毁pxETH实现。

yETH池受影响,Vault产品未受波及。

Defi如何防范此类漏洞?

1、极端边界测试

2、安全算术

3、LP上限限制

4、数学不变量文档化

5、实时链上异常监控

数学层漏洞往往隐藏在“正常逻辑”深处。当外部权限问题逐步被封堵,算术边界正在成为新的攻击入口。

免责声明:本文所有内容及观点仅供参考,不构成投资建议,不代表本站观点和立场。投资者应自行决策与交易,对投资者交易形成的直接或间接损失,作者及本站将不承担任何责任!