Взлом CrowdRingCircle: вывод $201 тыс. из пула CRC/USDT

Разбор атаки на CrowdRingCircle в BNB Chain: как уязвимость CRC, функция sync() и манипуляция резервами позволили вывести 201 359 USDT из пула PancakeSwap.
Получить консультацию экспертов AML Crypto
16 июля 2026 года проект CrowdRingCircle (CRC) на BNB Chain подвергся атаке, в результате которой из пула CRC/USDT на PancakeSwap V2 было выведено около $201,4 тыс.

Атакующий воспользовался ошибкой в логике самого токена CRC: при определённых переводах контракт позволял уменьшать баланс CRC непосредственно у торговой пары и затем фиксировать изменённые резервы через функцию sync(). Это искусственно завышало цену CRC внутри пула, после чего злоумышленник обменял небольшое количество токенов на находившиеся в пуле USDT. PancakeSwap при этом взломан не был — уязвимость находилась в контракте CRC.

Команда AML Crypto воссоздала движение похищенных средств в инструменте Bholder:

Сводка об инциденте

  • Потерпевший:
    CrowdRingCircle (CRC), пул CRC/USDT на PancakeSwap V2
  • Дата инцидента:
    2026-07-16 9:44:27 UTC
  • Сумма потерь:
    201,359 USDT
Что именно произошло
Злоумышленник подготовил капитал для атаки
Атакующий использовал заёмную ликвидность, полученную внутри одной транзакции. Такой механизм позволяет временно привлечь крупную сумму без залога, провести несколько операций и вернуть заём до завершения транзакции.

Сам по себе flash loan не является уязвимостью. Он лишь дал злоумышленнику достаточно средств, чтобы многократно использовать ошибку в контракте CRC.
Атакующий начал отправлять CRC в торговую пару
Целью стала пара CRC/USDT на PancakeSwap V2.

В обычной ситуации при продаже пользователь отправляет CRC в пул и получает взамен USDT. Балансы обоих токенов меняются, а цена автоматически пересчитывается по соотношению резервов.

Однако в контракте CRC была предусмотрена нестандартная логика, которая срабатывала при переводе токенов на адрес торговой пары.
Контракт CRC списывал токены с баланса самого пула
При переводе CRC в пару контракт не просто обрабатывал обычную продажу. Он дополнительно уменьшал количество CRC, находившихся на балансе самого пула.

Иными словами, злоумышленник мог инициировать операцию, после которой токены уничтожались не только у отправителя, но и непосредственно в резерве CRC/USDT.

Это и было основной уязвимостью: посторонний пользователь получил возможность влиять на активы, принадлежащие поставщикам ликвидности.
Функция sync() фиксировала изменённые резервы
После списания CRC контракт вызывал функцию sync() торговой пары.
Эта функция обновляет внутренние данные пула и приводит их в соответствие с фактическими балансами токенов. В результате уменьшенный баланс CRC записывался как новый резерв.

Резерв USDT при этом почти не менялся, а резерв CRC становился значительно меньше. Поэтому алгоритм пула начинал считать, что один CRC стоит намного дороже, чем до операции.

Например, если в пуле находилось 200 000 USDT и 40 млн CRC, цена составляла около $0,005 за CRC. Если резерв CRC искусственно уменьшить до 1 млн токенов, при том же количестве USDT расчётная цена вырастет примерно до $0,20.

Реальная ценность токена не увеличивалась. Менялось только внутреннее соотношение резервов в конкретном пуле.
Манипуляция повторялась несколько раз
Злоумышленник многократно активировал уязвимую логику:
  • отправлял CRC на адрес пары;
  • контракт списывал часть CRC с баланса пула;
  • функция sync() фиксировала уменьшенный резерв;
  • расчётная цена CRC становилась всё выше.

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

Из-за манипуляции пул считал CRC дорогим активом. Поэтому сравнительно небольшого количества CRC оказалось достаточно, чтобы получить значительную часть находившихся в резерве USDT.

Фактически пул отдал реальные стейблкоины по цене, которая была создана искусственным уменьшением резерва CRC.
Заёмные средства были возвращены
Все действия проходили в рамках одной атомарной транзакции. После вывода USDT злоумышленник вернул временно привлечённую ликвидность и оплатил комиссии.

Оставшаяся разница стала его прибылью. По публичной оценке, потери составили около $201,4 тыс.
Основной ущерб понесли поставщики ликвидности
После атаки в пуле практически не осталось USDT, а его резервы были сильно нарушены. Основные потери легли на поставщиков ликвидности CRC/USDT, чьи средства находились внутри торговой пары.
Важно отметить, что PancakeSwap не был взломан. Его контракты выполнили операции в соответствии со своей стандартной логикой. Причиной инцидента стала функция в контракте CRC, позволявшая уменьшать баланс токена у самой торговой пары и закреплять результат через sync().
Таким образом, атака состояла из трёх ключевых элементов: списание CRC из резерва пула, фиксация изменённого баланса и последующий вывод USDT по искусственно завышенной цене CRC.

Хронология развития событий

2026-07-16 09:44:27 UTC
2026-07-16 09:44:27 UTC
происходят все события эксплойта
  • злоумышленник привлёк заёмную ликвидность и провёл атаку на пул CRC/USDT в рамках одной атомарной транзакции.
  • атакующий несколько раз перевёл CRC на адрес торговой пары, активируя уязвимую логику токена, которая уменьшала баланс CRC непосредственно у пула.
  • функция sync() зафиксировала искусственно сокращённый резерв CRC, что привело к резкому завышению его расчётной цены.
  • злоумышленник обменял CRC по искусственно завышенной цене и вывел из пула 201 359 USDT.
  • атакующий вернул заёмные средства, а оставшаяся разница стала его прибылью. Основной ущерб понесли поставщики ликвидности CRC/USDT.
с 2026-07-16 9:50:54 по 2026-07-16 9:53:33 UTC
с 2026-07-16 9:50:54 по 2026-07-16 9:53:33 UTC
атакующий переводит похищенные средства через Relay Link в сеть Ethereum
с 2026-07-16 9:57:11 по 2026-07-16 9:54:59 UTC
с 2026-07-16 9:57:11 по 2026-07-16 9:54:59 UTC
атакующий выводит ETH в Tornado Cash в сети Ethereum
2026-07-16 09:57:35 UTC
2026-07-16 09:57:35 UTC
атакующий возвращает часть средств в сеть BSC на свой адрес экслойта
с 2026-07-16 9:58:26 по 2026-07-16 10:11:30 UTC
с 2026-07-16 9:58:26 по 2026-07-16 10:11:30 UTC
атакующий выводит BNB в Tornado Cash в сети Binance Smart Chain

Заключения аналитика

  • Связь с Tornado Cash
    Злоумышленник совершил 22 операции через Tornado Cash. Между транзакциями прослеживается достаточно сильная корреляция по их количеству, номиналам и использованным сетям — BNB Smart Chain и Ethereum.

    Это позволяет провести углублённый анализ выходов из Tornado Cash и определить наиболее вероятные адреса, на которые могли поступить средства после микширования. Такая работа потребует дополнительного времени: чем больше период наблюдения, тем выше вероятность восстановить дальнейший маршрут средств с учётом методов обфускации, применяемых злоумышленником.
  • Связь с FixedFloat
    Горячий кошелёк FixedFloat профинансировал один из предполагаемых адресов злоумышленника — 0x24078f47b683b55afbfcc90392d72edf484eddac.

    Это является одной из наиболее значимых зацепок в расследовании.
    Рекомендуется направить официальный запрос в FixedFloat для получения доступных идентификационных и технических данных, связанных с операцией и пользователем сервиса.
  • Связь с Relay Link
    Злоумышленник дважды переводил средства через мост Relay Link в обоих направлениях в течение небольшого промежутка времени.

    Этот эпизод также может быть использован как основание для направления официального запроса в Relay Link. Полученные данные могут помочь установить цифровой отпечаток пользователя и выявить другие связанные маршруты движения средств по совпадающим техническим признакам.
Хотите узнать больше и получить консультацию экспертов? Оставьте email и мы с вами оперативно свяжемся!
Смотрите также