Euler Finance зазнав флеш-атаки, втративши майже 200 мільйонів доларів
13 березня проект Euler Finance зазнав флеш-атаки через вразливість у своєму смарт-контракті, що призвело до великих втрат приблизно у 197 мільйонів доларів. Ця атака торкнулася 6 різних криптовалютних токенів.
Аналіз процесу атаки
Атакуючий спочатку отримав термінові позики на 30 мільйонів DAI з певної платформи кредитування та розгорнув два ключових контракти: один для операцій з позиками, інший для ліквідації.
Потім зловмисник заставив 20 мільйонів DAI у контракті Euler Protocol, отримавши близько 19.5 мільйона eDAI. Використовуючи функцію 10-кратного кредитного плеча Euler Protocol, зловмисник додатково позичив 195.6 мільйона eDAI та 200 мільйонів dDAI.
Далі, зловмисник використовує залишок у 10 мільйонів DAI для часткового погашення боргу, знищуючи відповідну кількість dDAI. Потім знову позичає таку ж кількість eDAI і dDAI.
Ключовим кроком стало те, що зловмисник використав вразливість функції donateToReserves, пожертвувавши в 10 разів більше, ніж сума повернення, а саме 100 мільйонів eDAI. Ця операція дозволила зловмиснику активувати механізм ліквідації, отримавши 310 мільйонів dDAI та 250 мільйонів eDAI.
Врешті-решт, зловмисник за допомогою функції виведення отримав 38900000 DAI, повернув 30000000 DAI за термінові позики і зрештою отримав прибуток приблизно 8870000 DAI.
Аналіз причин уразливості
Основна вразливість цього нападу полягає в тому, що функція donateToReserves в Euler Finance не має необхідної перевірки ліквідності. На відміну від інших ключових функцій (таких як функція mint), функція donateToReserves не викликає checkLiquidity для перевірки ліквідності користувача.
У звичайних умовах функція checkLiquidity забезпечує, що кількість eToken у користувача перевищує кількість dToken шляхом виклику модуля RiskManager для підтримки безпеки системи. Однак через відсутність цього ключового етапу у функції donateToReserves, зловмисники змогли маніпулювати станом своїх облікових записів, щоб відповідати умовам ліквідації, а потім виконати ліквідацію для отримання прибутку.
Рекомендації з безпеки
Щодо таких атак, ми рекомендуємо командам блокчейн-проектів:
Провести всебічний аудит безпеки перед запуском смарт-контракту, зосередивши увагу на ключових етапах, таких як кредитування коштів, управління ліквідністю та ліквідація боргів.
Впровадження суворих перевірок безпеки для всіх функцій, які можуть вплинути на стан активів користувача, включаючи, але не обмежуючись, перевіркою ліквідності.
Регулярно проводити аудит коду та сканування на вразливості, своєчасно виправляти потенційні загрози безпеці.
Створити вдосконалену систему управління ризиками, встановити розумні ліміти позик та пороги ліквідації.
Розгляньте можливість впровадження додаткових заходів безпеки, таких як мультипідпис або таймлок, щоб запобігти масовій втраті коштів.
Вживаючи ці запобіжні заходи, можна значно підвищити безпеку DeFi проектів та знизити ризик зазнати подібних атак.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Euler Finance зазнав флеш-атаки на 200 мільйонів доларів, внаслідок чого вразливість смартконтрактів стала причиною лиха.
Euler Finance зазнав флеш-атаки, втративши майже 200 мільйонів доларів
13 березня проект Euler Finance зазнав флеш-атаки через вразливість у своєму смарт-контракті, що призвело до великих втрат приблизно у 197 мільйонів доларів. Ця атака торкнулася 6 різних криптовалютних токенів.
Аналіз процесу атаки
Атакуючий спочатку отримав термінові позики на 30 мільйонів DAI з певної платформи кредитування та розгорнув два ключових контракти: один для операцій з позиками, інший для ліквідації.
Потім зловмисник заставив 20 мільйонів DAI у контракті Euler Protocol, отримавши близько 19.5 мільйона eDAI. Використовуючи функцію 10-кратного кредитного плеча Euler Protocol, зловмисник додатково позичив 195.6 мільйона eDAI та 200 мільйонів dDAI.
Далі, зловмисник використовує залишок у 10 мільйонів DAI для часткового погашення боргу, знищуючи відповідну кількість dDAI. Потім знову позичає таку ж кількість eDAI і dDAI.
Ключовим кроком стало те, що зловмисник використав вразливість функції donateToReserves, пожертвувавши в 10 разів більше, ніж сума повернення, а саме 100 мільйонів eDAI. Ця операція дозволила зловмиснику активувати механізм ліквідації, отримавши 310 мільйонів dDAI та 250 мільйонів eDAI.
Врешті-решт, зловмисник за допомогою функції виведення отримав 38900000 DAI, повернув 30000000 DAI за термінові позики і зрештою отримав прибуток приблизно 8870000 DAI.
Аналіз причин уразливості
Основна вразливість цього нападу полягає в тому, що функція donateToReserves в Euler Finance не має необхідної перевірки ліквідності. На відміну від інших ключових функцій (таких як функція mint), функція donateToReserves не викликає checkLiquidity для перевірки ліквідності користувача.
У звичайних умовах функція checkLiquidity забезпечує, що кількість eToken у користувача перевищує кількість dToken шляхом виклику модуля RiskManager для підтримки безпеки системи. Однак через відсутність цього ключового етапу у функції donateToReserves, зловмисники змогли маніпулювати станом своїх облікових записів, щоб відповідати умовам ліквідації, а потім виконати ліквідацію для отримання прибутку.
Рекомендації з безпеки
Щодо таких атак, ми рекомендуємо командам блокчейн-проектів:
Провести всебічний аудит безпеки перед запуском смарт-контракту, зосередивши увагу на ключових етапах, таких як кредитування коштів, управління ліквідністю та ліквідація боргів.
Впровадження суворих перевірок безпеки для всіх функцій, які можуть вплинути на стан активів користувача, включаючи, але не обмежуючись, перевіркою ліквідності.
Регулярно проводити аудит коду та сканування на вразливості, своєчасно виправляти потенційні загрози безпеці.
Створити вдосконалену систему управління ризиками, встановити розумні ліміти позик та пороги ліквідації.
Розгляньте можливість впровадження додаткових заходів безпеки, таких як мультипідпис або таймлок, щоб запобігти масовій втраті коштів.
Вживаючи ці запобіжні заходи, можна значно підвищити безпеку DeFi проектів та знизити ризик зазнати подібних атак.