Децентралізовані фінанси поширені вразливості безпеки та заходи запобігання
Нещодавно один експерт з безпеки поділився з членами спільноти уроком з безпеки DeFi. Експерт оглянув значні події безпеки, з якими зіткнулася галузь Web3 протягом останнього року, обговорив причини цих подій та способи їх уникнення, підсумував поширені вразливості смарт-контрактів та заходи запобігання, а також надав проєктам і звичайним користувачам кілька порад щодо безпеки.
Звичайні типи вразливостей у DeFi в основному включають миттєві позики, маніпуляції з цінами, проблеми з правами функцій, довільні зовнішні виклики, проблеми з функцією fallback, вразливості бізнес-логіки, витік приватних ключів і атаки повторного входу. У цій статті буде зосереджено увагу на трьох типах: миттєві позики, маніпуляції з цінами та атаки повторного входу.
Швидкий кредит
Швидкі кредити є інновацією в Децентралізованих фінансах, але також часто використовуються зловмисниками. Зловмисники позичають величезні суми коштів через швидкі кредити, щоб маніпулювати цінами або атакувати бізнес-логіку. Розробники повинні враховувати, чи можуть функції контракту викликати аномалії через великі суми коштів або бути використані для отримання неправомірної вигоди.
Багато проектів Децентралізовані фінанси виглядають дуже прибутковими, але насправді рівень команди проекту неоднаковий. Деякі проекти можуть купувати свій код, навіть якщо сам код не містить вразливостей, логічно можуть виникати проблеми. Наприклад, деякі проекти виплачують винагороду в певний час залежно від кількості токенів, що належать тримачам, але зловмисники використовують флеш-кредити, щоб купити велику кількість токенів, отримуючи більшу частину прибутку під час виплати винагород.
Маніпуляція цінами
Проблема маніпуляції цінами тісно пов'язана з миттєвими кредитами, головним чином через те, що деякі параметри, які використовуються для розрахунку цін, можуть контролюватися користувачами. Існує два основних типи проблем:
При розрахунку ціни використовуються дані третьої сторони, але спосіб використання є неправильним або відсутня перевірка, що призводить до зловмисного маніпулювання ціною.
Використання кількості токенів з певних адрес як змінної для розрахунку, при цьому баланс токенів на цих адресах може тимчасово збільшуватися або зменшуватися.
Атака повторного входу
Атака повторного входу є одним з основних ризиків, які можуть виникнути при виклику зовнішніх контрактів. Зловмисник може перехопити контрольний потік і внести неочікувані зміни в дані. Наприклад:
солідність
відображення (address => uint) private userBalances;
функція withdrawBalance() публічна {
uint amountToRemove = userBalances[msg.sender];
(bool успіху ) = msg.sender.call.value(amountToWithdraw)("" );
require(успіх);
userBalances[msg.sender] = 0;
}
У цьому прикладі, оскільки баланс користувача встановлюється в 0 лише в кінці функції, зловмисник може знову викликати цю функцію після успішного першого виклику, що дозволяє багаторазово знімати баланс.
Щоб вирішити проблему повторного входу, слід звернути увагу на наступні пункти:
Необхідно не лише запобігти проблемі повторного входу для єдиної функції;
Дотримуйтесь моделі Checks-Effects-Interactions під час кодування;
Використовуйте перевірений часом модифікатор для запобігання повторним викликам.
Типовим випадком атаки повторного входу є інцидент з Omni Protocol. У цій атаці угоди, подані зловмисником, який виявив вразливість, були перехоплені іншими хакерами та виконані раніше, що призвело до того, що первісний зловмисник отримав лише частину прибутку. Це підкреслює характеристику "темного лісу" в екосистемі Web3, де зловмисники можуть бути один для одного здобиччю.
Рекомендації з безпеки
Рекомендації з безпеки для проєкту
Дотримуйтесь найкращих практик безпеки під час розробки контрактів.
Реалізувати можливості оновлення та призупинення контракту.
Використання механізму тимчасового заморожування.
Збільшити інвестиції в безпеку, створити досконалу систему безпеки.
Підвищити обізнаність усіх співробітників про безпеку.
Запобігання внутрішнім злочинам, одночасно підвищуючи ефективність і зміцнюючи управління ризиками.
Обережно впроваджуйте сторонні послуги, дотримуючись принципу "за замовчуванням вгору і вниз по течії небезпечні".
Як користувач/LP визначити, чи безпечний смарт-контракт
Перевірте, чи є контракт відкритим.
Перевірте, чи використовує Owner децентралізований багато підписний механізм.
Перегляньте вже існуючі交易情况 контракту.
Підтвердьте, чи є контракт代理合约, чи можна його оновити, чи є таймер.
Перевірте, чи контракт проходив аудит кількома установами, оцініть, чи не є повноваження Owner занадто великими.
Зверніть увагу на вибір і використання оракулів.
Отже, у сфері Децентралізованих фінансів безпека завжди є одним із найважливіших аспектів. Незалежно від того, чи це розробники проекту, чи звичайні користувачі, усі повинні залишатися вкрай обережними та вживати відповідних заходів безпеки, щоб знизити ризики та забезпечити безпеку активів.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
14 лайків
Нагородити
14
7
Поділіться
Прокоментувати
0/400
TokenomicsTrapper
· 7год тому
просто ще один день спостереження за тим, як дегени потрапляють у пастку від тих самих старих експлойтів... назвав цей патерн кілька місяців тому, якщо чесно
Переглянути оригіналвідповісти на0
DegenWhisperer
· 7год тому
І чорний, і білий все зрозуміло
Переглянути оригіналвідповісти на0
degenonymous
· 7год тому
Знову бачимо, що смартконтракти попали в пастку.
Переглянути оригіналвідповісти на0
BlockchainFries
· 8год тому
Прокладка дірок півдня, краще вже піти на доставку їжі.
Переглянути оригіналвідповісти на0
Ser_This_Is_A_Casino
· 8год тому
decentralized finance дійсно є казино, якщо втрачати, то втрачати.
Огляд вразливостей безпеки DeFi: аналіз ризиків термінових позик, маніпуляцій з цінами та повторних атак.
Децентралізовані фінанси поширені вразливості безпеки та заходи запобігання
Нещодавно один експерт з безпеки поділився з членами спільноти уроком з безпеки DeFi. Експерт оглянув значні події безпеки, з якими зіткнулася галузь Web3 протягом останнього року, обговорив причини цих подій та способи їх уникнення, підсумував поширені вразливості смарт-контрактів та заходи запобігання, а також надав проєктам і звичайним користувачам кілька порад щодо безпеки.
Звичайні типи вразливостей у DeFi в основному включають миттєві позики, маніпуляції з цінами, проблеми з правами функцій, довільні зовнішні виклики, проблеми з функцією fallback, вразливості бізнес-логіки, витік приватних ключів і атаки повторного входу. У цій статті буде зосереджено увагу на трьох типах: миттєві позики, маніпуляції з цінами та атаки повторного входу.
Швидкий кредит
Швидкі кредити є інновацією в Децентралізованих фінансах, але також часто використовуються зловмисниками. Зловмисники позичають величезні суми коштів через швидкі кредити, щоб маніпулювати цінами або атакувати бізнес-логіку. Розробники повинні враховувати, чи можуть функції контракту викликати аномалії через великі суми коштів або бути використані для отримання неправомірної вигоди.
Багато проектів Децентралізовані фінанси виглядають дуже прибутковими, але насправді рівень команди проекту неоднаковий. Деякі проекти можуть купувати свій код, навіть якщо сам код не містить вразливостей, логічно можуть виникати проблеми. Наприклад, деякі проекти виплачують винагороду в певний час залежно від кількості токенів, що належать тримачам, але зловмисники використовують флеш-кредити, щоб купити велику кількість токенів, отримуючи більшу частину прибутку під час виплати винагород.
Маніпуляція цінами
Проблема маніпуляції цінами тісно пов'язана з миттєвими кредитами, головним чином через те, що деякі параметри, які використовуються для розрахунку цін, можуть контролюватися користувачами. Існує два основних типи проблем:
Атака повторного входу
Атака повторного входу є одним з основних ризиків, які можуть виникнути при виклику зовнішніх контрактів. Зловмисник може перехопити контрольний потік і внести неочікувані зміни в дані. Наприклад:
солідність відображення (address => uint) private userBalances;
функція withdrawBalance() публічна { uint amountToRemove = userBalances[msg.sender]; (bool успіху ) = msg.sender.call.value(amountToWithdraw)("" ); require(успіх); userBalances[msg.sender] = 0; }
У цьому прикладі, оскільки баланс користувача встановлюється в 0 лише в кінці функції, зловмисник може знову викликати цю функцію після успішного першого виклику, що дозволяє багаторазово знімати баланс.
Щоб вирішити проблему повторного входу, слід звернути увагу на наступні пункти:
Типовим випадком атаки повторного входу є інцидент з Omni Protocol. У цій атаці угоди, подані зловмисником, який виявив вразливість, були перехоплені іншими хакерами та виконані раніше, що призвело до того, що первісний зловмисник отримав лише частину прибутку. Це підкреслює характеристику "темного лісу" в екосистемі Web3, де зловмисники можуть бути один для одного здобиччю.
Рекомендації з безпеки
Рекомендації з безпеки для проєкту
Як користувач/LP визначити, чи безпечний смарт-контракт
Отже, у сфері Децентралізованих фінансів безпека завжди є одним із найважливіших аспектів. Незалежно від того, чи це розробники проекту, чи звичайні користувачі, усі повинні залишатися вкрай обережними та вживати відповідних заходів безпеки, щоб знизити ризики та забезпечити безпеку активів.