Як хакери украли $40M через reentrancy в GMX

Вектор атаки: Реентрантна пастка
Атака на GMX почалася, коли хакери викликали unstakeAndRedeemGlp, передаючи адрес смарт-контракту замість EOA у executeDecreaseOrder. Це обійшло перевірку, дозволивши реентрантний повтор у циклі витягування. Кожен рекурсивний виклик збільшував AUM: AUM = загальна сума активів − нереалізовані збитки − зарезервовані суми.
Потужник левереджу
enableLeverage було увімкнено, перетворюючи GLP на левереджну позицію. Хакери відкрили масштабнi WBTC короткi позиції до витягування. Коли GLP було знятo, система переоцнювала AUM за застарлими даними — де нереалізованi збитки не були враховано, але сприйнятi як реальнi активи. Це створило штучний надлишок, дозволивши нападаючим отримати набаг значно бльше свого пропорцйного частки.
Чому це спрацювало: Зламана довiра у логїцї
Це не баг у коді — це невдача припущень. Ми припускали, що EOA-входи безпечнi; ми не перевіряли ідентичнiсть викликатора на рІвнї переходу. У DeFi довiра має бути нульовою — не оптимistic.
Наслїдок: Системний ризик залишається
AUM мав бути динамicним чи спекулятивним — його завданням мав бути оракул істинної експозицї. Але коли левередж та реентрантнiсть стикаються без охоронних бар’єр, навть навть складна математика стає зброям.
LondonCryptoX
Гарячий коментар (1)

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

