Недавний взлом @ResupplyFi показывает, как простое целочисленное деление может привести к катастрофической манипуляции с хранилищем. Эксплуатация на сумму 9,56 миллиона долларов была осуществлена в течение нескольких часов после развертывания. Давайте разберем эту критическую уязвимость ERC4626 ↓
2/ Вектор атаки: манипуляция с "первым донатом" ERC4626: • Пустой хранилище при развертывании • Злоумышленник вносит 1 вей • Делает крупное пожертвование активами • Цена акций астрономически inflates • Расчет обменного курса протокола ломается
3/ Уязвимость в одной строке: _exchangeRate = 1e36 / IOracle(_exchangeRateInfo.oracle).getPrices(address(collateral)); Целочисленное деление без защиты от округления → обменный курс округляется до нуля, когда цена оракула слишком велика.
4/ Цепочка эксплуатации: 1. Внести 1 wei в пустой сейф 2. Пожертвовать для увеличения цены акций 3. Оракул сообщает о завышенной цене 4. Обменный курс = 0 из-за деления 5. Проверка LTV: 0 <= maxLTV (всегда верно!) 6. Разблокировано неограниченное заимствование
5/ Профилактика проста: _exchangeRate = 1e36 / цена; require(_exchangeRate > 0, "Неверный курс"); Также: • Установить минимальные депозиты • Добавить проверки доли акций • Мониторить ликвидность хранилища
6/ Ключевой урок: хранилища ERC4626 нуждаются в дополнительной защите при развертывании. Проблема "первого вкладчика" не нова, но ResupplyFi показывает, как она может привести к критической уязвимости. Читать полный технический анализ на нашем блоге:
3,72K