Децентралізовані фінанси Загальні проблеми безпеки та запобіжні заходи
Нещодавно один експерт з безпеки провів для членів спільноти урок з безпеки Децентралізованих фінансів. Він оглянув значні інциденти безпеки, які сталися в індустрії Web3 за останній рік, обговорив причини їх виникнення та способи їх уникнення, підсумував звичайні вразливості безпеки смарт-контрактів та запобіжні заходи, а також дав кілька порад з безпеки для проектів та звичайних користувачів.
Звичайні типи вразливостей DeFi зазвичай включають в себе миттєві кредити, маніпуляцію цінами, проблеми з правами функцій, довільні зовнішні виклики, проблеми з функцією fallback, вразливості бізнес-логіки, витік приватних ключів, повторні атаки тощо. Нижче особливо розглядаються миттєві кредити, маніпуляція цінами та повторні атаки.
Швидкі кредити
Швидкі кредити самі по собі є інновацією в Децентралізованих фінансах, але їх використання хакерами може призвести до величезних втрат:
Зловмисники беруть велику суму грошей через флеш-кредит, маніпулюючи ціною, атакуючи бізнес-логіку тощо
Розробники повинні враховувати, чи не призведе велика сума коштів до аномалій у функціях контракту або чи не буде це використано для отримання неправомірного доходу.
Деякі проекти не врахували вплив швидких кредитів під час розробки функцій, що призвело до викрадення коштів.
Протягом останніх двох років виникло багато проблем, пов'язаних зі闪电贷. Деякі проекти виглядають дуже прибутковими, але насправді мають логічні вади, наприклад:
У встановлений час на основі обсягу позицій виділяються винагороди, які маніпулюються за допомогою флеш-кредитів для отримання великої кількості винагород.
Проекти, що розраховують ціну через токен, можуть бути під впливом миттєвих кредитів.
Команда проекту повинна бути обережною щодо цих питань.
Ціновий моніторинг
Проблема маніпуляцій цінами тісно пов'язана з闪电贷, існує два основні типи:
Використовуються сторонні дані для розрахунку ціни, але спосіб використання неправильний або відсутня перевірка
Використання кількості токенів з певних адрес як обчислювальної змінної, яка може бути тимчасово маніпульована
Атака повторного входу
Виклик зовнішнього контракту може призвести до захоплення контролю над потоком, що призведе до непередбачуваних змін даних. Типовий приклад атаки повторного входу:
солідність
відображення (address => uint) private userBalances;
function withdrawBalance() public {
uint amountToRemove = userBalances[msg.sender];
(bool успіху ) = msg.sender.call.value(amountToWithdraw)("" );
require(успіх);
userBalances[msg.sender] = 0;
}
Оскільки баланс користувача до останнього виклику функції залишається 0, повторні виклики можуть багаторазово знімати баланс.
Щоб вирішити проблему повторного входу, потрібно звернути увагу на:
Не тільки запобігання повторному входу одного функції
Дотримуйтеся моделі Checks-Effects-Interactions
Використовуйте перевірений модифікатор захисту від повторних викликів
Рекомендується використовувати зрілі найкращі практики безпеки, уникати повторного винаходу колеса.
Рекомендації з безпеки
До пропозицій до команди проекту:
Дотримуйтесь найкращих практик безпеки при розробці контрактів
Реалізація можливості оновлення та призупинення контракту
Використання тайм-локів
Збільшити інвестиції в безпеку, створити вдосконалену систему безпеки
Підвищення обізнаності всіх співробітників щодо безпеки
Запобігання внутрішнім зловживанням, підвищуючи ефективність, одночасно посилюючи управління ризиками.
Обережно вводьте третю сторону, за замовчуванням вважається, що верхні і нижні ланки не є безпечними.
Як користувачам визначити, чи безпечний смарт-контракт:
Перевірте, чи є контракт відкритим
Перевірте, чи власник використовує децентралізовані мультипідписи
Перегляньте вже наявні угоди за контрактом
Перевірте, чи можна оновити контракт, чи є часовий замок
Перевірте, чи приймаються аудити від кількох установ, чи є права Owner занадто великими.
Зверніть увагу на надійність оракулів
Отже, у сфері Децентралізованих фінансів, як проектам, так і звичайним користувачам, необхідно підвищити обізнаність щодо безпеки, вжити необхідних заходів безпеки, щоб знизити ризики та захистити активи.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
11 лайків
Нагородити
11
7
Репост
Поділіться
Прокоментувати
0/400
TooScaredToSell
· 08-11 10:27
Не кажіть стільки правил, прямо йдіть на ринок монет, це і є справжня справа.
Переглянути оригіналвідповісти на0
MysteryBoxBuster
· 08-11 08:22
Знову прикидаєшся, що розумієш термінові позики...
Переглянути оригіналвідповісти на0
GhostWalletSleuth
· 08-09 18:44
Шахрайство – це справжня чорна технологія
Переглянути оригіналвідповісти на0
CodeAuditQueen
· 08-09 18:43
Це всього лише уразливість веб1 ери, що змінила оболонку.
Переглянути оригіналвідповісти на0
MoonlightGamer
· 08-09 18:39
Хто сказав, що в DeFi немає нових ігор? Ось вони, будь ласка!
Переглянути оригіналвідповісти на0
HashBandit
· 08-09 18:36
брат втратив 50 eth через експлойд флешкредиту у 2021 році... досі сниться мені кошмари, якщо чесно
Аналіз поширених вразливостей безпеки в Децентралізованих фінансах: Термінові позики, маніпуляція цінами та запобігання атакам повторного входу
Децентралізовані фінанси Загальні проблеми безпеки та запобіжні заходи
Нещодавно один експерт з безпеки провів для членів спільноти урок з безпеки Децентралізованих фінансів. Він оглянув значні інциденти безпеки, які сталися в індустрії Web3 за останній рік, обговорив причини їх виникнення та способи їх уникнення, підсумував звичайні вразливості безпеки смарт-контрактів та запобіжні заходи, а також дав кілька порад з безпеки для проектів та звичайних користувачів.
Звичайні типи вразливостей DeFi зазвичай включають в себе миттєві кредити, маніпуляцію цінами, проблеми з правами функцій, довільні зовнішні виклики, проблеми з функцією fallback, вразливості бізнес-логіки, витік приватних ключів, повторні атаки тощо. Нижче особливо розглядаються миттєві кредити, маніпуляція цінами та повторні атаки.
Швидкі кредити
Швидкі кредити самі по собі є інновацією в Децентралізованих фінансах, але їх використання хакерами може призвести до величезних втрат:
Протягом останніх двох років виникло багато проблем, пов'язаних зі闪电贷. Деякі проекти виглядають дуже прибутковими, але насправді мають логічні вади, наприклад:
Команда проекту повинна бути обережною щодо цих питань.
Ціновий моніторинг
Проблема маніпуляцій цінами тісно пов'язана з闪电贷, існує два основні типи:
Атака повторного входу
Виклик зовнішнього контракту може призвести до захоплення контролю над потоком, що призведе до непередбачуваних змін даних. Типовий приклад атаки повторного входу:
солідність відображення (address => uint) private userBalances;
function withdrawBalance() public { uint amountToRemove = userBalances[msg.sender]; (bool успіху ) = msg.sender.call.value(amountToWithdraw)("" ); require(успіх); userBalances[msg.sender] = 0; }
Оскільки баланс користувача до останнього виклику функції залишається 0, повторні виклики можуть багаторазово знімати баланс.
Щоб вирішити проблему повторного входу, потрібно звернути увагу на:
Рекомендується використовувати зрілі найкращі практики безпеки, уникати повторного винаходу колеса.
Рекомендації з безпеки
До пропозицій до команди проекту:
Як користувачам визначити, чи безпечний смарт-контракт:
Отже, у сфері Децентралізованих фінансів, як проектам, так і звичайним користувачам, необхідно підвищити обізнаність щодо безпеки, вжити необхідних заходів безпеки, щоб знизити ризики та захистити активи.