Bitget App
交易“智”变
【英文长推】深入解读 Balancer V2 被攻击事件:漏洞机理、攻击步骤与教训

【英文长推】深入解读 Balancer V2 被攻击事件:漏洞机理、攻击步骤与教训

ChainFeedsChainFeeds2025/11/05 20:59
作者:BlockSec

Chainfeeds 导读:

攻击者刻意设置了参数,包括迭代次数和输入金额,以最大化精度损失的效果。

文章来源:

文章作者:

BlockSec

观点:

BlockSec:2025 年 11 月 3 日,Balancer V2 的 Composable Stable Pool,以及多个链上基于其 Fork 的项目,遭遇了一次跨链协调攻击,造成总损失超过 1.25 亿美元。BlockSec 在第一时间发出预警,并随后发布了初步分析。这是一场高度复杂的攻击。我们的调查显示,根本原因来自不变式计算中的精度损失,通过精度损失触发价格操纵,从而影响了 BPT(Balancer Pool Token)价格。攻击者利用单次 batchSwap 操作,从特定的稳定池中获利。受影响的组件是 Balancer V2 的 Composable Stable Pool。此类池专为预期维持接近 1:1 兑换比率的资产而设计,能够以最小滑点进行大额交易,大幅提升同类或关联资产的资本效率。每个池都有自己的 BPT,其价格可近似表达为:BPT 价格 = D /totalSupply,其中 D 为稳定数学中的不变式,代表池子的虚拟总价值。从公式可以看出,如果 D 在数学层面被变小(即使真实资金未损失),BPT 的价格就会表现得更低。Balancer V2 提供 batchSwap () 函数,可在 Vault 内进行多跳 Swap,SwapRequest 中有 GIVEN_IN 与 GIVEN_OUT 两种模式。在 GIVEN_OUT 模式下,调用方指定期望输出金额,池子负责计算所需输入金额。在 Stable 池中,当计算所需输入量 amountIn 时,需要根据不变式公式求解多项式方程,这些计算会统一进行 Upscaling 和 Downscaling。理论上,两者为相反操作,但实际实现存在方向不同的舍入:上调仅使用向下取整(mulDown),下调却可能向上或向下取整(divUp /divDown)。正是这一不一致,为攻击留下了空间。 漏洞的根源在于 BaseGeneralPool._swapGivenOut () 中对 swapRequest.amount 进行 Upscaling 时采用了向下取整。被向下取整后的数值被当作 amountOut 用于 _onSwapGivenOut () 的输入,导致最终计算出的 amountIn 小于真实需求量,从而违反了舍入应当有利于协议的常规设计原则。对于 (wstETH /rETH/cbETH) 这类池而言,攻击者可以用更少数量的输入资产兑换出更多另一种资产,降低不变式 D,从而压低 BPT 价格。攻击者执行了双阶段攻击。第一阶段在单笔交易中完成核心攻击逻辑,但不立即获利;第二阶段才通过单独交易取出利润。第一阶段又分为参数计算与 batch swap 两步。以 Arbitrum 链上的攻击交易为例(TX: 0x7da32e…55773),攻击者先获取池内参数,包括 scaling factors、A(放大系数)、BPT 汇率、swap fee 等,然后计算 trickAmt,并通过部署辅助合约进行模拟。攻击者使用离线计算与链上模拟相结合的方式精准调试下一步 swap 的参数,包含迭代次数与每次的输入输出数值。迭代中执行三步 swap:在第一步将目标 token 数量推到 trickAmt + 1;第二步继续 swap 出目标 token,此时触发 _upscale () 的向下取整;第三步则反向 swap,将池内余额按 “去掉最高两位小数” 向下截断后再交换回去。例如 324,816 → 320,000。部分情况下,由于 StableSwap 数学求解使用 Newton–Raphson 方法,会失败,攻击者准备了两次 fallback,使用原值的 9/10 重试。 攻击发生后,Balancer 由于部分机制无法暂停,导致攻击影响被放大,随后出现多条链上的跟风与复制攻击,总损失超过 1.25 亿美元。此事件暴露出去中心化协议在四个领域的关键问题:不一致的舍入机制、攻击者不断进化的手法、无法暂停导致损失扩大、初始化和运维状态缺乏实时监控。上调仅允许向下取整,而下调却允许双向取整,这种不对称性在极端构造参数下会积累为可被利用的精度损失。本应永远有利于协议的舍入方向,在这种情况下反过来损害了协议方利益。攻击者采用双阶段手法,第一阶段执行攻击但账面无利润,第二阶段再单独提现,规避链上监测模型。攻击的每一步都结合离链与链上模拟,辅助合约甚至复用了 Balancer 的 StableMath 实现,连错误信息都保持一致。攻击发生后,多链跟进,许多 Fork 项目也受影响,说明只要稳定数学与舍入逻辑一致,漏洞可跨生态传播。事件说明,DeFi 协议需要更高精度的数学运算、更严格的舍入验证与防可疑路径模拟机制,以及在异常情况下的应急暂停能力。【原文为英文】

0

免责声明:文章中的所有内容仅代表作者的观点,与本平台无关。用户不应以本文作为投资决策的参考。

PoolX:锁仓获得新代币空投
不要错过热门新币,且APR 高达 10%+
立即参与!

你也可能喜欢

投资顶级 VC 却四年本金腰斩,加密基金怎么了?

部分加密基金在牛市中通过杠杆或早期布局跑赢比特币,并提供风险对冲和多元化机会;但长期表现参差不齐。

深潮2025/11/06 18:27
投资顶级 VC 却四年本金腰斩,加密基金怎么了?

Ray Dalio 最新发文:这次不一样,美联储正在刺激泡沫

由于政府政策的财政侧现在具有高度刺激性,量化宽松将有效地将政府债务货币化,而不是简单地为私人系统重新注入流动性。

深潮2025/11/06 18:27
Ray Dalio 最新发文:这次不一样,美联储正在刺激泡沫