Skip to content
Yieldo

Cetus CLMM

$223.0M
Украдено средств
Возвращено средств
22 May 2025
Дата инцидента
Техника
Arithmetic Error
Классификация
Token & Share Accounting
Тип цели
DeFi Protocol
Затронутые сети
Sui
Источник
Нет публичной ссылки на источник

22 мая 2025 года злоумышленник вывел около 223 млн долларов из Cetus Protocol — на тот момент крупнейшего автоматического маркет-мейкера (AMM) в сети Sui, воспользовавшись ошибкой в математической библиотеке, отвечающей за расчёт ликвидности в пулах с концентрированной ликвидностью (CLMM). В течение нескольких часов валидаторы Sui заморозили в сети около 162 млн долларов из похищенного, хотя часть средств уже успела уйти мостом в Ethereum. Разбор инцидента, заказанный у security-фирмы Dedaub, указал корневую причину: неверно написанная проверка на переполнение (overflow) в логике расчёта ликвидности пула (crypto.news).

Как устроена атака

Атакующий взял flash loan на 56 700 SUI, не вкладывая собственного капитала, и открыл позицию концентрированной ликвидности в крайне узком ценовом диапазоне — около 200 тиков шириной, — внеся в неё минимальное количество токена, который сам же контролировал: буквально одну единицу (Rekt). Функция, переводящая внесённый депозит во внутренний «кредит ликвидности», делит на величину, связанную с шириной ценового диапазона; при достаточно узком диапазоне это деление давало число, переполняющее целочисленный тип. Вместо того чтобы отклонить слишком большое значение, проверка просто обрезала старшие биты — но кредит ликвидности, фактически начисленный позиции, остался непропорционально огромным: по оценкам, порядка 10^34 единиц с депозита в один токен. Вывод средств с такой переоценённой позиции возвращал реальные токены в объёме, многократно превышающем внесённое, — этого хватало и на погашение flash loan, и на чистую прибыль. Атакующий повторил схему почти во всех пулах Cetus примерно за пятнадцать минут.

В части публикаций инцидент описывают как «spoof token exploit» («эксплойт через поддельный токен»), поскольку токены, которыми пополнялись позиции, были практически без реальной стоимости или созданы самим атакующим (Observers). Эта формулировка верно описывает точку входа, но не сам механизм: никакой оракул или ценовой фид не подменялся — ошибка именно в математике расчёта ликвидности делала реальную стоимость внесённого токена не важной изначально.

Что было дальше

Cetus приостановил контракты примерно через десять минут после обнаружения атаки, но около 60 млн долларов к этому моменту уже ушли в Ethereum через мост Wormhole, прежде чем оставшиеся средства удалось остановить. Валидаторы Sui скоординированно заблокировали адреса атакующего, на которых оставались 162 млн долларов, — этот шаг был возможен именно благодаря координации валидаторов Sui и не воспроизводим, например, в Ethereum или Bitcoin. Cetus предложил баунти в 6 млн долларов за добровольный возврат средств; атакующий не отреагировал, и предложение позже заменили на вознаграждение в 5 млн долларов за информацию, ведущую к его установлению. Cetus и Sui Foundation заявили, что покроют убытки трейдеров, поставщиков ликвидности и держателей токенов из казны протокола и за счёт бридж-кредита от фонда — независимо от того, удастся ли вернуть замороженные средства (Cryptopolitan). 29 мая 2025 года валидаторы, представляющие около 91% стейка Sui, одобрили on-chain предложение о переводе замороженных 162 млн долларов на мультисиг-кошелёк, совместно контролируемый Cetus, аудитором OtterSec и Sui Foundation, — средства должны были высвобождаться по мере исполнения плана выплат Cetus (CryptoSlate). Cetus возобновил работу 8 июня 2025 года с исправленным кодом, заявив о восстановлении большей части ликвидности (DeepNewz). Позже выяснилось, что аналогичный уязвимый паттерн есть и в других протоколах Sui, построенных на похожем CLMM-коде, — им пришлось патчиться отдельно.

Что из этого следует

  • AMM с концентрированной ликвидностью держатся на точной fixed-point арифметике тиков; переполнение или обрезание бит в этой математике — отдельный класс риска, не сводимый к манипуляции оракулом или reentrancy, и увидеть его снаружи нельзя — только через аудит самой арифметики граничных случаев.
  • Перенос контракта на новую сеть не переносит прежнее покрытие аудитом: уязвимая логика, по данным источников, восходит к более ранней версии кода и вновь всплыла уже после портирования на Sui.
  • Никакого заметного пользователю или поставщику ликвидности сигнала заранее не было — это дефект уровня кода, а не рыночное условие, которое можно было отследить.
  • Возврат средств зависел от способности валидаторов Sui быстро скоординировать заморозку и последующее голосование по доле стейка — это свойство конкретного набора валидаторов данной сети, а не общее свойство DeFi, применимое где угодно.

On-chain DeFi несёт риск смарт-контрактов. Держите основные средства на регулируемой бирже.