Euler Finance зазнав флеш-атаки, втративши близько 200 мільйонів доларів
13 березня 2023 року проект Euler Finance зазнав флеш-атаки через вразливість у смарт-контракті, що призвело до втрат приблизно в 197 мільйонів доларів. Зловмисники скористалися вразливістю у функції donateToReserves, яка не містила перевірки ліквідності, і через багаторазові операції отримали величезний прибуток.
Аналіз процесу атаки
Зловмисник спочатку позичає 30 мільйонів DAI через Термінові позики з певної платформи кредитування та розгортає два контракти: контракт на позики та контракт на ліквідацію.
Поставити 20 мільйонів позичених DAI в контракт Euler Protocol, отримати приблизно 19,5 мільйона eDAI.
Використовуючи функцію 10-кратного кредитного плеча Euler Protocol, позичте 195,6 мільйона eDAI та 200 мільйонів dDAI.
Використати залишок у 10 мільйонів DAI для часткового погашення боргу та знищити відповідну кількість dDAI, після чого знову позичити таку ж кількість eDAI та dDAI.
Викликати функцію donateToReserves для внесення 1 мільйона eDAI, а потім провести ліквідацію через функцію liquidate, отримавши 3.1 мільйона dDAI та 2.5 мільйона eDAI.
Врешті-решт, витягнули 38,9 мільйона DAI, повернули Термінові позики в 30 мільйонів DAI, чистий прибуток приблизно 8,87 мільйона DAI.
Причини вразливості
Основна причина успішної атаки полягає в тому, що функція donateToReserves не має необхідної перевірки ліквідності. На відміну від інших ключових функцій (таких як mint), donateToReserves не викликає функцію checkLiquidity для перевірки ліквідного стану користувача. Це дозволяє зловмисникам маніпулювати своїми рахунками, потрапляючи в стан, який може бути ліквідований, і отримувати з цього прибуток.
У нормальних умовах функція checkLiquidity викликає модуль RiskManager, щоб забезпечити, що кількість Etoken у користувача більша за кількість Dtoken, щоб підтримувати здоровий стан рахунку. Однак функція donateToReserves пропускає цей критично важливий крок, створюючи можливості для атаки.
Уроки та поради
Ця подія ще раз підкреслила важливість безпеки аудитів смарт-контрактів. Для проектів, пов'язаних з кредитуванням, особливо слід звернути увагу на такі аспекти:
Цілісність механізму повернення коштів
Повнота перевірки ліквідності
Безпека процесу ліквідації боргів
Команда проекту повинна провести всебічний і строгий аудит безпеки перед запуском контракту, щоб забезпечити безпеку та стабільність контракту. Одночасно, постійний моніторинг безпеки та своєчасне усунення вразливостей також є невід'ємними.
З розвитком децентралізованих фінансів подібні безпекові інциденти можуть продовжувати виникати. Розробники та команди проектів повинні залишатися на поготові, постійно навчатися та вдосконалюватися, щоб створити більш безпечну та надійну екосистему блокчейну.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
5 лайків
Нагородити
5
6
Репост
Поділіться
Прокоментувати
0/400
ChainComedian
· 9год тому
Ще один бик проекту перевернувся.
Переглянути оригіналвідповісти на0
OfflineNewbie
· 9год тому
невдахи знову обдурюють людей, як лохів~
Переглянути оригіналвідповісти на0
SmartMoneyWallet
· 9год тому
197 мільйонів доларів? Цей метод дій занадто примітивний, але обсяг фінансування досить значний.
Euler Finance зазнав флеш-атаки на 200 мільйонів доларів, вразливість смартконтрактів стала причиною лиха
Euler Finance зазнав флеш-атаки, втративши близько 200 мільйонів доларів
13 березня 2023 року проект Euler Finance зазнав флеш-атаки через вразливість у смарт-контракті, що призвело до втрат приблизно в 197 мільйонів доларів. Зловмисники скористалися вразливістю у функції donateToReserves, яка не містила перевірки ліквідності, і через багаторазові операції отримали величезний прибуток.
Аналіз процесу атаки
Зловмисник спочатку позичає 30 мільйонів DAI через Термінові позики з певної платформи кредитування та розгортає два контракти: контракт на позики та контракт на ліквідацію.
Поставити 20 мільйонів позичених DAI в контракт Euler Protocol, отримати приблизно 19,5 мільйона eDAI.
Використовуючи функцію 10-кратного кредитного плеча Euler Protocol, позичте 195,6 мільйона eDAI та 200 мільйонів dDAI.
Використати залишок у 10 мільйонів DAI для часткового погашення боргу та знищити відповідну кількість dDAI, після чого знову позичити таку ж кількість eDAI та dDAI.
Викликати функцію donateToReserves для внесення 1 мільйона eDAI, а потім провести ліквідацію через функцію liquidate, отримавши 3.1 мільйона dDAI та 2.5 мільйона eDAI.
Врешті-решт, витягнули 38,9 мільйона DAI, повернули Термінові позики в 30 мільйонів DAI, чистий прибуток приблизно 8,87 мільйона DAI.
Причини вразливості
Основна причина успішної атаки полягає в тому, що функція donateToReserves не має необхідної перевірки ліквідності. На відміну від інших ключових функцій (таких як mint), donateToReserves не викликає функцію checkLiquidity для перевірки ліквідного стану користувача. Це дозволяє зловмисникам маніпулювати своїми рахунками, потрапляючи в стан, який може бути ліквідований, і отримувати з цього прибуток.
У нормальних умовах функція checkLiquidity викликає модуль RiskManager, щоб забезпечити, що кількість Etoken у користувача більша за кількість Dtoken, щоб підтримувати здоровий стан рахунку. Однак функція donateToReserves пропускає цей критично важливий крок, створюючи можливості для атаки.
Уроки та поради
Ця подія ще раз підкреслила важливість безпеки аудитів смарт-контрактів. Для проектів, пов'язаних з кредитуванням, особливо слід звернути увагу на такі аспекти:
Команда проекту повинна провести всебічний і строгий аудит безпеки перед запуском контракту, щоб забезпечити безпеку та стабільність контракту. Одночасно, постійний моніторинг безпеки та своєчасне усунення вразливостей також є невід'ємними.
З розвитком децентралізованих фінансів подібні безпекові інциденти можуть продовжувати виникати. Розробники та команди проектів повинні залишатися на поготові, постійно навчатися та вдосконалюватися, щоб створити більш безпечну та надійну екосистему блокчейну.