
Минуле ніколи не минає. Воно навіть не минуло. У понеділок хакер вивів 234 000 доларів з пулу Balancer V1 — першої версії протоколу, написаної у 2020 році і відтоді не оновленої. Сума виглядає майже незначною порівняно зі 128 мільйонами, викраденими з V2 минулого листопада. Справжня проблема не в сумі, а в місці. Цей код все ще працює, ніхто не може його виправити, а компанії, яка його написала, вже навіть не існує.
- Хакер скористався вразливістю в Balancer V1, коді, який не оновлювався з 2020 року, щоб вивести 234 000 доларів.
- Код Balancer V1, який неможливо змінити, все ще працює, створюючи постійний ризик для протоколів, які його скопіювали.
Balancer V1: як простий округлений підрахунок призвів до значних збитків
Вразливість криється у функції `joinswapPoolAmountOut`. Вона дозволяє користувачеві обирати, скільки токенів пулу (BPT – частка ліквідності, яку він отримує) він хоче отримати, замість того, скільки йому потрібно внести. Потім контракт розраховує необхідний депозит за допомогою іншої функції, яка працює з фіксованою комою з 18 десятковими знаками. Проблема в тому, що WBTC має лише вісім. Доки резерви пулу залишаються значними, розбіжність непомітна. Як тільки резерви скорочуються до нуля, розрахунок округлюється вниз до найменшої можливої одиниці – сатоші.
Саме це і зробив зловмисник, згідно з попередженням від компанії безпеки SlowMist, опублікованим у понеділок. Використовуючи короткострокові позики (позики, які погашаються в тій самій транзакції без застави) на Aave, Spark, Morpho та Uniswap V3, було виведено резерви WBTC пулу до мінімальних значень. Контракт тоді прийняв депозит в один сатоші для випуску 4 408,8 BPT натомість. Після цього зловмисник вивів свою пропорційну частку в DPI, USDC, WETH та WBTC, отримавши здобич приблизно на 234 000 доларів.
Balancer Labs зникла, але код V1 продовжує жити
Чи пам’ятаєте, що передувало цьому результату? У листопаді 2025 року сусідній експлойт, вразливість округлення в іншій функції, коштував V2 128 мільйонів доларів на шести мережах. Тоді Balancer Labs оголосила про своє розпуск у березні, оскільки співзасновник Фернандо Мартінеллі вважав корпоративну структуру юридичним тягарем. TVL протоколу, який сягав 3,5 мільярда доларів у 2021 році, сьогодні становить 157 мільйонів. Протокол виживає під децентралізованою структурою — Balancer OpCo, але ніхто в цій структурі не може вносити зміни до коду V1. Він не є оновлюваним у технічному сенсі. Те, що розгорнуто, працює, і крапка.
Отже, дві різні вразливості, але один і той же виробничий дефект. Округлення, яке послідовно надає перевагу тому, хто його використовує, а не пулу. Розробка ж перейшла до V3, яка тепер вимагає явного контролю над напрямком округлення для кожної операції.
Справжній ризик – це всі форки, що працюють з тим самим кодом, що й Balancer
Контракт BPool Balancer V1 був одним з найбільш копійованих фрагментів коду у всій DeFi свого часу. Така ж логіка з’єднання та виходу сьогодні працює в протоколах, які вже не мають жодного зв’язку з Balancer, жодного спільного процесу безпеки. Ще в червні клон Ocean Protocol на Polygon зазнав краху через схожу логіку, позичивши mOCEAN для прогону через вісім пулів поспіль.
Щоб визначити, чи є пул вразливим, достатньо двох критеріїв. Чи містить він токен з менш ніж 18 десятковими знаками, як-от WBTC або USDC? І чи залишається функція одностороннього депозиту публічно доступною? Якщо обидві відповіді “так”, а резерви можна вивести до нуля простими обмінами, умови для атаки виконані. Виправлення не буде. Тільки ручне вилучення коштів постачальниками ліквідності може убезпечити їхні активи.
Ніхто більше ніколи не оновлюватиме Balancer V1. Код 2020 року працює в автоматичному режимі, без виправлень, без пауз, без когось “на дроті”. Саме ця успадкована логіка дозволила одного разу вивести кошти з пулу за допомогою простої короткострокової позики за кілька хвилин. Будь-який протокол, який колись скопіював цей код, несе той самий ризик, іноді навіть не знаючи про це. Минуле ніколи не минає. Воно навіть не минуло, казав Фолкнер. Код – теж.
