一、事件概覽
在去中心化金融(DeFi)這一基於區塊鏈運行的鏈上金融體系中,Balancer 作為核心流動性協議之一,於2025年11月3日發生大規模資金異常提取事件。攻擊者圍繞 Composable Stable Pools 的計算邏輯,利用 scaling math 中的捨入方向錯誤(rounding direction error),結合 batchSwap 的多路徑交易能力,在短時間內反覆執行複雜交換操作,逐步扭曲流動性池的內部狀態,並在未觸發有效防護機制的情況下完成資金轉移,最終造成約 1.16 億至 1.28 億美元損失,波及主協議及多個 fork 項目,涉及 WETH、wstETH、osETH 等核心資產。
以2026年的視角回看,這起事件已不再只是一次「漏洞利用」,而更接近一次對協議運行規則的系統性操控。攻擊者沒有突破權限邊界,亦未竄改合約程式碼,而是在既有機制內,透過精確構造交易路徑,持續放大微小計算偏差,最終令系統在邏輯上接受了資金歸屬的轉移。問題的關鍵不在於單一錯誤,而在於多個設計假設在對抗性環境中疊加後形成的結構性偏差。
如果用統一的銀行系統類比來理解:
- Balancer Pool = 銀行的資金池帳戶
- invariant = 銀行帳本的平衡規則
- batchSwap = 客戶在銀行內部進行複雜轉帳組合
- rounding error = 利息或匯率計算中的微小偏差
- internal balance = 銀行內部記帳帳戶
這起事件的關鍵在於:
攻擊者並沒有「入侵銀行」,而是利用規則,令銀行系統在邏輯上「承認」這筆錢屬於他。
二、攻擊路徑:從「數學偏差」到「系統性抽水」
站在2026年回看,這次攻擊可以被清晰地拆分為四個階段,其本質不是單點漏洞利用,而是一個逐步放大的系統操控過程。
1. 起點:捨入方向錯誤帶來系統性偏差
攻擊起點來自 Composable Stable Pool 中的一個關鍵實現缺陷:在_swapGivenOut(EXACT_OUT)路徑中,對輸出資產進行_upscale時錯誤地使用了FixedPoint.mulDown(向下捨入),而非應使用的mulUp(向上捨入)。
這一捨入方向錯誤(rounding direction error)導致系統在計算所需輸入金額時產生系統性低估,從而使 invariant 在特定路徑下被持續壓低,並為後續的組合利用提供了基礎。該誤差在單次計算中影響極小,但在特定路徑下會形成穩定的價值偏移方向,並具備被重複利用的條件。
2. 利用放大:批量交換機制形成路徑級套利能力
攻擊者利用批量交換機制(batchSwap)的組合執行能力,將這一微小偏差轉化為可持續放大的套利路徑:
- 在單筆交易中執行多步驟交換
- 在多個流動性池之間構造循環路徑
- 在每一步中穩定獲取 rounding advantage
關鍵在於,這些操作本身屬於協議設計允許的複雜交易能力,而 invariant 校驗僅在局部生效,使得系統將這些路徑視為「正常套利行為」。
最終結果是,攻擊者能夠在協議規則範圍內,持續累積結構性收益。
3. 狀態扭曲:人為製造系統性 deficit
隨著循環操作的持續進行,流動性池逐漸進入一種「表面平衡、實際偏移」的狀態:
- invariant 在局部仍然成立
- 資產分佈逐步偏離初始平衡
- 系統內部形成隱性 deficit
這一階段標誌著系統安全假設開始失效,但仍未觸發任何有效檢測機制。
4. 收割階段:internal balance 的合法提取
在完成狀態操控後,攻擊者透過 Vault 的manageUserBalance:
- 將帳面上「歸屬於自己」的資產轉入 internal balance
- 再完成提取與轉移
這一過程未涉及權限繞過,本質上是一次系統在規則內認可的提款行為。其後資金被拆分,並透過跨鏈橋及新部署合約進行分散處理。
三、資金路徑與行為模式
資金流結構
- 初始資金(閃電貸或自有資金)進入池子
- 多輪 batchSwap 操作(數十至數百次)
- 不變量逐步偏移
- internal balance 累積
- 資金提取
- 跨鏈拆分與轉移
行為特徵
- 高頻、結構化交易(非隨機行為)
- 強腳本化執行(高度自動化)
- 多鏈分散(降低追蹤難度)
多家分析機構基於行為模式認為,攻擊者具備成熟 DeFi 攻擊經驗,可能屬於專業化攻擊組織,但目前尚無明確歸因結論。
四、範式升級:從捨入漏洞到機制性利用
業界對該事件的復盤已相對充分,但更關鍵的問題在於:
攻擊的利用方式,正在從單點漏洞擴展為對系統規則的組合性操控。
1. 從 Bug Exploit → Economic Manipulation
- 傳統攻擊路徑通常是:發現漏洞 → 繞過權限 → 直接獲取資金
- 本次攻擊:未突破權限 → 未竄改程式碼 → 完全利用既有規則
這意味著:程式碼層面可以是「正確的」,但系統層面仍然可能是「可被操控的」。
2. DeFi 的核心假設被挑戰
Balancer V2 的設計隱含一個重要前提:參與者行為以理性套利為主,而非對抗性攻擊。
但現實情況是:
- 攻擊者是主動對抗系統的參與者
- 會組合多個機制構造最優攻擊路徑
- 會系統性利用規則邊界
類比銀行系統業務:這就像是系統假設客戶只是正常交易,但現實中有人在專門設計規則套利路徑。
3. invariant 不再是安全邊界
過去,invariant 被視為核心安全保障;但此次事件表明:
- invariant 可以在多步操作中被逐步削弱
- 局部正確不等於整體安全
這意味著:安全邊界不再是單一公式,而是整個執行路徑與行為組合。
五、官方回應與效果評估
1. 有效性分析
Balancer 團隊及生態方在事件後迅速採取措施,包括暫停受影響池、協調流動性撤出、修復 rounding 邏輯,以及推進 V3 架構改進。
這些措施在短期內有效,主要因為:
- 直接切斷已知攻擊路徑
- 降低系統中可被利用的流動性規模
- 修復導致偏差累積的關鍵計算問題
從效果來看:
- 短期:有效阻止進一步損失,穩定市場預期
- 長期:為後續架構升級提供方向,尤其是在數學一致性與校驗機制方面
2. 局限性分析
然而,這些措施更多是針對已暴露問題的修復,而非對機制本身的重構。
- 修復 rounding ≠ 修復機制
雖然消除了直接觸發點,但 batchSwap 的組合利用空間仍然存在。 - invariant 校驗仍是局部的
系統依舊以單步正確性為核心,難以防禦路徑級攻擊。 - 缺乏行為級風控能力
協議仍缺乏對異常交易模式(如循環路徑、高頻套利)的識別能力。
總結來看:當前回應解決了「這個漏洞」,但尚未覆蓋「這一類攻擊方式」。
六、防禦建議
- 引入 Path-level Invariant 校驗
在交易層面驗證整個執行路徑的淨效果,防止多步合法操作累積異常結果。 - 強制 rounding 一致性
統一所有計算路徑的捨入邏輯,從源頭消除可被放大的偏差。 - 引入經濟攻擊模擬(Adversarial Simulation)
透過對抗性測試模擬極端攻擊路徑,提前發現機制風險。 - 限制複雜交易組合能力
對 batchSwap 的路徑複雜度與執行深度設定約束,降低攻擊可行性。 - 構建行為級風控系統
識別異常交易模式(如循環套利、高頻路徑),並實施動態限制。 - internal balance 提取隔離機制
對內部餘額提取引入延遲或額外驗證,阻斷最終價值提取路徑。
總結來看:這些措施的核心在於,將安全邊界從「程式碼正確性」擴展到「系統行為正確性」。在對抗性環境中,攻擊者往往不會違反規則,而是組合利用規則,因此防禦體系必須具備識別路徑異常與行為異常的能力。
七、結論
Balancer V2 Exploit 不僅是一次大規模資金損失事件,更揭示了 DeFi 安全範式正在發生的變化。從表面看,這是一次由計算誤差引發的攻擊;但從本質上看,它暴露的是協議在對抗性環境中的結構性脆弱。
攻擊者並未突破系統,而是透過構造路徑,令系統在自身規則內逐步偏離安全狀態,最終完成資金轉移。這種方式表明,單純依賴程式碼正確性已不足以保障安全,系統設計本身必須具備對抗性思維。
因此,未來 DeFi 安全的核心,將從「智能合約是否正確」轉向「機制在對抗環境中是否穩定」。Balancer 事件,正是這一轉變的典型案例。
References
- Certora –Breaking Down the Balancer Hack[Technical Analysis]
- SlowMist –When Small Flaws Collapse a Giant[Technical Analysis]
- Trail of Bits –Balancer Hack Analysis and Guidance[Incident Report]
- PeckShield – On-chain Alert Reports [On-chain Analysis]
- Cyvers – Real-time Threat Detection Reports [On-chain Analysis]
- Balancer Official X Postmortem [Incident Report]
洞察報告來源: 全球網絡安全聯盟https://www.gcsa.org
订阅资讯,直达邮箱
我们尊重您的隐私,详见 隐私政策