
10 марта 2026 года в сети BNB Smart Chain был атакован пул ликвидности MT/WBNB. Злоумышленник воспользовался логической уязвимостью в механике sell-burn токена MT и вывел 381.7468 WBNB в рамках одной транзакции.
Атака была реализована через flash-loan и завершена до возврата заёмных средств. Уязвимость не требовала взлома инфраструктуры — достаточно было корректно воспроизвести последовательность вызовов контракта.
Ход инцидента
Атака проведена в одной транзакции:
0xfb57c980286ea8755a7b69de5a74483c44b1f74af4ab34b7c52e733fc62dfca6
1️⃣ Злоумышленник взял крупный flash-loan в WBNB.
2️⃣ Внутри транзакции из пула MT/WBNB было принудительно сожжено 6,735,516.903064984155452968 MT.
3️⃣ После сжигания пул отдал атакующему 1,198.628257314866098653 WBNB — как компенсацию за
изменение резервов.
4️⃣ Flash-loan был возвращён.
5️⃣ На адресе атакующего осталось 381.746819805990283197 WBNB.
Адрес атакующего: 0xDB0901A3254f47c0CE57fFFCE2C730Bc33A1c0e1
Почему это стало возможным
Корень уязвимости — в логике контракта MT при продаже токенов.
Во время операции sell контракт MT не только проводил продажу в пул, но и одновременно записывал проданный объём в pendingBurnAmount. То есть токены физически попадали в пул, но при этом сразу помечались как будущий burn.
Далее функция extractFromPoolForLpMining() вызывала _executePendingBurn(). Эта функция напрямую уменьшала баланс пары: отправляла MT на dead-адрес и вызывала sync(). В результате резерв MT в пуле уменьшался принудительно, тогда как резерв WBNB оставался неизменным.
Пул оказывался в перекошенном состоянии: MT в нём резко меньше, WBNB — прежний объём. После этого атакующий продавал MT в уже искажённый пул и получал из него избыточный WBNB.
Фактически механизм burn, призванный регулировать эмиссию, стал инструментом манипуляции резервами пула.
Детали расследования: движение средств
После получения украденных активов на адрес 0xDB0901A3254f47c0CE57fFFCE2C730Bc33A1c0e1 злоумышленник начал вывод средств.
Все активы были обменяны на USDC и переведены в сеть Ethereum через мост Stargate. На адресе в сети Ethereum USDC были конвертированы в DAI. Далее средства были направлены в протокол приватности Railgun.
Использование Railgun на завершающем этапе существенно усложняет дальнейшее отслеживание активов.
Заключение
Инцидент с пулом MT/WBNB — наглядный пример того, как логическая ошибка в смарт-контракте может стать инструментом полноценной атаки. Уязвимость не требовала эксплуатации внешних систем: злоумышленник воспользовался самим механизмом burn, предусмотренным протоколом.
Принудительное изменение резервов пула без соответствующей коррекции — классическая ошибка в математике AMM-протоколов. Подобные уязвимости, как правило, выявляются на этапе аудита, однако остаются незамеченными при поверхностной проверке.
Команда КоинКит продолжает мониторинг адресов, связанных с инцидентом.


