Euler Finance зазнав флеш-атаки, втративши майже 200 мільйонів доларів
13 березня 2023 року проект Euler Finance зазнав великої флеш-атаки через вразливість у функції donateToReserves в його контракті Etoken. Зловмисник використав кілька токенів для виконання багатьох операцій, що в результаті призвело до збитків приблизно в 197 мільйонів доларів.
Аналіз процесу атаки
Атакуючий спочатку отримав термінову позику в 30 мільйонів DAI з певної платформи для кредитування, а потім розгорнув два ключові контракти: один для кредитних операцій, інший для ліквідації. Процес атаки можна розділити на кілька етапів:
Заложити 20 мільйонів DAI в контракті Euler Protocol, отримавши приблизно 19,5 мільйона eDAI.
Використовуючи функцію 10-кратного кредитного плеча протоколу Euler, позичте 195,6 мільйона eDAI та 200 мільйонів dDAI.
Використати залишок 10000000 DAI для часткового погашення боргу та знищити відповідну кількість dDAI, після чого знову позичити таку ж кількість eDAI та dDAI.
Через функцію donateToReserves пожертвувати 100 мільйонів eDAI, одразу викликати функцію liquidate для ліквідації, отримати 310 мільйонів dDAI та 250 мільйонів eDAI.
Нарешті, вилучено 38,9 мільйона DAI, після повернення Термінові позики чистий прибуток становить приблизно 8,87 мільйона DAI.
Аналіз причин вразливості
Основна проблема цієї атаки полягає в тому, що функція donateToReserves не має необхідних перевірок ліквідності. На відміну від функції mint, функція donateToReserves не виконує крок checkLiquidity, що дозволяє користувачам обійти нормальний механізм перевірки ліквідності.
У нормальних умовах функція 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.
Використовуючи функцію 10-кратного кредитного плеча протоколу Euler, позичте 195,6 мільйона eDAI та 200 мільйонів dDAI.
Використати залишок 10000000 DAI для часткового погашення боргу та знищити відповідну кількість dDAI, після чого знову позичити таку ж кількість eDAI та dDAI.
Через функцію donateToReserves пожертвувати 100 мільйонів eDAI, одразу викликати функцію liquidate для ліквідації, отримати 310 мільйонів dDAI та 250 мільйонів eDAI.
Нарешті, вилучено 38,9 мільйона DAI, після повернення Термінові позики чистий прибуток становить приблизно 8,87 мільйона DAI.
Аналіз причин вразливості
Основна проблема цієї атаки полягає в тому, що функція donateToReserves не має необхідних перевірок ліквідності. На відміну від функції mint, функція donateToReserves не виконує крок checkLiquidity, що дозволяє користувачам обійти нормальний механізм перевірки ліквідності.
У нормальних умовах функція checkLiquidity викликає модуль RiskManager, щоб переконатися, що кількість Etoken у користувача більша за кількість Dtoken. Проте, оскільки функція donateToReserves пропускає цей етап, атакуючий може спочатку потрапити в стан, що підлягає ліквідації, а потім завершити операцію ліквідації.
Рекомендації з безпеки
Щодо таких вразливостей, ми рекомендуємо командам проектів DeFi:
Провести комплексний аудит безпеки перед запуском контракту, щоб забезпечити його безпеку.
Особливу увагу слід приділити ключовим етапам, таким як повернення коштів, перевірка ліквідності та ліквідація боргів у кредитних проектах.
Впровадження суворих перевірок ліквідності для всіх функцій, які можуть вплинути на стан активів користувача.
Регулярно проводьте огляд коду, своєчасно виправляючи потенційні загрози безпеці.
Розгляньте можливість впровадження механізму мультипідпису або таймлоків як додаткових заходів безпеки.
Ця подія ще раз підкреслила важливість безпеки смарт-контрактів. Команди проєктів повинні завжди ставити безпеку на перше місце, постійно вдосконалюючи практики безпеки для захисту активів користувачів і здорового розвитку екосистеми проєкту.