Pagsusuri sa Teknolohiya: Balancer nanakawan ng $120 milyon, saan nagmula ang kahinaan?
Ang pangunahing problema ng pag-atake ay nagmula sa paraan ng pagproseso ng protocol sa mga maliliit na transaksyon.
Orihinal na Pamagat: 《Balancer 被盗$120M 漏洞技术分析》
Pinagmulan: ExVul Security
Panimula
Noong Nobyembre 3, 2025, ang Balancer protocol ay inatake ng mga hacker sa maraming public chain tulad ng Arbitrum at Ethereum, na nagdulot ng pagkawala ng $120 milyon na asset. Ang pangunahing sanhi ng pag-atake ay ang kombinasyon ng precision loss at manipulasyon ng invariant (Invariant) na nagresulta sa double vulnerability.
Ang imprastraktura ng Chainlink ay matagal nang nananatili bilang pinakamataas na pamantayan sa larangan ng Web3, kaya ito ang natural na pagpipilian ng X Layer upang magbigay ng institution-level na mga tool para sa mga developer.
Ang susi ng pag-atakeng ito ay nasa lohika ng protocol sa pagproseso ng maliliit na transaksyon. Kapag ang user ay nagsasagawa ng maliit na halaga ng swap, tinatawag ng protocol ang _upscaleArray function, na gumagamit ng mulDown para sa downward rounding ng mga numerical value. Kapag ang balanse at input amount sa transaksyon ay parehong nasa partikular na rounding boundary (halimbawa, 8-9 wei range), nagkakaroon ng malinaw na relative precision error.
Ang precision error na ito ay naipapasa sa proseso ng pagkalkula ng invariant D ng protocol, na nagdudulot ng abnormal na pagbaba ng D value. Ang pagbabago ng D value ay direktang nagpapababa ng presyo ng BPT (Balancer Pool Token) sa Balancer protocol. Sinamantala ng hacker ang mababang BPT price na ito, at sa pamamagitan ng pre-designed na trading path ay nakumpleto ang arbitrage, na nagdulot ng malaking pagkawala ng asset.
Vulnerability exploitation Tx:
Asset transfer Tx:
Teknikal na Analisis
Punto ng Pag-atake
Ang entry point ng pag-atake ay ang Balancer: Vault contract, na may kaukulang entry function na batchSwap, na internally tumatawag sa onSwap para sa token exchange.

Mula sa mga parameter at limitasyon ng function, makakakuha tayo ng ilang impormasyon:
1. Kailangang tawagin ng attacker ang function na ito sa pamamagitan ng Vault, hindi maaaring direktang tawagin.
2. Sa loob ng function, tatawagin ang _scalingFactors() para makuha ang scaling factor at magsagawa ng scaling operation.
3. Ang scaling operation ay nakatuon sa _swapGivenIn o _swapGivenOut.
Analisis ng Mode ng Pag-atake
Mekanismo ng Pagkalkula ng Presyo ng BPT
Sa stable pool model ng Balancer, ang BPT price ay mahalagang reference, na nagdedetermina kung ilang BPT ang makukuha ng user at kung gaano karaming asset ang makukuha ng bawat BPT.

Sa pagkalkula ng swap sa pool:

Ang bahagi na nagsisilbing presyo ng BPT benchmark ay ang invariant D, kaya para manipulahin ang presyo ng BPT, kailangang manipulahin ang D. Susunod, susuriin natin ang proseso ng pagkalkula ng D:

Sa code sa itaas, ang pagkalkula ng D ay nakadepende sa scaled balances array. Ibig sabihin, kailangang may operasyon na magbabago sa precision ng mga balances na ito, na magdudulot ng error sa pagkalkula ng D.
Pinagmulan ng Precision Loss

Scaling Operation:

Tulad ng ipinapakita sa itaas, kapag gumagamit ng _upscaleArray at napakaliit ng balanse (hal. 8-9 wei), ang downward rounding ng mulDown ay magdudulot ng makabuluhang precision loss.
Detalyadong Proseso ng Pag-atake
Yugto 1: Pag-adjust sa Rounding Boundary

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

Yugto 3: Pagkamit ng Kita mula sa Pinababang Presyo ng BPT

Tulad ng ipinapakita sa itaas, ang attacker ay gumagamit ng Batch Swap upang magsagawa ng maraming swap sa isang transaksyon:
1. Unang swap: BPT → cbETH (pag-aadjust ng balanse)
2. Ikalawang swap: wstETH (8) → cbETH (pag-trigger ng precision loss)
3. Ikatlong swap: Underlying asset → BPT (pagkamit ng kita)
Ang lahat ng swap na ito ay nangyayari sa parehong batch swap transaction, nagbabahagi ng parehong balanse na estado, ngunit bawat swap ay tumatawag sa _upscaleArray na nagbabago sa balances array.
Kakulangan ng Callback Mechanism
Ang pangunahing proseso ay sinisimulan ng Vault, paano ito nagdudulot ng akumulasyon ng precision loss? Ang sagot ay nasa mekanismo ng pagpasa ng balances array.

Sa pagsusuri ng code sa itaas, bagaman sa bawat tawag ng onSwap ay gumagawa ang Vault ng bagong currentBalances array, sa Batch Swap:
1. Pagkatapos ng unang swap, na-update ang balanse (ngunit dahil sa precision loss, maaaring hindi tama ang na-update na value)
2. Ang ikalawang swap ay nagkakalkula base sa resulta ng una
3. Ang precision loss ay naipon, na sa huli ay nagdudulot ng malaking pagbaba ng invariant D
Mga Susing Isyu:

Buod
Ang pag-atake sa Balancer na ito ay maaaring ibuod sa mga sumusunod na dahilan:
1. Scaling function ay gumagamit ng downward rounding: Ang _upscaleArray ay gumagamit ng mulDown para sa scaling. Kapag maliit ang balanse (hal. 8-9 wei), nagdudulot ito ng makabuluhang relative precision loss.
2. Ang pagkalkula ng invariant ay sensitibo sa precision: Ang pagkalkula ng invariant D ay nakadepende sa scaled balances array. Ang precision loss ay direktang naipapasa sa pagkalkula ng D, na nagpapababa ng D.
3. Kakulangan ng validation ng pagbabago ng invariant: Sa proseso ng swap, walang validation kung ang pagbabago ng invariant D ay nasa loob ng makatwirang saklaw, kaya maaaring paulit-ulit na gamitin ng attacker ang precision loss para pababain ang presyo ng BPT.
4. Akumulasyon ng precision loss sa Batch Swap: Sa parehong batch swap, ang precision loss ng maraming swap ay naipon, na sa huli ay nagiging malaking financial loss.
Ang dalawang problemang ito—precision loss + kakulangan ng validation—na pinagsama sa maingat na disenyo ng attacker sa boundary conditions, ang nagdulot ng pagkawala sa insidenteng 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
Hotcoin Research | Malapit na ang Fusaka upgrade, pagsusuri at pananaw sa labanang long at short ng Ethereum
Sa pamamagitan ng pagsusuri sa kamakailang pagganap ng Ethereum, ang artikulong ito ay malalim na tatalakayin ang kasalukuyang mga positibo at negatibong salik na kinahaharap ng Ethereum, pati na rin ang mga pananaw at posibleng galaw nito sa pagtatapos ng taon, sa susunod na taon, at sa pangmatagalang panahon. Layunin nitong tulungan ang mga ordinaryong mamumuhunan na malinawan ang sitwasyon, maunawaan ang mga trend, at magbigay ng sanggunian upang makagawa ng mas matinong desisyon sa panahon ng mahahalagang pagbabago.

Sumisigla ang Crypto Market habang bumabawi ang Bitcoin at namumukod-tangi ang mga Privacy Coin
Sa madaling sabi, nag-rebound ang Bitcoin noong weekend at sinubukang abutin ang $86,000 na marka. Ang mga privacy-focused altcoins na Monero at Zcash ay nagpakita ng kapansin-pansing pagtaas. Ang kabuuang halaga ng merkado ay tumaas muli, lumampas sa $3 trillion na threshold.

Bumangon muli ang mga Crypto Markets habang nagpapakita ang mga trader ng pagkapagod ng mga nagbebenta
Sa Buod Ang mga crypto market ay bumawi matapos ang malalaking liquidation at oversold na RSI signals. Ang kalakalan tuwing weekend na may manipis na liquidity ay nakaapekto sa mabilisang pagbabago ng presyo. Ang kakayahan ng rebound na magpatuloy ay nananatiling hindi tiyak, kaya't binibigyang pansin ito ng mga mamumuhunan.

