Bitget App
Торгуйте разумнее
Купить криптоРынкиТорговляФьючерсыEarnWeb3ПлощадкаПодробнее
Торговля
Спот
Купить и продать криптовалюту
Маржа
Увеличивайте капитал и эффективность средств
Onchain
Безграничные возможности торговли.
Конвертация и блочная торговля
Конвертируйте криптовалюту в один клик без комиссий
Обзор
Launchhub
Получите преимущество заранее и начните побеждать
Скопировать
Копируйте элитного трейдера в один клик
Боты
Простой, быстрый и надежный торговый бот на базе ИИ
Торговля
Фьючерсы USDT-M
Фьючерсы с расчетами в USDT
Фьючерсы USDC-M
Фьючерсы с расчетами в USDC
Фьючерсы Coin-M
Фьючерсы с расчетами в криптовалютах
Обзор
Руководство по фьючерсам
Путь от новичка до профессионала в торговле фьючерсами
Акции по фьючерсам
Получайте щедрые вознаграждения
Bitget Earn
Продукты для легкого заработка
Simple Earn
Вносите и выводите средства в любое время, чтобы получать гибкий доход без риска
Ончейн-Earn
Получайте прибыль ежедневно, не рискуя основной суммой
Структурированный Earn
Надежные финансовые инновации, чтобы преодолеть рыночные колебания
VIP и Управление капиталом
Премиум-услуги для разумного управления капиталом
Займы
Гибкие условия заимствования с высокой защитой средств
Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость?

Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость?

BlockBeatsBlockBeats2025/11/04 06:24
Показать оригинал
Автор:BlockBeats

Ключевая проблема этой атаки заключалась в логике обработки мелких транзакций протоколом.

Оригинальное название: «Анализ уязвимости, приведшей к краже $120M с Balancer»
Источник: ExVul Security


Введение


3 ноября 2025 года протокол Balancer подвергся хакерской атаке на нескольких блокчейнах, включая Arbitrum и Ethereum, что привело к потере активов на сумму 120 миллионов долларов. Основная причина атаки заключалась в двойной уязвимости, связанной с потерей точности и манипуляцией инвариантом (Invariant).


Инфраструктура Chainlink уже долгое время поддерживает самые высокие стандарты в сфере Web3, поэтому X Layer естественным образом выбрал её для предоставления инструментов институционального уровня разработчикам.


Ключевая проблема этой атаки заключалась в логике обработки протоколом мелких транзакций. Когда пользователь совершает обмен на небольшую сумму, протокол вызывает функцию _upscaleArray, которая использует mulDown для округления чисел вниз. Если баланс и сумма ввода одновременно находятся на определённой границе округления (например, в диапазоне 8-9 wei), возникает значительная относительная ошибка точности.


Ошибка точности передаётся в процесс вычисления инварианта D, что приводит к аномальному уменьшению значения D. Изменение D напрямую снижает цену BPT (Balancer Pool Token) в протоколе Balancer. Хакер воспользовался этим заниженным курсом BPT, чтобы провести арбитраж по заранее спланированному маршруту транзакций, что в итоге привело к огромным финансовым потерям.


Эксплуатация уязвимости Tx:


Перемещение активов Tx:


Технический анализ


Точка входа атаки


Точкой входа для атаки стал контракт Balancer: Vault, а именно функция batchSwap, которая внутри вызывает onSwap для обмена токенов.


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 0


Из параметров и ограничений функции можно сделать несколько выводов:


1. Атакующий должен вызвать эту функцию через Vault, прямой вызов невозможен.


2. Внутри функции вызывается _scalingFactors() для получения коэффициентов масштабирования.


3. Операции масштабирования сосредоточены в _swapGivenIn или _swapGivenOut.


Анализ модели атаки


Механизм расчёта цены BPT


В модели стабильного пула Balancer цена BPT является важным ориентиром, определяющим, сколько BPT получит пользователь и сколько активов приходится на каждый BPT.


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 1


В расчётах обмена в пуле:


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 2


Часть, служащая базой для цены BPT, — это инвариант D, то есть для манипуляции ценой BPT необходимо управлять D. Далее рассмотрим процесс вычисления D:


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 3


В приведённом выше коде вычисление D зависит от массива balances после масштабирования. То есть требуется операция, изменяющая точность этих balances, чтобы привести к ошибке в расчёте D.


Корень потери точности


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 4


Операция масштабирования:


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 5


Как показано выше, при вызове _upscaleArray, если баланс очень мал (например, 8-9 wei), округление вниз через mulDown приводит к значительной потере точности.


Подробное описание процесса атаки


Этап 1: Подгонка к границе округления


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 6


Этап 2: Провоцирование потери точности (основная уязвимость)


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 7


Этап 3: Получение прибыли за счёт заниженной цены BPT


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 8


Как показано выше, атакующий с помощью Batch Swap совершает несколько обменов в одной транзакции:


1. Первый обмен: BPT → cbETH (корректировка баланса)


2. Второй обмен: wstETH (8) → cbETH (провоцирование потери точности)


3. Третий обмен: базовый актив → BPT (получение прибыли)


Все эти обмены происходят в рамках одной batch swap транзакции, используя общее состояние баланса, однако при каждом обмене вызывается _upscaleArray для изменения массива balances.


Отсутствие механизма Callback


Основной процесс инициируется Vault. Как же накапливается потеря точности? Ответ — в механизме передачи массива balances.


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 9


Анализируя приведённый выше код, видно, что хотя при каждом вызове onSwap Vault создаёт новый массив currentBalances, в Batch Swap:


1. После первого обмена баланс обновляется (но из-за потери точности обновлённое значение может быть неточным)


2. Второй обмен рассчитывается на основе результата первого


3. Потеря точности накапливается, в итоге инвариант D значительно уменьшается


Ключевая проблема:


Технический анализ: у Balancer украли 120 миллионов долларов, в чем была уязвимость? image 10


Заключение


Атака на Balancer произошла по следующим причинам:


1. Использование округления вниз в функции масштабирования: _upscaleArray использует mulDown для масштабирования, что при малых балансах (например, 8-9 wei) приводит к значительной относительной потере точности.


2. Чувствительность расчёта инварианта к точности: вычисление инварианта D зависит от массива balances после масштабирования, и потеря точности напрямую влияет на уменьшение D.


3. Отсутствие проверки изменений инварианта: в процессе обмена не проверяется, находится ли изменение инварианта D в допустимых пределах, что позволяет атакующему многократно использовать потерю точности для занижения цены BPT.


4. Накопление потери точности в Batch Swap: в рамках одной batch swap транзакции потери точности от нескольких обменов накапливаются, что в итоге приводит к огромным финансовым потерям.


Эти две проблемы — потеря точности и отсутствие проверки — в сочетании с тщательно продуманными граничными условиями со стороны атакующего привели к этим потерям.


0

Дисклеймер: содержание этой статьи отражает исключительно мнение автора и не представляет платформу в каком-либо качестве. Данная статья не должна являться ориентиром при принятии инвестиционных решений.

PoolX: вносите активы и получайте новые токены.
APR до 12%. Аирдропы новых токенов.
Внести!

Вам также может понравиться

Аналитики оценивают потенциальное воздействие на 285 миллионов долларов в DeFi после убытка Stream Finance в 93 миллиона долларов

Аналитики YieldsAndMore отметили возможное воздействие более чем на 285 миллионов долларов, связанное с потерей Stream Finance в размере 93 миллионов долларов. Ситуация вокруг Stream дополняет бурную неделю для DeFi, наряду с эксплойтом Balancer на 128 миллионов долларов и атакой на оракул Moonwell на 1 миллион долларов.

The Block2025/11/04 18:04
Аналитики оценивают потенциальное воздействие на 285 миллионов долларов в DeFi после убытка Stream Finance в 93 миллиона долларов

Sequans продаёт почти треть своих запасов bitcoin для погашения долга на фоне падения BTC до минимального уровня за четыре месяца

Sequans продала 970 BTC, сократив свои резервы биткоина до 2 264 BTC и уменьшив долговую нагрузку вдвое. После этой продажи компания опустилась с 29 на 33 место в рейтинге Bitcoin Treasuries.

The Block2025/11/04 18:03
Sequans продаёт почти треть своих запасов bitcoin для погашения долга на фоне падения BTC до минимального уровня за четыре месяца

Hut 8 вошла в десятку крупнейших публичных держателей bitcoin с более чем 13 000 BTC

Быстрый обзор: майнер bitcoin опубликовал свой квартальный отчет во вторник, показав, что его запас BTC увеличился более чем на 50% по сравнению с третьим кварталом 2024 года. Около 70 миллионов долларов дохода Hut 8 за третий квартал поступило от добычи bitcoin, в основном через его дочернюю компанию American Bitcoin, контрольный пакет которой принадлежит Hut 8 и которую поддерживает Trump.

The Block2025/11/04 18:03
Hut 8 вошла в десятку крупнейших публичных держателей bitcoin с более чем 13 000 BTC