Проект 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 зазнала флеш-атаки, внаслідок якої втратила майже 2 мільйони доларів.
Проект 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, щоб підтримувати здоровий стан контракту.
Через відсутність цієї ключової перевірки, зловмисник може за допомогою певних дій потрапити в стан, що дозволяє його ліквідацію, а потім використати це для здійснення атаки.
Рекомендації з безпеки
Для подібних кредитних проектів необхідно звернути особливу увагу на такі ключові моменти:
Перед запуском контракту важливо провести всебічний та професійний аудит безпеки. Це не тільки дозволяє виявити потенційні вразливості, але й забезпечити загальну безпеку та стабільність контракту.
Ця подія ще раз підкреслила важливість безпеки контрактів у сфері децентралізованих фінансів. Проектні команди повинні завжди ставити безпеку на перше місце, щоб захистити активи користувачів і підтримувати здоровий розвиток всієї екосистеми.