Как GMX потерял $40M из-за reentrancy

Вектор атаки: Ловушка reentrancy
Атака на GMX началась, когда злоумышленники передали адрес смарт-контракта вместо EOA в executeDecreaseOrder, обойдя валидацию и войдя в рекурсивный цикл выкупа. Каждый повторный вызов искажал AUM: AUM = стоимость пула токенов — нереализованные убытки — резервные суммы.
Усилитель плеча
enableLeverage активировал GLP как плечевую позицию. Атакующие открыли массивные короткие позиции WBTC до выкупа. При изъятии GLP система пересчитывала AUM по устаревшим данным — нереализованные потери считались реальными активами, создавая искусственный излишек.
Почему это сработало: Разрушенное доверие
Это не баг в коде — а провал предположений. Мы полагали, что EOA безопасны; не проверяли идентичность вызывающего. В DeFi доверие должно быть нулевым — не оптимистичным.
Последствия: Системный риск остаётся
AUM не должен был быть динамичным или спекулятивным — он должен был быть оракулом истинной экспозиции. Но когда плечо и reentrancy сталкиваются без защитных барьеров, даже элегантная математика становится оружием. Я проанализировал эту транзакцию на Arbitrum (0x03182d3f…). Проблема архитектурная — не случайная. Если ваш протокол не аудирует внешние вызовы так же строго, как балансы — вы не строите DeFi. Вы строите казино.
LondonCryptoX
Популярный комментарий (1)

Этот эксплойт не баг — это классика! Когда твой код на DeFi превращается в казино с водкой вместо калькулятора… АУМ считает убытки как борщ после Нового года. Где EOA? А где мой папа с диплом? Пока ты молчишь — хакеры уже выпили все твои активы и пошли домой… Скоро ли ты тоже будешь ДеФи? Или просто зайдёшь в бар за углом?

