Аналіз трьох основних ризиків безпеки в Децентралізованих фінансах: Термінові позики, маніпуляції з цінами та атаки повторного входу

Децентралізовані фінанси безпека вразливості та запобіжні заходи

Нещодавно один з експертів з безпеки поділився курсом з безпеки Децентралізованих фінансів для спільноти. Цей експерт оглянув значні інциденти безпеки, що сталися в індустрії Web3 за минулий рік, обговорив причини цих подій та способи їх уникнення, підсумував поширені вразливості безпеки смарт-контрактів та заходи запобігання, а також надав кілька рекомендацій щодо безпеки для проектів та користувачів.

Звичайні типи вразливостей DeFi включають в себе миттєві позики, маніпуляції з цінами, проблеми з функціональними правами, довільні зовнішні виклики, проблеми з функцією fallback, вразливості бізнес-логіки, витоки приватних ключів та атаки повторного входу тощо. У цій статті особливу увагу буде приділено трьом типам: миттєвим позикам, маніпуляціям з цінами та атакам повторного входу.

Cobo Децентралізовані фінанси безпеки (частина 2): Звичайні вразливості безпеки в DeFi та їх запобігання

Швидкий кредит

Швидкі кредити є інновацією в Децентралізованих фінансах, але також використовуються хакерами для атак. Зловмисники беруть в борг великі суми коштів через швидкі кредити, маніпулюючи цінами або атакуючи бізнес-логіку. Розробники повинні враховувати, чи призведе велика сума коштів до аномалій у функціонуванні контракту або може бути використана для отримання неправомірної винагороди.

Багато проектів Децентралізовані фінанси через проблеми з кодом або логікою легко піддаються атакам через миттєві позики. Наприклад, деякі проекти надають винагороди в залежності від володіння токенами в фіксований час, але зловмисники використовують миттєві позики для покупки великої кількості токенів, щоб отримати більшу частину винагороди. Інші проекти, які розраховують ціну через токени, також можуть бути під впливом миттєвих позик. Проектам слід бути обережними щодо цих проблем.

Ціновий контроль

Проблема маніпуляцій з цінами тісно пов'язана з闪电贷, основними є два випадки:

  1. При розрахунку ціни використовуються дані третьої сторони, але спосіб використання неправильний або відсутня перевірка, що призводить до навмисного маніпулювання ціною.

  2. Використання кількості токенів з певних адрес як змінної для обчислення, при цьому баланс токенів на цих адресах може тимчасово збільшуватися або зменшуватися.

Атака повторного входу

Основний ризик виклику зовнішніх контрактів полягає в тому, що вони можуть взяти під контроль потік управління, випадково змінюючи дані. Наприклад:

солідність відображення (address => uint) private userBalances;

функція withdrawBalance() публічна { uint amountToRemove = userBalances[msg.sender]; (bool успіху ) = msg.sender.call.value(amountToWithdraw)("" ); require(успіх); userBalances[msg.sender] = 0; }

Оскільки баланс користувача встановлюється в 0 лише наприкінці функції, повторні виклики все ще будуть успішними, що дозволяє багаторазово знімати баланс.

Форми атаки повторного входу різноманітні, можуть включати різні функції одного контракту або функції кількох контрактів. Для вирішення проблеми повторного входу слід звернути увагу на:

  1. Не тільки запобігає повторному входу єдиної функції
  2. Дотримуйтесь моделі Checks-Effects-Interactions при кодуванні
  3. Використовуйте перевірений модифікатор захисту від повторних викликів

Рекомендується використовувати перевірені практики безпеки, уникати повторного винаходу колеса. Нові рішення, розроблені самостійно, не мають достатньої перевірки, тому ймовірність виникнення проблем є вищою.

Рекомендації з безпеки

Рекомендації щодо безпеки від команди проекту

  1. Дотримуйтесь найкращих практик безпеки під час розробки контрактів
  2. Реалізація можливості оновлення та призупинення контракту
  3. Використання механізму тайм-локів
  4. Збільшити інвестиції в безпеку, створити вдосконалену систему безпеки
  5. Підвищити обізнаність усіх співробітників щодо безпеки
  6. Запобігання внутрішнім зловживанням, одночасно підвищуючи ефективність, зміцнювати управління ризиками
  7. Обережно вводьте сторонні залежності, за замовчуванням вважаючи, що верхні і нижні потоки небезпечні.

Як користувачам оцінити безпеку смарт-контрактів

  1. Чи є контракт відкритим кодом
  2. Чи використовує власник децентралізовану мультипідпис?
  3. Перевірте наявні угоди контракту
  4. Чи можна оновити контракт, чи є часовий замок
  5. Чи приймаються аудити від кількох установ, чи не є права власника занадто великими
  6. Зверніть увагу на надійність оракулів

Загалом, команди проекту та користувачі повинні підвищити обізнаність щодо безпеки та вжити необхідних заходів для зниження ризиків безпеки в Децентралізованих фінансах.

Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 7
  • Поділіться
Прокоментувати
0/400
RugResistantvip
· 13год тому
Ще один, хто прийшов обдурювати людей, як лохів, під виглядом запобігання.
Переглянути оригіналвідповісти на0
ChainDoctorvip
· 13год тому
Знову термінові позики на когось звалили провину, тьфу-тьфу.
Переглянути оригіналвідповісти на0
PessimisticOraclevip
· 13год тому
За кожною вразливістю стоїть спокуса великого прибутку.
Переглянути оригіналвідповісти на0
ParallelChainMaxivip
· 13год тому
Так багато вразливостей, будьте обережні, друзі.
Переглянути оригіналвідповісти на0
TokenGuruvip
· 13год тому
Майнінг періоду бачили стару вразливість, не будьте недбалими, друзі.
Переглянути оригіналвідповісти на0
Anon4461vip
· 13год тому
Не хвастайся, у кожного є свої недоліки.
Переглянути оригіналвідповісти на0
RektCoastervip
· 14год тому
Риба помре, а сітка порветься, але не програє mei людям і weiruan.
Переглянути оригіналвідповісти на0
  • Закріпити