Один резерв посчитали дважды в разные моменты: как похитили 92,6 тыс. из MCN Labs
01.10.2026 CoinKyt Company
3 мин
share button
30 сентября 2026 года злоумышленник воспользовался ошибкой в расчёте вознаграждений контракта MCN Labs и похитил около 92,6 тыс. долларов. Он изменил количество токенов в пуле между двумя этапами одного расчёта, и система выдала награду, превышающую реальные поступления. Расследование КоинКит анализирует, как именно сработала атака и куда ушли средства.

 


Введение


MCN Labs
— это проект в сети BNB Smart Chain. Пользователи вкладывают токены в пул ликвидности — хранилище, где два токена торгуются автоматически. За это они получают вознаграждения в токене FIST.

Резерв пула
— это количество токенов, которое в данный момент находится в хранилище. От этого числа зависит цена и размер наград.

 


Ход инцидента

  1. Злоумышленник взаимодействовал с контрактом LPBonus, который отвечает за начисление вознаграждений пользователям пула.
  2. Контракт рассчитывал награду в два этапа. Сначала он смотрел на текущий резерв токена MSN в пуле и на его основе определял, сколько токенов FIST приходится на одну долю пула. Это число называлось oneshareFIST.
  3. Злоумышленник уменьшил резерв MSN в пуле в момент начисления новых наград. Из-за этого контракт рассчитал завышенное значение oneshareFIST — на одну долю приходилось больше FIST, чем должно было.
  4. Затем он восстановил ликвидность и вернул резерв MSN обратно к прежнему уровню.
  1. После этого злоумышленник вызвал вывод своей позиции. На этом этапе контракт снова посмотрел на резерв MSN, но уже восстановленный, и посчитал вес позиции пользователя по этому новому, более высокому резерву.
  2. В результате показатель награды был сформирован при низком резерве, а вес позиции — при высоком. Контракт начислил злоумышленнику больше токенов FIST, чем фактически было обеспечено поступившими вознаграждениями.
  3. Полученные токены были обменяны, и ущерб для протокола составил около 92 607 BSC-USD — стейблкоина в сети BNB Smart Chain, привязанного к доллару.

 


Почему это стало возможным


Контракт использовал одно и то же значение резерва MSN на двух этапах расчёта, но брал его в разные моменты времени. Первое значение участвовало при формировании накопительного индекса награды, второе — при определении веса пользователя при выводе.

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

Также отсутствовала проверка, которая связывала бы итоговую выплату с фактически добавленным за этот период количеством токенов FIST. Накопительная система могла рассчитать награду, превышающую реальные поступления в резерв вознаграждений.

 


Детали расследования: движение средств


Похищенные средства в размере 92 607 BSC-USD поступили на контракт злоумышленника:
0xa8607269686b6c15FC2EB84f4044F9aDE2b143c7

Затем они были отправлены транзитом через адрес:
0xb6fff29DD2B5423a159E50877Fc4af7A54E76f7A
в мост Bridgers — сервис для перевода криптовалюты между сетями. На этот же адрес в сети Ethereum пришли 34,18 ETH.

Далее 34,1 ETH были отправлены восемью транзакциями в миксер Tornado Cash — сервис, который скрывает источник и путь криптовалюты.
Оставшиеся 0,08 ETH были переведены через Bridgers обратно в сеть BNB Smart Chain на тот же адрес в размере 0,29 BNB. Из них 0,2 BNB отправлены в Tornado Cash, а 0,09 BNB остались на адресе.

 


Заключение


Инцидент в MCN Labs показал, что использование одного изменяемого значения на разных этапах одного расчёта создаёт уязвимость. Отсутствие фиксации состояния резерва и проверки соответствия выплаты реальным поступлениям позволило злоумышленнику получить награду, не обеспеченную протоколом.