Bitget App
Trade smarter
Kup kryptoRynkiHandelFuturesEarnWeb3CentrumWięcej
Handel
Spot
Kupuj i sprzedawaj krypto
Margin
Zwiększ swój kapitał i wydajność środków
Onchain
Korzyści Onchain bez wchodzenia na blockchain
Konwersja i handel blokowy
Konwertuj kryptowaluty jednym kliknięciem i bez opłat
Odkryj
Launchhub
Zdobądź przewagę na wczesnym etapie i zacznij wygrywać
Kopiuj
Kopiuj wybitnego tradera jednym kliknięciem
Boty
Prosty, szybki i niezawodny bot handlowy AI
Handel
Kontrakty futures zabezpieczone USDT
Kontrakty futures rozliczane w USDT
Kontrakty futures zabezpieczone USDC
Kontrakty futures rozliczane w USDC
Kontrakty futures zabezpieczone monetami
Kontrakty futures rozliczane w kryptowalutach
Odkryj
Przewodnik po kontraktach futures
Podróż po handlu kontraktami futures – od początkującego do zaawansowanego
Promocje kontraktów futures
Czekają na Ciebie wysokie nagrody
Bitget Earn
Najróżniejsze produkty do pomnażania Twoich aktywów
Simple Earn
Dokonuj wpłat i wypłat w dowolnej chwili, aby uzyskać elastyczne zyski przy zerowym ryzyku
On-chain Earn
Codzienne zyski bez ryzykowania kapitału
Strukturyzowane produkty Earn
Solidna innowacja finansowa pomagająca poruszać się po wahaniach rynkowych
VIP i Wealth Management
Usługi premium do inteligentnego zarządzania majątkiem
Pożyczki
Elastyczne pożyczanie z wysokim bezpieczeństwem środków
Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach?

Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach?

BlockBeatsBlockBeats2025/11/04 06:25
Pokaż oryginał
Przez:BlockBeats

Kluczowym problemem tego ataku jest sposób, w jaki protokół obsługuje transakcje o małej wartości.

Original Article Title: " Balancer $120M Hack Vulnerability Technical Analysis"
Original Source: ExVul Security


Wstęp


3 listopada 2025 roku protokół Balancer został zaatakowany na wielu łańcuchach, w tym na Arbitrum i Ethereum, co doprowadziło do utraty aktywów o wartości 120 milionów dolarów. Atak był głównie wynikiem podwójnej podatności związanej z utratą precyzji oraz manipulacją Invariant.


Infrastruktura Chainlink od dawna utrzymuje najwyższe standardy w przestrzeni Web3, co czyni ją naturalnym wyborem dla X Layer, który jest dedykowany dostarczaniu narzędzi klasy instytucjonalnej dla deweloperów.


Kluczowy problem w tym ataku leży w logice protokołu dotyczącej obsługi małych transakcji. Gdy użytkownicy dokonują wymian na niewielkie kwoty, protokół wywołuje funkcję _upscaleArray, która używa mulDown do zaokrąglania wartości w dół. Gdy saldo w transakcji oraz kwota wejściowa osiągają określoną granicę zaokrąglenia (np. zakres 8-9 wei), pojawia się zauważalny względny błąd precyzji.


Błąd ten jest propagowany do obliczania wartości Invariant D protokołu, powodując nienormalne zmniejszenie wartości D. Wahania wartości D bezpośrednio obniżają cenę Balancer Pool Token (BPT) w protokole Balancer. Haker wykorzystał tę zaniżoną cenę BPT poprzez zaplanowaną ścieżkę handlową do arbitrażu, co ostatecznie doprowadziło do ogromnej straty aktywów.


Wykorzystana transakcja:


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


Transakcja transferu aktywów:


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


Analiza techniczna


Wektor ataku


Punktem wejścia ataku był kontrakt Balancer: Vault, a odpowiadającą mu funkcją wejściową była batchSwap, która wewnętrznie wywołuje onSwap do wymiany tokenów.


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 0


Z perspektywy parametrów funkcji i ograniczeń można uzyskać kilka informacji:


1. Atakujący musi wywołać tę funkcję przez Vault i nie może jej wywołać bezpośrednio.


2. Funkcja wewnętrznie wywołuje _scalingFactors(), aby uzyskać współczynnik skalowania do operacji skalowania.


3. Operacja skalowania jest skoncentrowana w _swapGivenIn lub _swapGivenOut.


Analiza wzorca ataku


Mechanizm obliczania ceny BPT


W modelu stable pool Balancer, cena BPT jest kluczowym punktem odniesienia, który określa, ile BPT otrzymuje użytkownik i ile aktywów przypada na każdy BPT.


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 1


W obliczeniach wymiany w puli:


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 2


Częścią pełniącą rolę kotwicy ceny BPT jest niezmienna wartość D, co oznacza, że kontrolowanie ceny BPT wymaga kontrolowania D. Przeanalizujmy dalej proces obliczania D:


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 3


W powyższym kodzie proces obliczania D zależy od tablicy zbilansowanych wartości po skalowaniu. Oznacza to, że potrzebna jest operacja zmieniająca precyzję tych sald, prowadząca do nieprawidłowego obliczenia D.


Główna przyczyna utraty precyzji


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 4


Operacja skalowania:


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 5


Jak pokazano powyżej, podczas przechodzenia przez _upscaleArray, jeśli saldo jest bardzo małe (np. 8-9 wei), zaokrąglenie w dół w mulDown skutkuje znaczną utratą precyzji.


Szczegółowy przebieg ataku


Faza 1: Dostosowanie do granicy zaokrąglenia


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 6


Faza 2: Wywołanie utraty precyzji (główna podatność)


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 7


Faza 3: Wykorzystanie zaniżonej ceny BPT dla zysku


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 8


Powyżej atakujący używa Batch Swap, aby wykonać wiele wymian w jednej transakcji:


1. Pierwsza wymiana: BPT → cbETH (dostosowanie salda)


2. Druga wymiana: wstETH (8) → cbETH (wywołanie utraty precyzji)


3. Trzecia wymiana: Aktywo bazowe → BPT (realizacja zysku)


Wszystkie te wymiany odbywają się w ramach tej samej transakcji batch swap, dzieląc ten sam stan salda, ale każda wymiana wywołuje _upscaleArray, aby zmodyfikować tablicę sald.


Brak mechanizmu callback


Główny proces jest inicjowany przez Vault. Jak to prowadzi do kumulowania się utraty precyzji? Odpowiedź tkwi w mechanizmie przekazywania tablicy sald.


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 9


Patrząc na powyższy kod, chociaż Vault tworzy nową tablicę currentBalances za każdym razem, gdy wywoływany jest onSwap, w Batch Swap:


1. Po pierwszej wymianie saldo jest aktualizowane (ale z powodu utraty precyzji zaktualizowana wartość może być niedokładna)


2. Druga wymiana kontynuuje obliczenia na podstawie wyniku pierwszej wymiany


3. Utrata precyzji się kumuluje, co ostatecznie powoduje znaczny spadek wartości invariant D


Kluczowy problem:


Analiza techniczna: Atak na Balancer o wartości 120 milionów dolarów – na czym polegała luka w zabezpieczeniach? image 10


Podsumowanie


Atak na Balancer można podsumować następująco:


1. Funkcja skalowania używa zaokrąglania w dół: _upscaleArray używa mulDown do skalowania, co skutkuje znaczną względną utratą precyzji, gdy saldo jest bardzo małe (np. 8-9 wei).


2. Obliczanie wartości invariant jest wrażliwe na precyzję: Obliczanie wartości invariant D opiera się na tablicy zbilansowanych wartości po skalowaniu, a utrata precyzji bezpośrednio wpływa na obliczanie D, powodując jego spadek.


3. Brak walidacji zmiany wartości invariant: Podczas procesu wymiany nie było walidacji, aby upewnić się, że zmiana wartości invariant D mieści się w rozsądnym zakresie, co pozwoliło atakującym wielokrotnie wykorzystywać utratę precyzji do zaniżania ceny BPT.


4. Kumulacja utraty precyzji w batch swapach: W ramach tego samego batch swap utrata precyzji z wielu wymian się kumuluje i ostatecznie prowadzi do znacznych strat finansowych.


Te dwa problemy — utrata precyzji i brak walidacji — w połączeniu z przemyślanym projektowaniem warunków brzegowych przez atakującego, doprowadziły do tej straty.


0

Zastrzeżenie: Treść tego artykułu odzwierciedla wyłącznie opinię autora i nie reprezentuje platformy w żadnym charakterze. Niniejszy artykuł nie ma służyć jako punkt odniesienia przy podejmowaniu decyzji inwestycyjnych.

PoolX: Stakuj, aby zarabiać
Nawet ponad 10% APR. Zarabiaj więcej, stakując więcej.
Stakuj teraz!