- Атакующий эксплуатировал пул Balancer V1, вызвав убытки примерно на 234k долларов из-за ошибки округления после уменьшения резервов WBTC.
- Это подчёркивает риски для других неизменяемых пулов Balancer V1, в которых всё ещё используются устаревшие расчёты join и exit.
Хакер вывел около 234 000 долларов из пула ликвидности Balancer V1, эксплуатировав связанную с WBTC ошибку округления. Компания по кибербезопасности SlowMist задокументировала уязвимость и классифицировала затронутый контракт Balancer V1 как устаревший код. Сначала атакующий уменьшил объём WBTC в пуле, чтобы расчётные значения приблизились к минимальному уровню. Затем он эксплуатировал функцию joinswapPoolAmountOut, которая рассчитывает объём токенов, необходимый для выпуска токенов пула.
🚨Оповещение TI SlowMist🚨
💸 @Balancer Убытки: около 234 тыс. долларов
🔍 Первопричина: функция joinswapPoolAmountOut в BPool Balancer V1 позволяет вызывающей стороне указать объём выпуска BPT, тогда как calcSingleInGivenPoolOut рассчитывает требуемый входной объём обратным методом с использованием математики с фиксированной точностью в 18 десятичных знаков. После того как атакующий уменьшил резервы WBTC до пылевого значения…
— SlowMist (@SlowMist_Team) 31 августа 2026 года
WBTC использует точность до восьми знаков после запятой, поэтому при значительном уменьшении резервов возникает проблема с точностью. SlowMist указала, что атакующий истощил резервы до тех пор, пока рассчитанный необходимый депозит не составил всего один сатоши. Используя этот расчёт, атакующий выпустил 4 408,8 токена BPT всего за один сатоши.
Флеш-займы помогли сократить баланс WBTC
Хакер профинансировал атаку с помощью серии флеш-займов из Spark или Aave, Morpho и Uniswap V3. Публичные свопы позволили снизить баланс WBTC в пуле до пылевого значения, после чего хакер применил уязвимую формулу join. SlowMist упомянула три отсутствующие функции, которые помогли бы смягчить последствия этой уязвимости: проверку минимального эффективного входного объёма, минимального баланса пула и относительной погрешности. SlowMist отметила, что контракт использует константную переменную _MIN_BALANCE только при выполнении функций bind и rebind.
SlowMist идентифицировала кошелёк атакующего: 0x338c7ec9befbb451d66fd8a468c32184f5689a41, контракт атаки: 0x9caa8d0e44b22f50057d2f4ce0d1446529e11be3, а также уязвимый контракт: 0x2257aaac34bcb27900291f7b84ee2565a6cbac57. Компания также выявила пять транзакций, связанных с эксплойтом. Это событие отличается от взлома Balancer V2 в ноябре 2025 года, который привёл к убыткам в размере 128 миллионов долларов. В предыдущем случае атака произошла в Composable Stable Pools в шести сетях с использованием другого кода, однако оба эксплойта позволяли вызывающим сторонам получать выгоду за счёт расчётов округления.
Неизменяемые контракты подвергаются более широкой угрозе со стороны форков
Balancer V1 уязвим из-за неизменяемости своих контрактов, а значит, обновить их невозможно. Вместо этого разработка сосредоточена на Balancer V3. Однако настоящая угроза связана с форками DeFi-проектов, унаследовавшими от Balancer дизайн BPool и математику join/exit. В июне 2026 года клоны BPool Ocean Protocol подверглись атаке в сети Polygon. По словам SlowMist, для возникновения уязвимости необходимы два условия: токены в пуле должны иметь менее 18 знаков после запятой, например WBTC и USDC. Кроме того, требуется общедоступная функция joinswapPoolAmountOut.
Главные новости крипторынка:
Kalshi терпит новую юридическую неудачу: Девятый окружной суд поддержал правила Невады о спортивных ставках