Pagsusuri sa Teknikal: Balancer Hack na nagkakahalaga ng $120M, Ano ang Kahinaan?
Ang pangunahing isyu ng pag-atakeng ito ay nasa paraan ng paghawak ng protocol sa mga transaksyong may mababang halaga.
Original Article Title: " Balancer $120M Hack Vulnerability Technical Analysis"
Original Source: ExVul Security
Panimula
Noong Nobyembre 3, 2025, ang Balancer protocol ay inatake sa maraming chain kabilang ang Arbitrum at Ethereum, na nagresulta sa pagkawala ng asset na nagkakahalaga ng $120 milyon. Ang pag-atake ay pangunahing sanhi ng dobleng kahinaan na kinasasangkutan ng precision loss at Invariant manipulation.
Matagal nang pinananatili ng Chainlink ang pinakamataas na pamantayan sa Web3 space, kaya ito ang natural na pagpipilian para sa X Layer, na nakatuon sa pagbibigay ng institutional-grade na mga tool para sa mga developer.
Ang pangunahing isyu sa pag-atakeng ito ay nakasalalay sa lohika ng protocol sa paghawak ng maliliit na transaksyon. Kapag ang mga user ay nagsasagawa ng palitan gamit ang maliliit na halaga, tinatawag ng protocol ang _upscaleArray function, na gumagamit ng mulDown para sa pag-round down ng mga halaga. Kapag ang balanse sa transaksyon at ang input amount ay parehong tumama sa isang partikular na rounding boundary (halimbawa, nasa 8-9 wei range), nagkakaroon ng kapansin-pansing relative precision error.
Ang precision error na ito ay naipapasa sa pagkalkula ng Invariant value D ng protocol, na nagiging sanhi ng abnormal na pagbaba ng D value. Ang pagbabago ng D value ay direktang nagpapababa sa presyo ng Balancer Pool Token (BPT) sa Balancer protocol. Sinamantala ng hacker ang pinababang presyo ng BPT sa pamamagitan ng planadong trading path upang magsagawa ng arbitrage, na sa huli ay nagdulot ng napakalaking pagkawala ng asset.
Exploited Transaction:
https://etherscan.io/tx/0x6ed07db1a9fe5c0794d44cd36081d6a6df103fab868cdd75d581e3bd23bc9742
Asset Transfer Transaction:
https://etherscan.io/tx/0xd155207261712c35fa3d472ed1e51bfcd816e616dd4f517fa5959836f5b48569
Teknikal na Pagsusuri
Attack Vector
Ang entry point ng pag-atake ay ang Balancer: Vault contract, kung saan ang kaukulang entry function ay ang batchSwap function, na internal na tumatawag sa onSwap para sa token exchanges.

Mula sa perspektibo ng mga function parameters at restrictions, ilang impormasyon ang maaaring makuha:
1. Kailangang tawagin ng attacker ang function na ito sa pamamagitan ng Vault at hindi maaaring tawagin ito nang direkta.
2. Tatawagin ng function sa loob ang _scalingFactors() upang makuha ang scaling factor para sa scaling operations.
3. Ang scaling operation ay nakatuon alinman sa _swapGivenIn o _swapGivenOut.
Pagsusuri ng Pattern ng Pag-atake
Mekanismo ng Pagkalkula ng Presyo ng BPT
Sa stable pool model ng Balancer, ang Presyo ng BPT ay isang mahalagang reference point na tumutukoy kung gaano karaming BPT ang matatanggap ng user at kung gaano karaming asset ang matatanggap ng bawat BPT.

Sa kalkulasyon ng palitan ng pool:

Kung saan ang bahagi na nagsisilbing anchor ng Presyo ng BPT ay isang immutable value D, na nangangahulugang ang pagkontrol sa Presyo ng BPT ay nangangailangan ng pagkontrol sa D. Suriin pa natin ang proseso ng pagkalkula ng D:

Sa code sa itaas, ang proseso ng pagkalkula ng D ay nakadepende sa scaled balances array. Nangangahulugan ito na kailangan ng operasyon upang baguhin ang precision ng mga balances na ito, na nagreresulta sa maling pagkalkula ng D.
Pinagmulan ng Precision Loss

Scaling Operation:

Tulad ng ipinapakita sa itaas, kapag dumaan sa _upscaleArray, kung ang balanse ay napakaliit (halimbawa, 8-9 wei), ang pag-round down sa mulDown ay magreresulta sa malaking precision loss.
Detalyadong Proseso ng Pag-atake
Phase 1: Pag-aadjust sa Rounding Boundary

Phase 2: Pag-trigger ng Precision Loss (Core Vulnerability)

Phase 3: Pagsasamantala sa Pinababang Presyo ng BPT para sa Kita

Sa itaas, ginamit ng attacker ang Batch Swap upang magsagawa ng maraming palitan sa isang transaksyon:
1. Unang Palitan: BPT → cbETH (pag-aadjust ng balanse)
2. Ikalawang Palitan: wstETH (8) → cbETH (pag-trigger ng precision loss)
3. Ikatlong Palitan: Underlying Asset → BPT (pagkuha ng kita)
Lahat ng palitang ito ay nagaganap sa parehong batch swap transaction, nagbabahagi ng parehong balance state, ngunit bawat palitan ay tumatawag sa _upscaleArray upang baguhin ang balances array.
Kakulangan ng Callback Mechanism
Ang pangunahing proseso ay sinimulan ng Vault. Paano ito nagdudulot ng akumulasyon ng precision loss? Ang sagot ay nasa passing mechanism ng balances array.

Sa pagtingin sa code sa itaas, bagaman ang Vault ay lumilikha ng bagong currentBalances array tuwing tinatawag ang onSwap, sa Batch Swap:
1. Pagkatapos ng unang swap, na-update ang balanse (ngunit dahil sa precision loss, maaaring hindi tama ang na-update na halaga)
2. Ang ikalawang swap ay nagpapatuloy ng kalkulasyon batay sa resulta ng unang swap
3. Ang precision loss ay naipon, na sa huli ay nagiging sanhi ng malaking pagbaba ng invariant value D
Pangunahing Isyu:

Buod
Ang Balancer attack ay maaaring ibuod sa mga sumusunod na dahilan:
1. Scaling Function ay Gumagamit ng Round Down: Ang _upscaleArray ay gumagamit ng mulDown para sa scaling, na nagreresulta sa malaking relative precision loss kapag ang balanse ay napakaliit (halimbawa, 8-9 wei).
2. Ang Pagkalkula ng Invariant Value ay Sensitibo sa Precision: Ang pagkalkula ng invariant value D ay nakadepende sa scaled balances array, at ang precision loss ay direktang nakakaapekto sa pagkalkula ng D, na nagiging sanhi ng pagbaba ng D.
3. Kakulangan ng Validation sa Pagbabago ng Invariant Value: Sa proseso ng swap, walang validation upang tiyakin na ang pagbabago sa invariant value D ay nasa makatwirang saklaw, kaya't pinapayagan ang mga attacker na paulit-ulit na samantalahin ang precision loss upang pababain ang presyo ng BPT.
4. Akumulasyon ng Precision Loss sa Batch Swaps: Sa loob ng parehong batch swap, ang precision loss mula sa maraming swap ay naipon at sa huli ay nagdudulot ng malaking financial losses.
Ang dalawang isyung ito—precision loss at kakulangan ng validation—kasama ng maingat na disenyo ng attacker ng boundary conditions, ay nagresulta sa pagkawala na ito.
Disclaimer: Ang nilalaman ng artikulong ito ay sumasalamin lamang sa opinyon ng author at hindi kumakatawan sa platform sa anumang kapasidad. Ang artikulong ito ay hindi nilayon na magsilbi bilang isang sanggunian para sa paggawa ng mga desisyon sa investment.
Baka magustuhan mo rin

Ang Crypto ay Nahuhuli Kumpara sa Ibang Uri ng Asset sa Kabila ng Suportadong Kalagayang Makroekonomiko

LSEG Nanalo sa GLEIF Global vLEI Hackathon para sa Pagsusulong ng Digital Identity sa Crypto

Mga Strategy Files para sa Euro-Denominated Perpetual Stock IPO upang Palakasin ang Bitcoin Holdings

