Back to Blog

Анализ DeFi-эксплойта: первопричина потери $200 млн в Euler

Code Auditing
13 марта 2023 г.
4 min read
Key Insights
  • 13 марта 2023 года: Euler Finance на Ethereum потерял ~$200 млн в результате эксплойта с флэш-кредитом, вызванного отсутствием проверки ликвидности/состояния здоровья позиции в функции donateToReserves() (ошибка бизнес-логики).

  • Атакующий использовал самозаимствование и мягкую ликвидацию: выпустил большие объёмы eDAI/dDAI для создания кредитного плеча, повторял заимствования и погашения, пожертвовал eDAI через donateToReserves() без проверки ликвидности, а затем ликвидировал собственную позицию с прибылью.

13 марта 2023 года Euler Finance, протокол децентрализованных финансов (DeFi) для кредитования в сети Ethereum, подвергся атаке с использованием мгновенных займов (flash loan), что привело к убыткам в размере около 200 миллионов долларов. Первопричиной было определено отсутствие проверки ликвидности в функции donateToReserves(). Как компания, занимающаяся безопасностью блокчейнов, BlockSec постоянно отслеживает подобные эксплойты для повышения безопасности DeFi и защиты цифровых активов.

Дата Тип атаки Сеть Потеряно Возвращено
2023-03-13 Уязвимость бизнес-логики ETH ~$200M Да

До атаки Euler Finance входил в топ-30 DeFi-протоколов на DefiLlama. Его общая заблокированная стоимость (TVL) резко упала с 264 миллионов долларов до 10 миллионов долларов, сократившись на 96%.

Основные концепции

Для понимания эксплойта необходимо знать механизмы самозайма (self-borrow) и мягкой ликвидации (soft liquidation) в Euler Finance:

  • Самозайм: позволяет пользователям выпускать новые активы и увеличивать задолженность, используя только что выпущенный EToken в качестве залога, что фактически обеспечивает кредитное плечо.
  • Мягкая ликвидация: позволяет ликвидаторам гибко погашать долг за ликвидируемую сторону, вместо использования фиксированного коэффициента ликвидации.

Эти механизмы, при всей их инновационности, создали эксплуатируемые уязвимости, которыми воспользовался злоумышленник.

Анализ атаки

Злоумышленник осуществил эксплойт с помощью следующей последовательности действий:

  1. Взял мгновенный заем в размере 30 млн DAI на платформе AAVE.
  2. Внес 20 млн DAI в Euler Finance и получил 20 млн eDAI.
  3. Использовал возможности кредитования Euler для выпуска 195 млн eDAI и 200 млн dDAI.
  4. Погасил 10 млн долга, чтобы выпустить больше eDAI, владея 215 млн eDAI и 190 млн dDAI.
  5. Повторил шаг 4, увеличив объемы до 410 млн eDAI и 390 млн dDAI.
  6. Вызвал функцию donateToReserves(), чтобы пожертвовать 100 млн eDAI.
function donateToReserves(uint256 amount) external {
    // Отсутствие проверки ликвидности позволяет провести эксплойт
    // Логика функции здесь
}

В ходе этого процесса коэффициент здоровья (health factor) злоумышленника не проверялся, что позволило ликвидировать собственную позицию для получения прибыли. Злоумышленник ликвидировал сам себя, выведя 38 млн eDAI, и погасил мгновенный заем.

Данный эксплойт представлял собой атаку с использованием мгновенного займа, эксплуатирующую уязвимость бизнес-логики в смарт-контракте.

Начните работу с Phalcon Security

Обнаруживайте любую угрозу, получайте важные оповещения и блокируйте атаки.

Попробовать сейчас бесплатно

Резюме

Основной проблемой стало отсутствие проверки ликвидности в функции donateToReserves() в сочетании с механизмом динамической скидки при ликвидации. Это создало арбитражную возможность, позволив злоумышленнику эксплуатировать большое количество криптоактивов без надлежащего обеспечения или погашения долга.

Последующие шаги

Примечательно, что около 135 миллионов долларов от украденных средств — в основном стейкнутый эфир (stETH), биткоин и стейблкоины, такие как DAI и USDC — были полностью возвращены. Злоумышленником оказался 19-летний аргентинец по имени Федерико Хайме, который вернул все украденные активы три недели спустя по моральным соображениям.[1]

BlockSec активно следил за инцидентом. Наши официальные аккаунты в Twitter @BlockSecTeam и @MetaSleuth предоставляли постоянные обновления. 18 марта 2023 года злоумышленник вернул 3 000 эфиров, неделей позже — еще 51 000 эфиров, а оставшиеся средства были возвращены в последующие дни.

Во время процесса возврата средств появились фишинговые схемы, эксплуатирующие этот инцидент. Мошенники создали фишинговый сайт eulerrefunds.cxx, обманув некоторых пользователей.

MetaSleuth, высокопроизводительный аналитический инструмент BlockSec для отслеживания потоков средств между блокчейнами, позволил осуществлять мониторинг затронутых цифровых активов в режиме, близком к реальному времени, во время фаз атаки и возврата средств.

Изучите возможности расследования MetaSleuth

Отслеживайте потоки и собирайте доказательства для расследований

Попробовать сейчас бесплатно

Подробнее о безопасности блокчейна

Этот случай — один из многих, иллюстрирующих острую необходимость в надежной безопасности блокчейнов. BlockSec предлагает комплексные услуги по безопасности для блокчейн-проектов, включая:

  • Аудит смарт-контрактов во время разработки для выявления уязвимостей.
  • Phalcon Security, SaaS-платформу, предоставляющую оповещения об инцидентах и автоматическую блокировку для предотвращения крипто-взломов.
  • MetaSleuth для повышения прослеживаемости и прозрачности цифровых активов.
  • Аудит инфраструктуры для обеспечения безопасности базовой блокчейн-среды.

Лучший аудитор безопасности для Web3

Проверяйте дизайн, код и бизнес-логику до запуска


Ссылка

[1] ОН УКРАЛ 200 МИЛЛИОНОВ ДОЛЛАРОВ. ОН ВЕРНУЛ ИХ. ТЕПЕРЬ ОН ГОТОВ ОБЪЯСНИТЬ ПОЧЕМУ

Sign up for the latest updates
За пределами безопасного хранения, часть 2: безопасная реализация криптографии кошелька
Security Insights

За пределами безопасного хранения, часть 2: безопасная реализация криптографии кошелька

Может ли злоумышленник восстановить закрытый ключ, не получив доступа к его защищённой копии? В части 2 статьи «За пределами безопасного хранения» рассматриваются шесть инцидентов, в которых недостаточная случайность, потеря энтропии или ошибки при работе с одноразовыми числами (nonce) для подписания делали ключи предсказуемыми либо позволяли их восстановить. На основе этих случаев сформулированы требования к реализации генерации ключей и подписания, а затем объясняется, как платёжные организации могут оценить их выполнение с помощью анализа кода и тестирования развёрнутой системы.

За пределами безопасного хранения, часть 1: проектирование безопасных процессов проведения платежей и подписания транзакций
Security Insights

За пределами безопасного хранения, часть 1: проектирование безопасных процессов проведения платежей и подписания транзакций

Как несанкционированная операция может получить действительную подпись, если злоумышленник не похитил закрытый ключ? В части 1 материала «За пределами безопасного хранения» на примере инцидентов, в том числе связанных с Bitget, Bybit и Binance, рассматриваются сбои авторизации на этапах подачи платёжных запросов, формирования транзакций, подписания, исполнения и расчётов. На этой основе выводятся принципы проектирования, направленные на предотвращение несанкционированных операций и ограничение потерь, а затем объясняется, как проверки, аудиты, тесты на проникновение и учения могут помочь проверить эти меры защиты.

Эксплуатация уязвимости NEAR Intents: ошибка при возврате средств и уроки безопасности
Security Insights

Эксплуатация уязвимости NEAR Intents: ошибка при возврате средств и уроки безопасности

При эксплуатации уязвимости NEAR Intents события возврата с завышенными суммами использовались для сохранения внутренних балансов после возврата внесённых активов. В этом анализе прослеживается прохождение квитанций и рассматриваются семь операций вывода средств в сети BNB Chain на общую сумму 3 865 021 USDT. Эти выводы отделяются от полного возврата средств, о котором сообщил проект; также рассматриваются вопросы безопасности при разработке и аудите смарт-контрактов NEAR.

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit
Анализ DeFi-эксплойта: первопричина потери $200 млн в Euler