logo

Анализ взлома Balancer: как произошла кража 120 миллионов долларов?

By: blockbeats|2026/03/28 22:05:45
0
Поделиться
copy
Оригинальное название статьи: "Технический анализ уязвимости взлома Balancer на $120 млн"
Оригинальный источник: ExVul Security

Вступление

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

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

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

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

Эксплуатируемая транзакция:

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

Транзакция перевода активов:

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

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

Вектор атаки

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

Анализ взлома Balancer: как произошла кража 120 миллионов долларов?


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

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

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

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

Цена --

--

Анализ паттерна атаки

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

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


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


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


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

Первопричина потери точности

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

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

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

Фаза 1: Корректировка до границы округления

Фаза 2: Вызов потери точности (основная уязвимость)

Фаза 3: Использование подавленной цены BPT для получения прибыли

Выше злоумышленник использует Batch Swap для выполнения нескольких обменов в одной транзакции:

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

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

3. Третий обмен: Базовый актив → BPT (фиксация прибыли)

Все эти обмены происходят в одной транзакции пакетного обмена, разделяя одно и то же состояние баланса, но каждый обмен вызывает _upscaleArray для изменения массива балансов.

Отсутствие механизма обратного вызова

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


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

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

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

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

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


Резюме

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

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

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

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

4. Накопление потери точности в пакетных обменах: В рамках одного пакетного обмена потеря точности от нескольких обменов накапливается и в конечном итоге приводит к значительным финансовым потерям.

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

Эта статья является вкладом и не представляет взгляды BlockBeats.

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

Битва за лицензию стейблкоина завершена: Тревожный Гонконг не будет ждать следующего Tether

Гонконг слишком старается доказать свою состоятельность.

Вы можете освоить новую область за полчаса, как быстро установить когнитивную структуру с помощью ИИ?

Обучение быстрому пониманию новой области с помощью горизонтального и вертикального анализа с поддержкой ИИ

Последние исследования компании Franklin Templeton: Как понять токенизацию RWA

Начиная с первых шагов новых платформ и заканчивая полномасштабным вхождением традиционных финансовых гигантов, токенизация разрушила традиционные барьеры в сфере торговли. Благодаря таким моделям, как цифровые и синтетические активы, капитал обрёл беспрецедентную ликвидность и прозрачность.

«Эспаньол» — «Барселона»: Дерби, прошедшее в ожесточенной борьбе и с высоким уровнем мастерства

Дерби между «Эспаньолом» и «Барселоной» подарило болельщикам захватывающий матч, в котором «Барса» одержала победу со счётом 4:1 и укрепила своё лидерство в Ла Лиге, оторвавшись от ближайшего преследователя на девять очков. Мастер-класс Ламина Ямала, дубль Феррана Торреса и яркое проявление страстного городского соперничества. WEEX, официальный региональный партнер LALIGA в Гонконге и на Тайване, прославляет прекрасную игру.

DeAgentAI объявила о создании Экологического фонда AIA, сосредоточив внимание на направлении «AI Agent + Physical AI»

DeAgentAI официально учредила Экологический фонд AIA, сосредоточив внимание на новом направлении «AI Agent + Physical AI», с первыми инвестициями в систему предсказаний AliceAI и чипы вычислительной мощности ASIC.

Почему растет крипто? Альткоины ведут после крупной сделки США

Криптовалюты возрождаются благодаря так называемой “Большой сделке” в США, положительно влияющей на рынок. Эфириум достигает $2400, а Солана…

Популярные монеты

Последние новости криптовалют

Еще