技术分析Balancer被盗1.2亿美元,漏洞出在哪?
原文标题:《Balancer 被盗$120M 漏洞技术分析》
原文来源:ExVul Security
前言
2025 年 11 月 3 日,Balancer 协议在 Arbitrum、Ethereum 等多条公链遭受黑客攻击,造成 1.2 亿美元资产损失,攻击核心源于精度损失与不变值(Invariant)操控的双重漏洞。
Chainlink 的基础设施长期保持 Web3 领域的最高标准,因此成为 X Layer 致力于为开发者提供机构级工具的自然选择。
本次攻击的关键问题出在协议处理小额交易的逻辑上。当用户进行小金额交换时,协议会调用_upscaleArray 函数,该函数使用 mulDown 进行数值向下舍入。一旦交易中的余额与输入金额同时处于特定舍入边界(例如 8-9 wei 区间),就会产生明显的相对精度误差。
精度误差传递到协议的不变值 D 的计算过程中,导致 D 值被异常缩小。而 D 值的变动会直接拉低 Balancer 协议中的 BPT(Balancer Pool Token)价格,黑客利用这一被压低的 BPT 价格,通过预先设计的交易路径完成套利,最终造成巨额资产损失。
漏洞利用 Tx:
https://etherscan.io/tx/0x6ed07db1a9fe5c0794d44cd36081d6a6df103fab868cdd75d581e3bd23bc9742
资产转移 Tx:
https://etherscan.io/tx/0xd155207261712c35fa3d472ed1e51bfcd816e616dd4f517fa5959836f5b48569
技术分析
攻击入口
攻击的入口为 Balancer: Vault 合约,对应的入口函数为 batchSwap 函数,内部调用 onSwap 做代币兑换。

从函数参数和限制来看,可以得到几个信息:
1. 攻击者需要通过 Vault 调用这个函数,无法直接调用。
2. 函数内部会调用 _scalingFactors() 获取缩放因子进行缩放操作。
3. 缩放操作集中在 _swapGivenIn 或 _swapGivenOut 中。
攻击模式分析
BPT Price 的计算机制
在 Balancer 的稳定池模型中,BPT 价格是重要的参考依据,能决定用户得到多少 BPT 和每个 BPT 得到多少资产。

在池的交换计算中:

其中充当 BPT 价格基准的部分为 不变值 D,也就是操控 BPT 价格需要操控 D。往下分析 D 的计算过程:

上述代码中,D 的计算过程依赖缩放后的 balances 数组。也就是说需要有一个操作来改变这些 balances 的精度,导致 D 计算错误。
精度损失的根源

缩放操作:

如上在通过 _upscaleArray 时,如果余额很小(如 8-9 wei),mulDown 的向下舍入会导致显著的精度损失。
攻击流程详解
阶段 1:调整到舍入边界

阶段 2:触发精度损失(核心漏洞)

阶段 3:利用被压低的 BPT 价格获利

如上攻击者通过 Batch Swap 在一个交易中执行多次兑换:
1. 第一次交换:BPT → cbETH(调整余额)
2. 第二次交换:wstETH (8) → cbETH(触发精度损失)
3. 第三次交换:底层资产 → BPT(获利)
这些交换都在同一个 batch swap 交易中,共享相同的余额状态,但每次交换都会调用_upscaleArray 修改 balances 数组。
Callback 机制的缺失
主流程是 Vault 开启的,是怎么导致精度损失累积的呢?答案在 balances 数组的传递机制中。

分析如上代码,虽然在每次调用 onSwap 时 Vault 都会创建新的 currentBalances 数组,但在 Batch Swap 中:
1. 第一次交换后,余额被更新(但由于精度损失,更新后的值可能不准确)
2. 第二次交换基于第一次的结果继续计算
3. 精度损失累积,最终导致不变值 D 显著变小
关键问题:

总结
Balancer 的这次攻击,总结为下面几个原因:
1. 缩放函数使用向下舍入:_upscaleArray 使用 mulDown 进行缩放,当余额很小时(如 8-9 wei),会产生显著的相对精度损失。
2. 不变值计算对精度敏感:不变值 D 的计算依赖缩放后的 balances 数组,精度损失会直接传递到 D 的计算中,使 D 变小。
3. 缺少不变值变化验证:在交换过程中,没有验证不变值 D 的变化是否在合理范围内,导致攻击者可以反复利用精度损失压低 BPT 价格。
4. Batch Swap 中的精度损失累积:在同一个 batch swap 中,多次交换的精度损失会累积,最终放大为巨大的财务损失。
这两个问题精度损失 + 缺少验证,结合攻击者对边界条件的精心设计,造成了这次损失。
本文来自投稿,不代表 BlockBeats 观点。
猜你喜欢

谁在CFTC牌桌上?一场美国创新金融话语权的重新分配
AI交易员 vs 人类加密货币交易员:德国慕尼黑1万美元实盘交易对决结果(WEEX Hackathon 2026)
了解人工智能交易员如何在 WEEX 慕尼黑实盘对决中胜过人类交易员。从这场战斗中学习 3 个关键策略,以及人工智能为何正在改变加密货币交易。
埃隆·马斯克的 X Money 对比加密货币的合成美元:谁将赢得货币的未来?
合成美元是如何运作的?本指南解释了它们的策略、相对于 USDT 等传统稳定币的优势,以及每位加密货币交易者都必须了解的风险。

以色列军方,正在Polymarket上抓内鬼

Q4巨亏6.67亿美元:Coinbase财报预示2026币圈年关难过?

贝莱德买UNI,图什么?

迷失香港

黄金一度跌超4%、白银暴跌11%,美股大跌引爆算法交易贵金属卖盘?

Coinbase和Solana接连出招,Agent经济将成下一个大叙事

Aave DAO赢了,但博弈尚未结束

Coinbase财报讨论、Aave币股权益之争新进展,海外币圈今天在聊啥?

纽交所母公司ICE放大招,指数期货合约与预测市场情绪工具双管齐下

链上期权,DeFi矿工和交易员的十字路口

WEEX 和 LALIGA 如何重新定义精英表现
WEEX 与西甲联赛合作:当交易纪律与足球卓越相遇。了解 WEEX(香港和台湾的官方区域合作伙伴)如何通过战略、控制和长线业绩的共同价值观,将加密货币和体育爱好者聚集在一起。

X Money Beta版发布:我们对埃隆·马斯克的支付系统了解多少?
要点总结:X Money 预计将在未来一到两周内进入有限的外部 Beta 测试阶段……

Glassnode:比特币进入震荡磨底期,5.5万至7.9万美元成关键防线

2月12日市场关键情报,你错过了多少?
人工智能能战胜人类交易员吗?WEEX阿姆斯特丹加密货币交易大赛内幕
手动交易者 vs.人工智能机器人。我们在阿姆斯特丹安排了一场实盘货币现场对决,让他们正面交锋。速度与直觉,数据与感觉。看看哪种策略在 WEEX AI 黑客马拉松中经受住了实时市场压力的考验。
谁在CFTC牌桌上?一场美国创新金融话语权的重新分配
AI交易员 vs 人类加密货币交易员:德国慕尼黑1万美元实盘交易对决结果(WEEX Hackathon 2026)
了解人工智能交易员如何在 WEEX 慕尼黑实盘对决中胜过人类交易员。从这场战斗中学习 3 个关键策略,以及人工智能为何正在改变加密货币交易。
埃隆·马斯克的 X Money 对比加密货币的合成美元:谁将赢得货币的未来?
合成美元是如何运作的?本指南解释了它们的策略、相对于 USDT 等传统稳定币的优势,以及每位加密货币交易者都必须了解的风险。