Критична вразливість у токені LULA: хакер вивів $578 000 через маніпуляцію резервами пулу
На блокчейні BNB Smart Chain стався інцидент, який вкотре демонструє, наскільки небезпечними можуть бути помилки в смарт-контрактах токенів. Зловмисник, використовуючи вразливість у коді токена LULA, зумів вивести з пулу ліквідності на децентралізованій біржі PancakeSwap близько $578 000. Примітно, що сама біржа не була зламана — атака була спрямована виключно на логіку самого токена.
Як працює маніпуляція резервами
В основі атаки лежить функція recycle(). Цей метод надавав контракту Rental два критичні права: по-перше, безпосередньо вилучати токени LULA з пулу PancakeSwap V2, а по-друге, викликати функцію sync(), яка примусово синхронізує облікові резерви пари з фактичними (вже спотвореними) балансами.
Щоб зрозуміти механізм, уявіть пул як ваги з двома чашами: на одній — USDT, на іншій — LULA. Ціна визначається співвідношенням обсягів. Звичайний трейдер може лише перекладати монети між чашами через обмін. Вразливість же дозволяла знімати токени з однієї чаші збоку, а потім «змушувати» ваги визнати нове положення чесним.
Послідовність дій, реконструйована аналітиками, виглядає наступним чином:
- Великий обмін USDT на LULA, який роздув резерв USDT у парі.
- Багаторазові виклики
recycle(), що скорочували резерв LULA. - Зворотний обмін невеликого обсягу LULA, який остаточно «осушив» ліквідність пулу.
Сенс маневру в тому, що чим менше токенів залишається на одній чаші, тим дорожчим стає кожен з них. Штучно стиснувши обсяг LULA у парі, зловмисник обмінював малу кількість токенів за фіктивно завищеним курсом, отримуючи на виході значно більше USDT.
Підготовка за 12 днів
Ця атака не була спонтанною. За 12 днів до експлойту хакер розгорнув допоміжні контракти, щоб накопичити реферальні та командні винагороди. Заготовлене право на виплати стало вхідною точкою: зв'язка claimReward() → recycle() дозволяла максимізувати дефляційний ефект, тобто стиснення кількості токенів в обігу.
Для основного етапу використовувалася флеш-позика на суму приблизно $237 млн. Флеш-позика працює як гроші, взяті на кілька секунд «під чесне слово»: позичальник зобов'язаний повернути суму в межах тієї ж транзакції, інакше вона повністю скасовується. Власний капітал для цього не потрібен, тому такий інструмент часто використовують для розгону маніпуляцій з ціною. Позикові кошти пішли на виведення LULA з пулу на DEX, що посилило ефект від викликів recycle().
Думка експерта: Цей інцидент — ще одне суворе нагадування про те, що аудит смарт-контрактів токенів має бути тотальним. Вразливість у функції, яка на перший погляд здається безневинною службовою опцією, може обернутися багатомільйонними втратами. Інвесторам, які працюють з новими токенами на DEX, варто звертати увагу не лише на ліквідність та маркетинг, але й на код самого токена.