НовостиКриптовалютыПостмортем MANTRA: причина эксплойта на $3,6 млн — ошибка целочисленного переполнения в cosmos/evm

Постмортем MANTRA: причина эксплойта на $3,6 млн — ошибка целочисленного переполнения в cosmos/evm

Автор: Cryptopolitan·

Ключевые выводы

  • Злоумышленник вывел примерно 720,9 млн токенов MANTRA на сумму около $3,6 млн в ходе инцидента 20–21 августа.
  • Эксплойт был вызван ошибкой целочисленного переполнения (underflow) в общем модуле cosmos/evm, который не проверял балансы аккаунтов перед списанием средств.
  • Злоумышленник использовал беспрепятственно развёрнутый контракт и собственный кошелёк, без привилегированного доступа; ключи валидаторов и механизмы управления не были скомпрометированы.
  • Команда MANTRA не замечала подозрительные транзакции в первые четыре часа из-за отсутствия круглосуточного мониторинга burn-адреса.
  • Подключены правоохранительные органы, сеть была остановлена на 30 часов 13 минут до перезапуска на исправленной версии v8.4.0, а в кошельке злоумышленника на момент остановки оставалось 37,96 млн токенов.
Постмортем MANTRA: причина эксплойта на $3,6 млн — ошибка целочисленного переполнения в cosmos/evm

MANTRA Chain в опубликованном 28 августа полном постмортеме инцидента воздержалась от обязательств по плану восстановления средств. Вместо этого публикация представила официальное изложение инцидента 20–21 августа, в ходе которого злоумышленник вывел из проекта около 720,9 млн MANTRA на сумму примерно $3,6 млн.

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

Что стало причиной эксплойта MANTRA?

Согласно постмортему MANTRA Chain, эксплойт берёт начало в общем модуле cosmos/evm, который цепочка использует для запуска контрактов в стиле Ethereum поверх Cosmos SDK.

Затронутая версия не проверяла, может ли аккаунт покрыть вызов, прежде чем одобрить списания с его баланса. Списания продолжали проходить, поскольку в коде использовались целые числа без знака, которые не могут опуститься ниже нуля. Вместо этого значение просто «заворачивалось» в огромное число.

Этот тип сбоя, известный как целочисленное переполнение снизу (underflow) или wraparound, — давно известный класс ошибок в блокчейн-коде. В экосистеме Ethereum похожее арифметическое переполнение в контракте ERC-20 токена Beauty Chain (BEC) в 2018 году позволило злоумышленнику генерировать огромные балансы токенов, и подобные инциденты стали ключевой причиной появления проверяемой арифметики, включённой по умолчанию в Solidity 0.8+. Случай MANTRA показывает, что тот же класс ошибок может проявляться в мостообразных модулях, которые цепочки на базе Cosmos SDK используют для взаимодействия с контрактами в стиле Ethereum.

MANTRA уточнила, что ни её ключи валидаторов, ни механизмы управления, ни подписанты мультисига не были скомпрометированы, и настаивала, что использованная злоумышленником ошибка исходила не от неё самой. MANTRA написала, что «злоумышленнику не требовался привилегированный доступ», отметив, что для проведения атаки было достаточно беспрепятственно развёрнутого контракта и кошелька с собственными средствами.

Сколько потеряла MANTRA?

По данным MANTRA, злоумышленник извлёк около 600 млн MANTRA из burn-адреса проекта и ещё 120,9 млн токенов из неактивного мультисига эпохи генезиса, связанного со старой кампанией стимулирования.

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

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

MANTRA пропустила транзакции в реальном времени

По собственному признанию команды MANTRA, в первые четыре часа взлома она не обнаружила ни одной подозрительной транзакции. Проект объяснил этот промах отсутствием круглосуточного мониторинга burn-адреса, который должен был хранить неподвижные токены. Подобный пробел — привычное явление в отраслевых постмортемах: burn-адреса и казначейские кошельки часто считаются неактивными и отслеживаются менее внимательно, чем активные горячие кошельки, хотя нередко хранят одни из крупнейших балансов протокола.

За часы до того, как команда заметила тревожные признаки, злоумышленник провёл две транзакции и перевёл большую часть добычи вне цепочки, прежде чем валидаторы остановили сеть в 23:13 UTC — через 14 минут после второго списания. На момент остановки цепи в кошельке злоумышленника всё ещё находилось 37,96 млн токенов.

Сеть оставалась офлайн 30 часов 13 минут до 05:26 UTC 22 августа, когда валидаторы согласованно перезапустили её на исправленной версии v8.4.0.

Этот эпизод стал завершением драматичных 18 месяцев для проекта, всё ещё пытающегося восстановить доверие. Бывший токен MANTRA — OM — рухнул более чем на 90% за одну апрельскую сессию 2025 года, уничтожив более $5 млрд капитализации, как сообщала Cryptopolitan в то время. Даже Inveniam Capital Partners, инвестировавшая $20 млн в MANTRA в 2025 году, признала прошлые проблемы, соглашаясь в июне на приобретение проекта.

Когда остановка сети произошла, токен упал на 18,5% до рекордного минимума около $0,004126, прежде чем восстановиться, согласно данным CoinGecko. Теперь, когда подключены правоохранительные органы, а перспективы восстановления средств остаются нерешёнными, ключевые вопросы для наблюдателей MANTRA таковы: судьба 37,96 млн токенов, остававшихся в кошельке злоумышленника на момент остановки цепи, скорректирует ли руководство при поддержке Inveniam раскрытие данных о предложении и как быстро выйдут следующие запланированные обновления модулей проекта.