Euler Finance подвергся флеш-атаке займа, потеряв почти 200 миллионов долларов
13 марта проект Euler Finance пострадал от флеш-атаки займа из-за уязвимости в его смарт-контрактах, что привело к убыткам около 197 миллионов долларов. Атака затронула 6 различных криптовалютных токенов.
Анализ процесса атаки
Атакующий сначала получил срочные займы на сумму 30 миллионов DAI с какой-то платформы кредитования и развернул два ключевых контракта: один для операций по займам, другой для ликвидации.
Затем злоумышленник заложил 20 миллионов DAI в контракт Euler Protocol и получил около 19.5 миллионов eDAI. Используя функцию 10-кратного кредитного плеча Euler Protocol, злоумышленник дополнительно занял 195.6 миллионов eDAI и 200 миллионов dDAI.
Затем злоумышленник использует оставшиеся 10 миллионов DAI для частичного погашения долга, уничтожив соответствующее количество dDAI. Затем он снова занимает такое же количество eDAI и dDAI.
Ключевым шагом стало то, что злоумышленник использовал уязвимость функции donateToReserves, пожертвовав сумму, в 10 раз превышающую сумму возврата, а именно 100 миллионов eDAI. Эта операция позволила злоумышленнику запустить механизм ликвидации и получить 310 миллионов dDAI и 250 миллионов eDAI.
В конце концов, злоумышленник получил 3890 миллионов DAI через функцию вывода средств, вернул 3000 миллионов DAI по срочному займу и в конечном итоге получил прибыль около 887 миллионов DAI.
Анализ причин уязвимости
Основной уязвимостью этой атаки является отсутствие необходимой проверки ликвидности в функции donateToReserves платформы Euler Finance. В отличие от других ключевых функций (таких как функция mint), функция donateToReserves не вызывает checkLiquidity для проверки ликвидности пользователя.
В нормальных условиях функция checkLiquidity будет вызывать модуль RiskManager, чтобы гарантировать, что количество eToken у пользователя превышает количество dToken, чтобы поддерживать безопасность системы. Однако из-за отсутствия этого ключевого шага в функции donateToReserves злоумышленник смог манипулировать состоянием своего счета, чтобы оно соответствовало условиям ликвидации, а затем осуществить ликвидацию для получения прибыли.
Рекомендации по безопасности
В связи с такими атаками мы рекомендуем разработчикам блокчейн-проектов:
Провести всесторонний аудит безопасности перед запуском смарт-контракта, особенно уделяя внимание ключевым аспектам, таким как заимствование средств, управление ликвидностью и ликвидация долгов.
Проведение строгих проверок безопасности для всех функций, которые могут повлиять на состояние активов пользователей, включая, но не ограничиваясь, проверкой ликвидности.
Регулярно проводить проверку кода и сканирование на уязвимости, своевременно устранять потенциальные угрозы безопасности.
Создание完善ного механизма управления рисками, установление разумных лимитов заимствования и порогов ликвидации.
Рассмотрите возможность внедрения дополнительных мер безопасности, таких как мультиподпись или замок времени, чтобы предотвратить массовую утечку средств.
Применяя эти меры предосторожности, можно значительно повысить безопасность DeFi проектов и снизить риск遭受类似 атак.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
Euler Finance подвергся флеш-атака займа на 200 миллионов долларов, уязвимость смарт-контрактов стала причиной бедствия.
Euler Finance подвергся флеш-атаке займа, потеряв почти 200 миллионов долларов
13 марта проект Euler Finance пострадал от флеш-атаки займа из-за уязвимости в его смарт-контрактах, что привело к убыткам около 197 миллионов долларов. Атака затронула 6 различных криптовалютных токенов.
Анализ процесса атаки
Атакующий сначала получил срочные займы на сумму 30 миллионов DAI с какой-то платформы кредитования и развернул два ключевых контракта: один для операций по займам, другой для ликвидации.
Затем злоумышленник заложил 20 миллионов DAI в контракт Euler Protocol и получил около 19.5 миллионов eDAI. Используя функцию 10-кратного кредитного плеча Euler Protocol, злоумышленник дополнительно занял 195.6 миллионов eDAI и 200 миллионов dDAI.
Затем злоумышленник использует оставшиеся 10 миллионов DAI для частичного погашения долга, уничтожив соответствующее количество dDAI. Затем он снова занимает такое же количество eDAI и dDAI.
Ключевым шагом стало то, что злоумышленник использовал уязвимость функции donateToReserves, пожертвовав сумму, в 10 раз превышающую сумму возврата, а именно 100 миллионов eDAI. Эта операция позволила злоумышленнику запустить механизм ликвидации и получить 310 миллионов dDAI и 250 миллионов eDAI.
В конце концов, злоумышленник получил 3890 миллионов DAI через функцию вывода средств, вернул 3000 миллионов DAI по срочному займу и в конечном итоге получил прибыль около 887 миллионов DAI.
Анализ причин уязвимости
Основной уязвимостью этой атаки является отсутствие необходимой проверки ликвидности в функции donateToReserves платформы Euler Finance. В отличие от других ключевых функций (таких как функция mint), функция donateToReserves не вызывает checkLiquidity для проверки ликвидности пользователя.
В нормальных условиях функция checkLiquidity будет вызывать модуль RiskManager, чтобы гарантировать, что количество eToken у пользователя превышает количество dToken, чтобы поддерживать безопасность системы. Однако из-за отсутствия этого ключевого шага в функции donateToReserves злоумышленник смог манипулировать состоянием своего счета, чтобы оно соответствовало условиям ликвидации, а затем осуществить ликвидацию для получения прибыли.
Рекомендации по безопасности
В связи с такими атаками мы рекомендуем разработчикам блокчейн-проектов:
Провести всесторонний аудит безопасности перед запуском смарт-контракта, особенно уделяя внимание ключевым аспектам, таким как заимствование средств, управление ликвидностью и ликвидация долгов.
Проведение строгих проверок безопасности для всех функций, которые могут повлиять на состояние активов пользователей, включая, но не ограничиваясь, проверкой ликвидности.
Регулярно проводить проверку кода и сканирование на уязвимости, своевременно устранять потенциальные угрозы безопасности.
Создание完善ного механизма управления рисками, установление разумных лимитов заимствования и порогов ликвидации.
Рассмотрите возможность внедрения дополнительных мер безопасности, таких как мультиподпись или замок времени, чтобы предотвратить массовую утечку средств.
Применяя эти меры предосторожности, можно значительно повысить безопасность DeFi проектов и снизить риск遭受类似 атак.