Euler Finance подвергся флеш-атаке займа, потеряв почти 200 миллионов долларов
13 марта 2023 года проект Euler Finance подвергся масштабной флеш-атаке займа из-за уязвимости в функции donateToReserves в его контракте Etoken. Злоумышленник использовал множество токенов для выполнения нескольких операций, в результате чего понес убытки в размере около 197 миллионов долларов.
Анализ процесса атаки
Атакующий сначала получил срочные займы на сумму 30 миллионов DAI с одной из платформ кредитования, затем развернул два ключевых контракта: один для операций с займами, другой для ликвидации. Процесс атаки можно разделить на следующие этапы:
Залог 20 миллионов DAI в контракте Euler Protocol для получения примерно 19,5 миллионов eDAI.
Используя функцию кредитного плеча 10x протокола Euler, занимайте 195.6 миллиона eDAI и 200 миллионов dDAI.
Используйте оставшиеся 10 миллионов DAI для погашения части долга и сожгите соответствующее количество dDAI, затем снова займитесь тем же количеством eDAI и dDAI.
Пожертвовать 100 миллионов eDAI через функцию donateToReserves, затем вызвать функцию liquidate для ликвидации, чтобы получить 310 миллионов dDAI и 250 миллионов eDAI.
В конце извлечено 38,9 миллионов DAI, после погашения Срочных займов чистая прибыль составила около 8,87 миллионов DAI.
Анализ причин уязвимости
核心问题此次 атаки заключается в том, что функция donateToReserves не имеет необходимых проверок ликвидности. В отличие от функции mint, функция donateToReserves не выполняет шаг проверки ликвидности, что позволяет пользователям обходить обычный механизм проверки ликвидности.
В нормальных условиях функция checkLiquidity вызывает модуль RiskManager, чтобы гарантировать, что количество Etoken у пользователя больше, чем количество Dtoken. Однако, поскольку функция donateToReserves пропускает этот шаг, злоумышленник может сначала привести себя в состояние, подлежащее ликвидации, а затем завершить операцию ликвидации.
Рекомендации по безопасности
В связи с такими уязвимостями мы рекомендуем проектам DeFi:
Провести полное аудирование безопасности перед запуском контракта, чтобы обеспечить безопасность контракта.
Особое внимание следует уделить ключевым этапам, таким как возврат средств, проверка ликвидности и ликвидация долгов в проектах по займам.
Внедрить строгую проверку ликвидности для всех функций, которые могут повлиять на состояние активов пользователей.
Регулярно проводить ревью кода и своевременно устранять потенциальные уязвимости безопасности.
Рассмотрите возможность внедрения механизма многофакторной подписи или временной блокировки в качестве дополнительных мер безопасности.
Данный инцидент вновь подчеркивает важность безопасности смарт-контрактов. Проектные команды должны всегда ставить безопасность на первое место, постоянно совершенствуя практики безопасности для защиты активов пользователей и здорового развития экосистемы проекта.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
22 Лайков
Награда
22
6
Поделиться
комментарий
0/400
MevTears
· 07-07 18:24
дефи лежа считать деньги очень приятно?
Посмотреть ОригиналОтветить0
rekt_but_vibing
· 07-06 05:25
Еще один проект мошенничество.
Посмотреть ОригиналОтветить0
P2ENotWorking
· 07-06 05:23
Снова взорвалось, не удивительно
Посмотреть ОригиналОтветить0
token_therapist
· 07-06 05:14
Ещё один праздник для неудачников
Посмотреть ОригиналОтветить0
CryptoMom
· 07-06 05:10
мир криптовалют неудачники опять разыгрывайте людей как лохов
Euler Finance подвергся флеш-атаке займа на 200 миллионов долларов, безопасность Децентрализованных финансов снова вызывает тревогу.
Euler Finance подвергся флеш-атаке займа, потеряв почти 200 миллионов долларов
13 марта 2023 года проект Euler Finance подвергся масштабной флеш-атаке займа из-за уязвимости в функции donateToReserves в его контракте Etoken. Злоумышленник использовал множество токенов для выполнения нескольких операций, в результате чего понес убытки в размере около 197 миллионов долларов.
Анализ процесса атаки
Атакующий сначала получил срочные займы на сумму 30 миллионов DAI с одной из платформ кредитования, затем развернул два ключевых контракта: один для операций с займами, другой для ликвидации. Процесс атаки можно разделить на следующие этапы:
Залог 20 миллионов DAI в контракте Euler Protocol для получения примерно 19,5 миллионов eDAI.
Используя функцию кредитного плеча 10x протокола Euler, занимайте 195.6 миллиона eDAI и 200 миллионов dDAI.
Используйте оставшиеся 10 миллионов DAI для погашения части долга и сожгите соответствующее количество dDAI, затем снова займитесь тем же количеством eDAI и dDAI.
Пожертвовать 100 миллионов eDAI через функцию donateToReserves, затем вызвать функцию liquidate для ликвидации, чтобы получить 310 миллионов dDAI и 250 миллионов eDAI.
В конце извлечено 38,9 миллионов DAI, после погашения Срочных займов чистая прибыль составила около 8,87 миллионов DAI.
Анализ причин уязвимости
核心问题此次 атаки заключается в том, что функция donateToReserves не имеет необходимых проверок ликвидности. В отличие от функции mint, функция donateToReserves не выполняет шаг проверки ликвидности, что позволяет пользователям обходить обычный механизм проверки ликвидности.
В нормальных условиях функция checkLiquidity вызывает модуль RiskManager, чтобы гарантировать, что количество Etoken у пользователя больше, чем количество Dtoken. Однако, поскольку функция donateToReserves пропускает этот шаг, злоумышленник может сначала привести себя в состояние, подлежащее ликвидации, а затем завершить операцию ликвидации.
Рекомендации по безопасности
В связи с такими уязвимостями мы рекомендуем проектам DeFi:
Провести полное аудирование безопасности перед запуском контракта, чтобы обеспечить безопасность контракта.
Особое внимание следует уделить ключевым этапам, таким как возврат средств, проверка ликвидности и ликвидация долгов в проектах по займам.
Внедрить строгую проверку ликвидности для всех функций, которые могут повлиять на состояние активов пользователей.
Регулярно проводить ревью кода и своевременно устранять потенциальные уязвимости безопасности.
Рассмотрите возможность внедрения механизма многофакторной подписи или временной блокировки в качестве дополнительных мер безопасности.
Данный инцидент вновь подчеркивает важность безопасности смарт-контрактов. Проектные команды должны всегда ставить безопасность на первое место, постоянно совершенствуя практики безопасности для защиты активов пользователей и здорового развития экосистемы проекта.