Euler Finance подвергся флеш-атака займа, убытки составили почти 200 миллионов долларов
13 марта 2023 года проект Euler Finance пострадал от флеш-атаки займа из-за уязвимости в смарт-контракте, что привело к убыткам около 197 миллионов долларов. Злоумышленник воспользовался уязвимостью отсутствия проверки ликвидности в функции donateToReserves контракта и получил огромную прибыль, проведя множество операций.
Анализ процесса атаки
Злоумышленник сначала взял в долг 30 миллионов DAI через Срочные займы на одной из платформ и развернул два контракта: контракт займа и контракт ликвидации.
Заложите 20 миллионов DAI, взятых в долг, в контракт Euler Protocol, чтобы получить около 19,5 миллионов eDAI.
Используя функцию 10-кратного кредитного плеча Euler Protocol, занять 195.6 миллионов eDAI и 200 миллионов dDAI.
Используйте оставшиеся 10 миллионов DAI для частичного погашения долга и уничтожения соответствующего dDAI, затем снова займитесь таким же количеством eDAI и dDAI.
Вызовите функцию donateToReserves, чтобы пожертвовать 100 миллионов eDAI, а затем проведите ликвидацию через функцию liquidate, чтобы получить 310 миллионов dDAI и 250 миллионов eDAI.
В конце извлекли 3890 тысяч DAI, вернули Срочные займы в размере 3000 тысяч DAI, чистая прибыль составила около 887 тысяч DAI.
Причины уязвимости
Основная причина успешной атаки заключается в том, что функция donateToReserves не содержит необходимых проверок ликвидности. В отличие от других ключевых функций (таких как mint), donateToReserves не вызывает функцию checkLiquidity для проверки состояния ликвидности пользователя. Это позволяет злоумышленникам манипулировать своими аккаунтами, приводя их в состояние, подлежащее ликвидации, и извлекать из этого прибыль.
В нормальных условиях функция checkLiquidity вызывает модуль RiskManager, чтобы гарантировать, что количество токенов E больше, чем количество токенов D, для поддержания здоровья счета. Однако функция donateToReserves пропускает этот ключевой шаг, создавая возможность для атаки.
Уроки и советы
Это событие еще раз подчеркивает важность аудита безопасности смарт-контрактов. Для кредитных проектов особенно важно обратить внимание на следующие аспекты:
Целостность механизма возврата средств
Полнота проверки ликвидности
Безопасность процесса ликвидации долгов
Команда проекта должна провести полную и строгую проверку безопасности перед запуском контракта, чтобы гарантировать его безопасность и стабильность. В то же время постоянный мониторинг безопасности и своевременное устранение уязвимостей также являются необходимыми.
С быстрым развитием децентрализованных финансов подобные инциденты безопасности могут продолжать возникать. Разработчики и проектные группы должны сохранять бдительность, постоянно учиться и совершенствоваться, чтобы создать более безопасную и надежную экосистему блокчейна.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
5 Лайков
Награда
5
6
Репост
Поделиться
комментарий
0/400
ChainComedian
· 08-12 11:55
Еще один бычий проект провалился.
Посмотреть ОригиналОтветить0
OfflineNewbie
· 08-12 11:53
неудачники опять被 разыгрывайте людей как лохов~
Посмотреть ОригиналОтветить0
SmartMoneyWallet
· 08-12 11:46
197 миллионов долларов? Этот способ действий слишком примитивен, объем средств, впрочем, немаленький.
Euler Finance подвергся флеш-атака займа на 200 миллионов долларов. Уязвимость смарт-контрактов стала причиной бедствия.
Euler Finance подвергся флеш-атака займа, убытки составили почти 200 миллионов долларов
13 марта 2023 года проект Euler Finance пострадал от флеш-атаки займа из-за уязвимости в смарт-контракте, что привело к убыткам около 197 миллионов долларов. Злоумышленник воспользовался уязвимостью отсутствия проверки ликвидности в функции donateToReserves контракта и получил огромную прибыль, проведя множество операций.
Анализ процесса атаки
Злоумышленник сначала взял в долг 30 миллионов DAI через Срочные займы на одной из платформ и развернул два контракта: контракт займа и контракт ликвидации.
Заложите 20 миллионов DAI, взятых в долг, в контракт Euler Protocol, чтобы получить около 19,5 миллионов eDAI.
Используя функцию 10-кратного кредитного плеча Euler Protocol, занять 195.6 миллионов eDAI и 200 миллионов dDAI.
Используйте оставшиеся 10 миллионов DAI для частичного погашения долга и уничтожения соответствующего dDAI, затем снова займитесь таким же количеством eDAI и dDAI.
Вызовите функцию donateToReserves, чтобы пожертвовать 100 миллионов eDAI, а затем проведите ликвидацию через функцию liquidate, чтобы получить 310 миллионов dDAI и 250 миллионов eDAI.
В конце извлекли 3890 тысяч DAI, вернули Срочные займы в размере 3000 тысяч DAI, чистая прибыль составила около 887 тысяч DAI.
Причины уязвимости
Основная причина успешной атаки заключается в том, что функция donateToReserves не содержит необходимых проверок ликвидности. В отличие от других ключевых функций (таких как mint), donateToReserves не вызывает функцию checkLiquidity для проверки состояния ликвидности пользователя. Это позволяет злоумышленникам манипулировать своими аккаунтами, приводя их в состояние, подлежащее ликвидации, и извлекать из этого прибыль.
В нормальных условиях функция checkLiquidity вызывает модуль RiskManager, чтобы гарантировать, что количество токенов E больше, чем количество токенов D, для поддержания здоровья счета. Однако функция donateToReserves пропускает этот ключевой шаг, создавая возможность для атаки.
Уроки и советы
Это событие еще раз подчеркивает важность аудита безопасности смарт-контрактов. Для кредитных проектов особенно важно обратить внимание на следующие аспекты:
Команда проекта должна провести полную и строгую проверку безопасности перед запуском контракта, чтобы гарантировать его безопасность и стабильность. В то же время постоянный мониторинг безопасности и своевременное устранение уязвимостей также являются необходимыми.
С быстрым развитием децентрализованных финансов подобные инциденты безопасности могут продолжать возникать. Разработчики и проектные группы должны сохранять бдительность, постоянно учиться и совершенствоваться, чтобы создать более безопасную и надежную экосистему блокчейна.