Анализ распространенных уязвимостей безопасности в Децентрализованных финансах: защита от Срочных займов, манипуляций с ценами и атак повторного входа

robot
Генерация тезисов в процессе

Децентрализованные финансы 常见安全漏洞及预防措施

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

Распространенные типы уязвимостей DeFi обычно включают в себя: флеш-займы, манипуляции с ценами, проблемы с правами функций, произвольные внешние вызовы, проблемы с функцией fallback, уязвимости бизнес-логики, утечка приватных ключей, повторный вход и др. Далее мы подробно рассмотрим флеш-займы, манипуляции с ценами и атаки повторного входа.

Cobo Децентрализованные финансы безопасность урок (часть 2): Часто встречающиеся уязвимости безопасности DeFi и их предотвращение

Линейный кредит

Флеш-кредиты сами по себе являются инновацией в области Децентрализованных финансов, но при использовании хакерами могут вызвать огромные потери:

  • Атакующий берет взаймы большие суммы денег через кредитование под залог, манипулирует ценами, атакует бизнес-логику и т.д.
  • Разработчики должны учитывать, может ли функциональность контракта вызвать аномалии из-за крупных средств или быть использованной для получения неправомерной выгоды.
  • Некоторые проекты не учли влияние моментальных займов при разработке функций, что привело к краже средств.

За последние два года возникло много проблем, связанных с займами через Flash Loan. Некоторые проекты выглядят очень прибыльными, но на самом деле имеют логические уязвимости, например:

  • Награды распределяются в фиксированное время в зависимости от объема позиций, которые были манипулированы с помощью.flash-займов для получения больших наград.
  • Проекты, которые вычисляют цену через токены, могут подвергаться влиянию цен при использованииflash-лона.

Проектная команда должна быть настороже в отношении этих вопросов.

Манипуляции с ценами

Проблема манипуляций с ценами тесно связана с flash-кредитами, которые можно разделить на два основных типа:

  1. При расчете цены используются данные третьих сторон, но способ использования неправильный или отсутствует проверка.
  2. Используйте количество токенов на некоторых адресах в качестве расчетного переменного, которое может быть временно манипулировано.

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

Вызов внешнего контракта может привести к захвату управления, что приведет к непредвиденным изменениям данных. Типичный пример атаки повторного входа:

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

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

Поскольку баланс пользователя устанавливается в 0 только в конце функции, повторные вызовы могут многократно извлекать баланс.

Решение проблемы повторного входа требует внимания:

  1. Не только предотвращает повторный вход одной функции
  2. Следуйте модели Проверки-Эффекты-Взаимодействия
  3. Используйте проверенный модификатор защиты от повторного входа

Рекомендуется использовать зрелые лучшие практики безопасности, избегая изобретения колеса.

Рекомендации по безопасности

Предложения к команде проекта:

  1. Следуйте лучшим практикам безопасности при разработке контрактов
  2. Реализовать возможность обновления и приостановки контрактов
  3. Используйте временной замок
  4. Увеличение инвестиций в безопасность и создание完善ной системы безопасности
  5. Повышение безопасности всех сотрудников
  6. Предотвращение внутренних злоупотреблений, повышение эффективности в то же время улучшая управление рисками.
  7. Осторожно вводите третьих лиц, по умолчанию верхний и нижний поток небезопасен

Как пользователю определить, безопасен ли смарт-контракт:

  1. Проверьте, является ли контракт открытым исходным кодом
  2. Проверьте, использует ли владелец децентрализованное многофакторное управление.
  3. Просмотреть существующие сделки по контракту
  4. Проверьте, является ли контракт обновляемым и есть ли временной замок.
  5. Проверьте, приняты ли аудиты несколькими организациями, и не слишком ли велики права владельца.
  6. Обратите внимание на надежность оракула

В общем, в области Децентрализованных финансов, как проектам, так и обычным пользователям необходимо повысить осведомленность о безопасности, принять необходимые меры безопасности, чтобы снизить риски и защитить безопасность активов.

DEFI-6.17%
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 7
  • Репост
  • Поделиться
комментарий
0/400
TooScaredToSellvip
· 08-11 10:27
Не говори так много правил, просто зайди на токен-рынок, вот что действительно важно.
Посмотреть ОригиналОтветить0
MysteryBoxBustervip
· 08-11 08:22
Снова пытаешься понять Срочные займы...
Посмотреть ОригиналОтветить0
GhostWalletSleuthvip
· 08-09 18:44
Мошенничество – это настоящая черная технология.
Посмотреть ОригиналОтветить0
CodeAuditQueenvip
· 08-09 18:43
Это всего лишь уязвимость внедрения эпохи web1, сменившая оболочку.
Посмотреть ОригиналОтветить0
MoonlightGamervip
· 08-09 18:39
Кто сказал, что в DeFi нет новых способов игры? Вот они!
Посмотреть ОригиналОтветить0
HashBanditvip
· 08-09 18:36
бро потерял 50 эфиров из-за эксплойта флеш-кредита в 2021 году... до сих пор снится мне ночами, если честно
Посмотреть ОригиналОтветить0
OneBlockAtATimevip
· 08-09 18:16
Снова будут играть для лохов.
Посмотреть ОригиналОтветить0
  • Закрепить