Проект Euler Finance подвергся флеш-атаке займа, убытки составили почти 200 миллионов долларов.
13 марта 2023 года проект Euler Finance подвергся флеш-атака займа, что привело к огромным убыткам в размере около 197 миллионов долларов США. Нападающий использовал уязвимость в контракте проекта, выполнив несколько операций для завершения атаки. В настоящее время украденные средства все еще находятся на счету нападающего.
Анализ процесса атаки
Нападающий сначала взял в долг 30 миллионов DAI через Срочные займы с одной кредитной платформы и развернул два контракта: один кредитный контракт и один контракт на ликвидацию.
Атакующий заложил взятые взаймы 20 миллионов DAI в контракт Euler Protocol и получил 19,5 миллиона eDAI.
Используя функцию кредитного плеча протокола Euler, злоумышленник занял 195,6 миллиона eDAI и 200 миллионов dDAI.
Атакующий использует оставшиеся 10 миллионов DAI для частичного погашения долга, уничтожает 10 миллионов dDAI, а затем снова занимает 195,6 миллионов eDAI и 200 миллионов dDAI.
Ключевые шаги: злоумышленник вызывает функцию donateToReserves, жертвует 100 миллионов eDAI, затем через функцию liquidate производит ликвидацию, получая 310 миллионов dDAI и 250 миллионов eDAI.
В конце концов, злоумышленник вывел 38,9 миллиона DAI, вернул 30 миллионов DAI по срочному займу и в конечном итоге заработал 8,87 миллиона DAI.
Причина уязвимости
Основная причина успешной атаки заключается в наличии недостатка в функции donateToReserves контракта Euler Finance. В отличие от других ключевых функций, эта функция не содержит необходимого шага проверки ликвидности (checkLiquidity). Эта проверка должна была гарантировать, что количество eToken у пользователя больше, чем количество dToken, чтобы поддерживать здоровое состояние контракта.
Из-за отсутствия этой ключевой проверки злоумышленники могут с помощью определенных действий оказаться в состоянии, подлежащем ликвидации, а затем использовать это для осуществления атаки.
Рекомендации по безопасности
Для подобных кредитных проектов необходимо обратить особое внимание на следующие ключевые моменты:
Безопасность механизма погашения средств
Всеобъемлющая проверка ликвидности
Строгость процесса ликвидации долгов
Перед запуском контракта крайне важно провести всесторонний и профессиональный аудит безопасности. Это не только позволяет выявить потенциальные уязвимости, но и гарантирует общую безопасность и стабильность контракта.
Данный инцидент еще раз подчеркивает важность безопасности контрактов в области децентрализованных финансов. Проектные команды должны всегда ставить безопасность на первое место, чтобы защитить активы пользователей и поддерживать здоровое развитие всей экосистемы.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Euler Finance подвергся флеш-атаке займа, убытки составили почти 200 миллионов долларов.
Проект Euler Finance подвергся флеш-атаке займа, убытки составили почти 200 миллионов долларов.
13 марта 2023 года проект Euler Finance подвергся флеш-атака займа, что привело к огромным убыткам в размере около 197 миллионов долларов США. Нападающий использовал уязвимость в контракте проекта, выполнив несколько операций для завершения атаки. В настоящее время украденные средства все еще находятся на счету нападающего.
Анализ процесса атаки
Нападающий сначала взял в долг 30 миллионов DAI через Срочные займы с одной кредитной платформы и развернул два контракта: один кредитный контракт и один контракт на ликвидацию.
Атакующий заложил взятые взаймы 20 миллионов DAI в контракт Euler Protocol и получил 19,5 миллиона eDAI.
Используя функцию кредитного плеча протокола Euler, злоумышленник занял 195,6 миллиона eDAI и 200 миллионов dDAI.
Атакующий использует оставшиеся 10 миллионов DAI для частичного погашения долга, уничтожает 10 миллионов dDAI, а затем снова занимает 195,6 миллионов eDAI и 200 миллионов dDAI.
Ключевые шаги: злоумышленник вызывает функцию donateToReserves, жертвует 100 миллионов eDAI, затем через функцию liquidate производит ликвидацию, получая 310 миллионов dDAI и 250 миллионов eDAI.
В конце концов, злоумышленник вывел 38,9 миллиона DAI, вернул 30 миллионов DAI по срочному займу и в конечном итоге заработал 8,87 миллиона DAI.
Причина уязвимости
Основная причина успешной атаки заключается в наличии недостатка в функции donateToReserves контракта Euler Finance. В отличие от других ключевых функций, эта функция не содержит необходимого шага проверки ликвидности (checkLiquidity). Эта проверка должна была гарантировать, что количество eToken у пользователя больше, чем количество dToken, чтобы поддерживать здоровое состояние контракта.
Из-за отсутствия этой ключевой проверки злоумышленники могут с помощью определенных действий оказаться в состоянии, подлежащем ликвидации, а затем использовать это для осуществления атаки.
Рекомендации по безопасности
Для подобных кредитных проектов необходимо обратить особое внимание на следующие ключевые моменты:
Перед запуском контракта крайне важно провести всесторонний и профессиональный аудит безопасности. Это не только позволяет выявить потенциальные уязвимости, но и гарантирует общую безопасность и стабильность контракта.
Данный инцидент еще раз подчеркивает важность безопасности контрактов в области децентрализованных финансов. Проектные команды должны всегда ставить безопасность на первое место, чтобы защитить активы пользователей и поддерживать здоровое развитие всей экосистемы.