Balancer被盜$120M漏洞技術分析

By: blockbeats|2025/11/04 12:00:07
0
分享
copy

前言

2025 年 11 月 3 日,Balancer 協定在 Arbitrum、Ethereum 等多條公鏈遭受駭客攻擊,造成 1.2 億美元資產損失,攻擊核心源自於精確度損失與不變值(Invariant)操控的雙重漏洞。

本次攻擊的關鍵問題出在協議處理小額交易的邏輯上。當使用者進行小金額交換時,協定會呼叫_upscaleArray 函數,該函數使用 mulDown 進行數值向下捨去。一旦交易中的餘額與輸入金額同時處於特定舍入邊界(例如 8-9 wei 區間),就會產生明顯的相對精度誤差。

精度誤差傳遞到協定的不變值 D 的計算過程中,導致 D 值被異常縮小。而 D 值的變動會直接拉低 Balancer 協議中的 BPT(Balancer Pool Token)價格,駭客利用這一被壓低的 BPT 價格,透過預先設計的交易路徑完成套利,最終造成巨額資產損失。

漏洞利用 Tx:

https://etherscan.io/tx/0x6ed07db1a9fe5c0794d44cd36081d6a6df103fab868cdd75d581e3bd23bc9742

https://etherscan.io/tx/0xd155207261712c35fa3d472ed1e51bfcd816e616dd4f51 7fa5959836f5b48569

技術分析

攻擊入口

攻擊的入口為Balancer: Vault 合約,對應的入口函數為 batchSwap 函數,內部呼叫 onSwap 做代幣兌換。

Balancer被盜src=


從函數參數和限制來看,可以得到幾個資訊:

從函數參數和限制來看,可以得到幾個資訊:

1. 攻擊者需要直接呼叫這個函數,無法通過這個函數,無法直接呼叫這個函數。

2. 函數內部會呼叫 _scalingFactors() 取得縮放因子進行縮放操作。

3. 縮放操作集中在 _swapGivenIn 或 _swapGivenOut 中。

攻擊模式分析

BPT Price 的電腦製

在 Balancer 的穩定池模型中,BPT 價格是重要的參考依據,用戶能決定用戶得到多少


在池的交換計算中:

1

上述程式碼中,D 的計算過程依賴縮放後的 balances 陣列。也就是說需要有一個操作來改變這些 balances 的精確度,導致 D 計算錯誤。

精確度損失的根源

縮放操作:



攻擊流程詳解

階段 1:調整到捨去邊界

2:觸發精確度損失(核心漏洞)

階段 3:利用被壓低的 BPT 價格獲利


如上攻擊者透過 Batch Swap 在一個交易中執行多次兌換:

1. 第一次交換:BPT → cbETH(調整)

1. 第一次交換:BPT → cbETH(調整後)

3. 第三次交換:底層資產 → BPT(獲利)

這些交換都在同一個 batch swap 交易中,共享相同的餘額狀態,但每次交換數都會修改數組。

Callback 機制的缺失

主流程是 Vault 開啟的,是怎麼導致精確度損失累積的呢?答案在 balances 陣列的傳遞機制


分析如上程式碼,雖然在每次啟用 onSwap.中:

1. 第一次交換後,餘額被更新(但由於精度損失,更新後的值可能不準確)

2. 第二次交換基於第一次的結果繼續計算精度

2. 第二次交換基於第一次的結果繼續計算精度 Dp>

3. 導致不變值顯著變小

關鍵問題:


總結

Balancer 的這次攻擊,總結為以下幾個原因:

1. 縮放函數使用向下捨去:_upscaleArray 使用相對

2. 不變值計算對精度敏感:不變值 D 的計算依賴縮放後的 balances 數組,精度損失會直接傳遞到 D 的計算中,使 D 變小。

3. 缺少不變值變化驗證:在交換過程中,沒有驗證不變值 D 的變化是否在合理範圍內,導致攻擊者可以重複利用精度損失壓低 BPT 價格。

4. Batch Swap 中的精度損失累積:在同一個 batch swap 中,多次交換的精度損失會累積,最終放大為巨大的財務損失。

這兩個問題精度損失 + 缺少驗證,結合攻擊者對邊界條件的精心設計,造成了這次損失。

猜你喜歡

2月11日關鍵市場資訊差,一定要看!|Alpha早報

1.頭條新聞:SBF尋求重新審判,已提交上訴文件

2月11日市場關鍵情報,你錯過了多少?

1. 鏈上資金:本日55.8M美元流入Ethereum;96.5M美元流出Arbitrum 2. 最大漲跌幅:$ISLM、$MYX 3. Top新聞:修復性反彈後持續橫盤,市場底部點位預測彙總

比特幣礦工MARA在10小時內移動1318 BTC,交易者警惕強迫礦工賣出

馬拉松數字控股(MARA)在比特幣價格下跌期間,在10小時內轉移了1,318枚比特幣,價值約8,690萬美元。 這些比特幣被轉至與Two Prime、BitGo和Galaxy Digital相關的加密貨幣錢包。 比特幣近期價格持續下跌,給礦工帶來經濟壓力,並導致礦工股價下跌。 MARA股價在過去5天中下跌超過30%,市場面對多重壓力。 WEEX Crypto News, 2026-02-09 06:20:08 在加密貨幣市場持續波動的浪潮中,比特幣礦商馬拉松數字控股(Marathon Digital Holdings,以下簡稱MARA)做出了一個驚人的舉動。該公司在短短10小時內轉移了1,318枚比特幣,這一動作引起了市場人士的廣泛關注,許多人擔心這可能會觸發礦工的強行賣出潮,進一步加劇市場波動。 MARA的比特幣移動策略 根據區塊鏈數據顯示,這次比特幣的轉移涵蓋了三個主要錢包:Two Prime、BitGo以及Galaxy Digital。每個接受比特幣的公司都有各自的用途和功能。以Two…

I’m sorry for the inconvenience, but without acces…

I’m sorry for the inconvenience, but without access to the original article you referred to, I’m unable to…

I’m sorry, I can’t assist with that request.

I’m sorry, I can’t assist with that request.

I’m sorry, but I cannot fulfill this request as it…

I’m sorry, but I cannot fulfill this request as it involves rewriting copyrighted content without having access to…

熱門幣種

最新加密貨幣要聞

閱讀更多