Децентралізовані фінанси: загальні вразливості безпеки та заходи запобігання
Нещодавно один експерт з безпеки поділився своїми думками щодо безпеки Децентралізовані фінанси, оглянувши значні безпекові інциденти, які сталися в індустрії Web3 за минулий рік, обговоривши причини цих подій та способи їх уникнення, підсумувавши поширені вразливості смарт-контрактів та заходи їх запобігання, а також надавши деякі рекомендації щодо безпеки для проектів та користувачів.
Звичайні типи вразливостей DeFi включають миттєві позики, маніпуляції з цінами, проблеми з правами функцій, довільні зовнішні виклики, проблеми з функцією fallback, вразливості бізнес-логіки, витік приватних ключів, повторні атаки тощо. Нижче особливо розглядаються три типи: миттєві позики, маніпуляції з цінами та повторні атаки.
Лайтнінг-кредит
Швидкі позики є інновацією в Децентралізованих фінансах, але також використовуються хакерами для атак. Зловмисники беруть в борг великі суми коштів через швидкі позики, маніпулюючи цінами або атакуючи бізнес-логіку. Розробники повинні враховувати, чи можуть функції контракту аномально реагувати через великі суми коштів або бути використаними для отримання неправомірних винагород.
Багато проектів DeFi здаються високоприбутковими, але насправді рівень команди проектів варіюється. У деяких проектах код може бути купленим, навіть якщо сам код не має вразливостей, логічно все ще можуть бути проблеми. Наприклад, деякі проекти розподіляють винагороди в певний час на основі володіння токенами, але зловмисники використовують флеш-кредити для покупки великої кількості токенів та отримання більшості винагород.
Контроль цін
Проблема маніпуляції цінами тісно пов'язана з миттєвими позиками, головним чином через те, що параметри, що використовуються для розрахунку ціни, можуть контролюватися користувачами. Існує два основних типи проблем:
При розрахунку ціни використовуються дані третіх сторін, але спосіб використання неправильний або відсутня перевірка, що призводить до злонамереного маніпулювання ціною.
Використання кількості токенів з певних адрес як змінної для розрахунків, при цьому баланс токенів на цих адресах може бути тимчасово збільшений або зменшений.
Атака повторного входу
Одним з основних ризиків виклику зовнішніх контрактів є те, що вони можуть захопити контрольний потік і внести непередбачені зміни в дані. Наприклад:
солідність
відображення (address => uint) private userBalances;
функція withdrawBalance() публічна {
uint amountToRemove = userBalances[msg.sender];
(bool успіху ) = msg.sender.call.value(amountToWithdraw)("" );
require(success);
userBalances[msg.sender] = 0;
}
Оскільки баланс користувача обнулюється лише в кінці функції, повторні виклики все ще будуть успішними, що дозволяє багаторазово знімати баланс.
Для вирішення проблеми повторного входу необхідно звернути увагу на:
Не лише запобігання повторному входу одного функції
Дотримуйтесь моделі Checks-Effects-Interactions
Використовуйте перевірений модифікатор для захисту від повторних викликів
Атаки повторного входу мають різноманітні форми і можуть включати кілька функцій або контрактів, тому їх вирішення є досить складним. Найкраще використовувати вже перевірені найкращі практики, а не повторно винаходити колесо.
Рекомендації щодо безпеки від команди проекту
Дотримуйтесь найкращих практик безпеки при розробці контрактів
Реалізація функцій оновлення та призупинення контракту
Використання механізму таймлока
Збільшити інвестиції в безпеку, створити вдосконалену систему безпеки
Підвищити обізнаність усіх співробітників щодо безпеки
Запобігання внутрішнім зловживанням, зміцнюючи контроль ризиків під час підвищення ефективності
Перевірте, чи використовує Owner мультипідпис, чи є мультипідпис децентралізованим.
Перегляньте вже існуючі угоди контракту
Визначте, чи є контракт代理合约, чи можна його оновити, чи є у нього тайм-лок.
Підтвердіть, чи контракт був перевірений кількома організаціями, чи не є повноваження власника занадто великими.
Зверніть увагу на використання оракулів
Отже, у сфері Децентралізованих фінансів безпекові питання є особливо важливими. Проектні команди повинні приділяти увагу інвестиціям у безпеку, а користувачі також повинні бути насторожі та обережно брати участь. Тільки спільними зусиллями можна побудувати більш безпечну та надійну екосистему Децентралізованих фінансів.
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.
9 лайків
Нагородити
9
5
Поділіться
Прокоментувати
0/400
BoredRiceBall
· 2год тому
Не слухай, що він говорить, ще одне шахрайство.
Переглянути оригіналвідповісти на0
SchrodingerProfit
· 07-12 06:52
Чи є зараз ще невдахи, яких не обдурили людей, як лохів?
Переглянути оригіналвідповісти на0
ContractSurrender
· 07-12 06:50
Знову великий посібник з обману для дурнів!
Переглянути оригіналвідповісти на0
SnapshotDayLaborer
· 07-12 06:50
Обов'язково слід серйозно остерігатися, добре, що я швидко бігаю.
Децентралізовані фінанси безпеки: типові уразливості та посібник з їх запобігання
Децентралізовані фінанси: загальні вразливості безпеки та заходи запобігання
Нещодавно один експерт з безпеки поділився своїми думками щодо безпеки Децентралізовані фінанси, оглянувши значні безпекові інциденти, які сталися в індустрії Web3 за минулий рік, обговоривши причини цих подій та способи їх уникнення, підсумувавши поширені вразливості смарт-контрактів та заходи їх запобігання, а також надавши деякі рекомендації щодо безпеки для проектів та користувачів.
Звичайні типи вразливостей DeFi включають миттєві позики, маніпуляції з цінами, проблеми з правами функцій, довільні зовнішні виклики, проблеми з функцією fallback, вразливості бізнес-логіки, витік приватних ключів, повторні атаки тощо. Нижче особливо розглядаються три типи: миттєві позики, маніпуляції з цінами та повторні атаки.
Лайтнінг-кредит
Швидкі позики є інновацією в Децентралізованих фінансах, але також використовуються хакерами для атак. Зловмисники беруть в борг великі суми коштів через швидкі позики, маніпулюючи цінами або атакуючи бізнес-логіку. Розробники повинні враховувати, чи можуть функції контракту аномально реагувати через великі суми коштів або бути використаними для отримання неправомірних винагород.
Багато проектів DeFi здаються високоприбутковими, але насправді рівень команди проектів варіюється. У деяких проектах код може бути купленим, навіть якщо сам код не має вразливостей, логічно все ще можуть бути проблеми. Наприклад, деякі проекти розподіляють винагороди в певний час на основі володіння токенами, але зловмисники використовують флеш-кредити для покупки великої кількості токенів та отримання більшості винагород.
Контроль цін
Проблема маніпуляції цінами тісно пов'язана з миттєвими позиками, головним чином через те, що параметри, що використовуються для розрахунку ціни, можуть контролюватися користувачами. Існує два основних типи проблем:
При розрахунку ціни використовуються дані третіх сторін, але спосіб використання неправильний або відсутня перевірка, що призводить до злонамереного маніпулювання ціною.
Використання кількості токенів з певних адрес як змінної для розрахунків, при цьому баланс токенів на цих адресах може бути тимчасово збільшений або зменшений.
Атака повторного входу
Одним з основних ризиків виклику зовнішніх контрактів є те, що вони можуть захопити контрольний потік і внести непередбачені зміни в дані. Наприклад:
солідність відображення (address => uint) private userBalances;
функція withdrawBalance() публічна { uint amountToRemove = userBalances[msg.sender]; (bool успіху ) = msg.sender.call.value(amountToWithdraw)("" ); require(success); userBalances[msg.sender] = 0; }
Оскільки баланс користувача обнулюється лише в кінці функції, повторні виклики все ще будуть успішними, що дозволяє багаторазово знімати баланс.
Для вирішення проблеми повторного входу необхідно звернути увагу на:
Атаки повторного входу мають різноманітні форми і можуть включати кілька функцій або контрактів, тому їх вирішення є досить складним. Найкраще використовувати вже перевірені найкращі практики, а не повторно винаходити колесо.
Рекомендації щодо безпеки від команди проекту
Як користувачам оцінити безпеку смарт-контрактів
Отже, у сфері Децентралізованих фінансів безпекові питання є особливо важливими. Проектні команди повинні приділяти увагу інвестиціям у безпеку, а користувачі також повинні бути насторожі та обережно брати участь. Тільки спільними зусиллями можна побудувати більш безпечну та надійну екосистему Децентралізованих фінансів.