Euler Finance подвергся флеш-атаке займа, убытки составили до 197 миллионов долларов.
13 марта 2023 года проект Euler Finance подвергся масштабной флеш-атаке займа из-за уязвимости в его смарт-контракте. Атакующий использовал уязвимость отсутствия проверки ликвидности в функции donateToReserves в Etoken, получив огромную прибыль за счет многократных вызовов операций с различными валютами. Общие убытки от этой атаки составили до 197 миллионов долларов и затронули 6 различных токенов.
Анализ процесса атаки
Шаги действий атакующего следующие:
Занять 30 миллионов DAI через Срочные займы на платформе кредитования.
Разверните два контракта: один для займа, другой для ликвидации.
Заложите 20 миллионов DAI в контракт Euler Protocol, чтобы получить 195 тысяч eDAI.
Используя функцию заимствования с кредитным плечом 10x от Euler Protocol, заимствованы 1,956,000 eDAI и 2,000,000 dDAI.
Используйте оставшиеся 10 миллионов DAI для частичного погашения долга и уничтожьте соответствующее количество dDAI.
Снова занять 195,6 тыс. eDAI и 200 тыс. dDAI.
Вызовите функцию donateToReserves, пожертвуя сумму, в 10 раз превышающую сумму погашения (1 миллион eDAI).
Вызовите функцию ликвидации, чтобы получить 3,1 миллиона dDAI и 2,5 миллиона eDAI.
Ключом к успешной атаке является отсутствие необходимой проверки ликвидности в функции donateToReserves Euler Finance. В отличие от других ключевых функций (таких как mint), функция donateToReserves не выполняет шаг проверки ликвидности. Этот упуск в внимании позволяет пользователям манипулировать состоянием своих счетов, чтобы оно соответствовало условиям ликвидации, а затем получать прибыль от ликвидации.
В нормальных условиях функция checkLiquidity вызывает модуль RiskManager, чтобы гарантировать, что Etoken пользователя всегда больше Dtoken, поддерживая здоровье системы. Однако из-за отсутствия этой ключевой проверки в функции donateToReserves злоумышленник смог обойти механизмы безопасности системы.
Рекомендации по безопасности
В связи с такими атаками мы предлагаем следующие рекомендации по безопасности:
Перед запуском смарт-контракта необходимо провести полный аудит безопасности.
Проекты в области кредитования должны особенно внимательно относиться к таким ключевым аспектам, как возврат средств, проверка ликвидности и ликвидация долгов.
Убедитесь, что все функции, которые могут повлиять на статус активов пользователя, содержат необходимые проверки безопасности.
Регулярно проводить ревью кода, чтобы убедиться, что новые функции не вводят потенциальные уязвимости.
Установить механизм реагирования на чрезвычайные ситуации, чтобы быстро реагировать в случае возникновения инцидентов безопасности.
Этот инцидент вновь подчеркивает важность безопасности смарт-контрактов. Команды проектов всегда должны ставить безопасность на первое место, защищая активы пользователей с помощью постоянной практики безопасности и аудита.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Euler Finance подвергся флеш-атаке займа на сумму 197 миллионов долларов США, уязвимость смарт-контрактов привела к огромным потерям.
Euler Finance подвергся флеш-атаке займа, убытки составили до 197 миллионов долларов.
13 марта 2023 года проект Euler Finance подвергся масштабной флеш-атаке займа из-за уязвимости в его смарт-контракте. Атакующий использовал уязвимость отсутствия проверки ликвидности в функции donateToReserves в Etoken, получив огромную прибыль за счет многократных вызовов операций с различными валютами. Общие убытки от этой атаки составили до 197 миллионов долларов и затронули 6 различных токенов.
Анализ процесса атаки
Шаги действий атакующего следующие:
Анализ уязвимостей
Ключом к успешной атаке является отсутствие необходимой проверки ликвидности в функции donateToReserves Euler Finance. В отличие от других ключевых функций (таких как mint), функция donateToReserves не выполняет шаг проверки ликвидности. Этот упуск в внимании позволяет пользователям манипулировать состоянием своих счетов, чтобы оно соответствовало условиям ликвидации, а затем получать прибыль от ликвидации.
В нормальных условиях функция checkLiquidity вызывает модуль RiskManager, чтобы гарантировать, что Etoken пользователя всегда больше Dtoken, поддерживая здоровье системы. Однако из-за отсутствия этой ключевой проверки в функции donateToReserves злоумышленник смог обойти механизмы безопасности системы.
Рекомендации по безопасности
В связи с такими атаками мы предлагаем следующие рекомендации по безопасности:
Этот инцидент вновь подчеркивает важность безопасности смарт-контрактов. Команды проектов всегда должны ставить безопасность на первое место, защищая активы пользователей с помощью постоянной практики безопасности и аудита.