Аналитики SlowMist установили, что причиной взлома проекта KiloEx стала критическая ошибка в контракте MinimalForwarder. Отсутствие базовой проверки доступа позволило злоумышленнику манипулировать ценами через цепочку вызовов смарт-контрактов. В частности, execute-функция дала возможность подменить адрес и подпись, пройти проверку и «вызвать нужные методы без ограничений». Это открыло путь к изменению ценового оракула и последующему извлечению прибыли. В результате хакеры похитили около $7 млн
Исследователи SlowMist подробно описали цепочку вызовов, приведших к атаке. Сначала злоумышленник получил возможность вызвать функцию setPrices в контракте KiloPriceFeed, которая используется для обновления данных о ценах. Это стало возможным благодаря некорректной архитектуре вызовов между контрактами Keeper, PositionKeeper и MinimalForwarder. Уязвимость в последнем позволила передавать любые параметры и обойти проверку данных. В результате, злоумышленник сначала занизил цену и открыл длинную позицию, а затем резко поднял курс и закрыл ее с прибылью.
crypto.ru