Аналіз інциденту з уразливістю Euler Finance: флеш-атака призвела до збитків у 197 мільйонів доларів
13 березня 2023 року проект Euler Finance зазнав значної безпекової події. Згідно з даними моніторингу в ланцюгу, через вразливість перевірки ліквідності в функції donateToReserves в Etoken, проект став жертвою флеш-атаки. Зловмисник, здійснюючи численні операції з різними монетами, зрештою завдав збитків на суму до 197 мільйонів доларів, залучивши 6 токенів. На даний момент ці кошти все ще залишаються на рахунку зловмисника.
Аналіз процесу атаки
Зловмисник спочатку отримав термінові позики на 30 мільйонів Dai з певної платформи кредитування, після чого розгорнув два контракти: один для кредитування, інший для ліквідації.
Зловмисник заставив позичені 20 мільйонів Dai в контракті Euler Protocol, отримавши близько 19,5 мільйонів eDAI.
Використовуючи функцію 10-кратного кредитного плеча протоколу Euler, зловмисник позичив 1.956 мільйона eDAI та 2 мільйони dDAI.
Зловмисник використовує залишок у 10 мільйонів DAI для часткового погашення боргу і знищує відповідну кількість dDAI, після чого знову позичає 195,6 мільйона eDAI та 200 мільйонів dDAI.
Ключові кроки: зловмисник викликає функцію donateToReserves, пожертвувавши 10-кратну суму коштів для погашення, а саме 100 мільйонів eDAI. Відразу ж зловмисник активує функцію ліквідації, отримавши 310 мільйонів dDAI та 250 мільйонів eDAI.
Нарешті, атакуючий витягнув 38900000 Dai, повернув 30000000 Термінові позики, в результаті чого отримав прибуток приблизно 8870000 Dai.
Аналіз причин уразливостей
Основна проблема цієї атаки полягає в функції donateToReserves. На відміну від інших ключових функцій (таких як функція mint), функція donateToReserves не має одного критично важливого кроку: checkLiquidity.
Функція checkLiquidity викликає модуль RiskManager для перевірки користувача, щоб переконатися, що Etoken більший за Dtoken, тим самим гарантувати ліквідність користувача. У нормальних умовах кожна дія потребує цієї перевірки. Проте функція donateToReserves пропускає цей етап, що дозволяє зловмисникам спочатку привести себе в стан, що підлягає ліквідації, а потім завершити ліквідацію.
Рекомендації з безпеки
Щодо таких вразливостей, ми рекомендуємо проектам обов'язково проводити всебічний аудит безпеки перед запуском, щоб забезпечити безпеку контракту. Для проектів з кредитування особливо важливо звернути увагу на такі аспекти:
Цілісність механізму погашення коштів
Комплексність перевірки ліквідності
Безпека процесу ліквідації боргів
Тільки через суворий контроль безпеки та всебічну оцінку ризиків можна максимально знизити ймовірність виникнення подібних безпекових інцидентів, забезпечуючи безпеку коштів проекту та користувачів.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
16 лайків
Нагородити
16
3
Поділіться
Прокоментувати
0/400
AirdropChaser
· 08-05 08:04
знову обдурювати людей, як лохів знову обдурювати людей, як лохів щодня обдурюють людей, як лохів
Переглянути оригіналвідповісти на0
DefiSecurityGuard
· 08-05 08:04
*сиг* ще один день, ще один протокол знищено через базову вразливість donateToReserves... сказав про це кілька місяців тому, якщо чесно. критичне нагадування: ЗАВЖДИ очищайте перевірки ліквідності, чорт візьми. ці аматорські помилки продовжують коштувати 9 цифр, смх.
Переглянути оригіналвідповісти на0
GasGrillMaster
· 08-05 07:50
Брат, ця базова оборона зовсім не справляється, справжня некомпетентність.
Euler Finance зазнав флеш-атаки на суму 197 мільйонів доларів через вразливість функції donateToReserves
Аналіз інциденту з уразливістю Euler Finance: флеш-атака призвела до збитків у 197 мільйонів доларів
13 березня 2023 року проект Euler Finance зазнав значної безпекової події. Згідно з даними моніторингу в ланцюгу, через вразливість перевірки ліквідності в функції donateToReserves в Etoken, проект став жертвою флеш-атаки. Зловмисник, здійснюючи численні операції з різними монетами, зрештою завдав збитків на суму до 197 мільйонів доларів, залучивши 6 токенів. На даний момент ці кошти все ще залишаються на рахунку зловмисника.
Аналіз процесу атаки
Зловмисник спочатку отримав термінові позики на 30 мільйонів Dai з певної платформи кредитування, після чого розгорнув два контракти: один для кредитування, інший для ліквідації.
Зловмисник заставив позичені 20 мільйонів Dai в контракті Euler Protocol, отримавши близько 19,5 мільйонів eDAI.
Використовуючи функцію 10-кратного кредитного плеча протоколу Euler, зловмисник позичив 1.956 мільйона eDAI та 2 мільйони dDAI.
Зловмисник використовує залишок у 10 мільйонів DAI для часткового погашення боргу і знищує відповідну кількість dDAI, після чого знову позичає 195,6 мільйона eDAI та 200 мільйонів dDAI.
Ключові кроки: зловмисник викликає функцію donateToReserves, пожертвувавши 10-кратну суму коштів для погашення, а саме 100 мільйонів eDAI. Відразу ж зловмисник активує функцію ліквідації, отримавши 310 мільйонів dDAI та 250 мільйонів eDAI.
Нарешті, атакуючий витягнув 38900000 Dai, повернув 30000000 Термінові позики, в результаті чого отримав прибуток приблизно 8870000 Dai.
Аналіз причин уразливостей
Основна проблема цієї атаки полягає в функції donateToReserves. На відміну від інших ключових функцій (таких як функція mint), функція donateToReserves не має одного критично важливого кроку: checkLiquidity.
Функція checkLiquidity викликає модуль RiskManager для перевірки користувача, щоб переконатися, що Etoken більший за Dtoken, тим самим гарантувати ліквідність користувача. У нормальних умовах кожна дія потребує цієї перевірки. Проте функція donateToReserves пропускає цей етап, що дозволяє зловмисникам спочатку привести себе в стан, що підлягає ліквідації, а потім завершити ліквідацію.
Рекомендації з безпеки
Щодо таких вразливостей, ми рекомендуємо проектам обов'язково проводити всебічний аудит безпеки перед запуском, щоб забезпечити безпеку контракту. Для проектів з кредитування особливо важливо звернути увагу на такі аспекти:
Тільки через суворий контроль безпеки та всебічну оцінку ризиків можна максимально знизити ймовірність виникнення подібних безпекових інцидентів, забезпечуючи безпеку коштів проекту та користувачів.