Децентралізовані фінанси безпеки: повний аналіз поширених уразливостей та стратегій захисту

robot
Генерація анотацій у процесі

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

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

Звичайні типи вразливостей 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. Зверніть увагу на безпеку оракулів

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

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

DEFI6.81%
Переглянути оригінал
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
  • Нагородити
  • 6
  • Поділіться
Прокоментувати
0/400
BearMarketBuildervip
· 2год тому
Цей баг виправили, а новий з'явився. Коли ж це закінчиться?
Переглянути оригіналвідповісти на0
BackrowObservervip
· 2год тому
Яка користь від того, що не вмієш розробляти, якщо тебе зламали?
Переглянути оригіналвідповісти на0
NFT_Therapyvip
· 3год тому
Контракт написаний не міцно, Хакер не втече.
Переглянути оригіналвідповісти на0
PhantomMinervip
· 3год тому
Цих багів занадто багато, невдахи якось справляються з хакерами.
Переглянути оригіналвідповісти на0
consensus_whisperervip
· 3год тому
Знову будемо говорити про Децентралізовані фінанси безпеку.
Переглянути оригіналвідповісти на0
WalletManagervip
· 3год тому
Подивившись на аудит коду, навіть холодний гаманець резервного копіювання здається недостатньо безпечним, вразливість повторного входу - це занадто глибока вода!
Переглянути оригіналвідповісти на0
  • Закріпити