Недавно один из экспертов по безопасности провел для членов сообщества урок по безопасности в области Децентрализованные финансы. Он рассмотрел значительные инциденты безопасности, с которыми столкнулась индустрия Web3 за последний год, обсудил причины их возникновения и способы их предотвращения, обобщил распространенные уязвимости смарт-контрактов и меры предосторожности, а также дал некоторые советы по безопасности для проектов и обычных пользователей.
Распространенные типы уязвимостей DeFi обычно включают в себя: флеш-займы, манипуляции с ценами, проблемы с правами функций, произвольные внешние вызовы, проблемы с функцией fallback, уязвимости бизнес-логики, утечка приватных ключей, повторный вход и др. Далее мы подробно рассмотрим флеш-займы, манипуляции с ценами и атаки повторного входа.
Линейный кредит
Флеш-кредиты сами по себе являются инновацией в области Децентрализованных финансов, но при использовании хакерами могут вызвать огромные потери:
Атакующий берет взаймы большие суммы денег через кредитование под залог, манипулирует ценами, атакует бизнес-логику и т.д.
Разработчики должны учитывать, может ли функциональность контракта вызвать аномалии из-за крупных средств или быть использованной для получения неправомерной выгоды.
Некоторые проекты не учли влияние моментальных займов при разработке функций, что привело к краже средств.
За последние два года возникло много проблем, связанных с займами через Flash Loan. Некоторые проекты выглядят очень прибыльными, но на самом деле имеют логические уязвимости, например:
Награды распределяются в фиксированное время в зависимости от объема позиций, которые были манипулированы с помощью.flash-займов для получения больших наград.
Проекты, которые вычисляют цену через токены, могут подвергаться влиянию цен при использованииflash-лона.
Проектная команда должна быть настороже в отношении этих вопросов.
Манипуляции с ценами
Проблема манипуляций с ценами тесно связана с flash-кредитами, которые можно разделить на два основных типа:
При расчете цены используются данные третьих сторон, но способ использования неправильный или отсутствует проверка.
Используйте количество токенов на некоторых адресах в качестве расчетного переменного, которое может быть временно манипулировано.
Атака повторного входа
Вызов внешнего контракта может привести к захвату управления, что приведет к непредвиденным изменениям данных. Типичный пример атаки повторного входа:
Поскольку баланс пользователя устанавливается в 0 только в конце функции, повторные вызовы могут многократно извлекать баланс.
Решение проблемы повторного входа требует внимания:
Не только предотвращает повторный вход одной функции
Следуйте модели Проверки-Эффекты-Взаимодействия
Используйте проверенный модификатор защиты от повторного входа
Рекомендуется использовать зрелые лучшие практики безопасности, избегая изобретения колеса.
Рекомендации по безопасности
Предложения к команде проекта:
Следуйте лучшим практикам безопасности при разработке контрактов
Реализовать возможность обновления и приостановки контрактов
Используйте временной замок
Увеличение инвестиций в безопасность и создание完善ной системы безопасности
Повышение безопасности всех сотрудников
Предотвращение внутренних злоупотреблений, повышение эффективности в то же время улучшая управление рисками.
Осторожно вводите третьих лиц, по умолчанию верхний и нижний поток небезопасен
Как пользователю определить, безопасен ли смарт-контракт:
Проверьте, является ли контракт открытым исходным кодом
Проверьте, использует ли владелец децентрализованное многофакторное управление.
Просмотреть существующие сделки по контракту
Проверьте, является ли контракт обновляемым и есть ли временной замок.
Проверьте, приняты ли аудиты несколькими организациями, и не слишком ли велики права владельца.
Обратите внимание на надежность оракула
В общем, в области Децентрализованных финансов, как проектам, так и обычным пользователям необходимо повысить осведомленность о безопасности, принять необходимые меры безопасности, чтобы снизить риски и защитить безопасность активов.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании 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
Это всего лишь уязвимость внедрения эпохи web1, сменившая оболочку.
Посмотреть ОригиналОтветить0
MoonlightGamer
· 08-09 18:39
Кто сказал, что в DeFi нет новых способов игры? Вот они!
Посмотреть ОригиналОтветить0
HashBandit
· 08-09 18:36
бро потерял 50 эфиров из-за эксплойта флеш-кредита в 2021 году... до сих пор снится мне ночами, если честно
Анализ распространенных уязвимостей безопасности в Децентрализованных финансах: защита от Срочных займов, манипуляций с ценами и атак повторного входа
Децентрализованные финансы 常见安全漏洞及预防措施
Недавно один из экспертов по безопасности провел для членов сообщества урок по безопасности в области Децентрализованные финансы. Он рассмотрел значительные инциденты безопасности, с которыми столкнулась индустрия Web3 за последний год, обсудил причины их возникновения и способы их предотвращения, обобщил распространенные уязвимости смарт-контрактов и меры предосторожности, а также дал некоторые советы по безопасности для проектов и обычных пользователей.
Распространенные типы уязвимостей DeFi обычно включают в себя: флеш-займы, манипуляции с ценами, проблемы с правами функций, произвольные внешние вызовы, проблемы с функцией fallback, уязвимости бизнес-логики, утечка приватных ключей, повторный вход и др. Далее мы подробно рассмотрим флеш-займы, манипуляции с ценами и атаки повторного входа.
Линейный кредит
Флеш-кредиты сами по себе являются инновацией в области Децентрализованных финансов, но при использовании хакерами могут вызвать огромные потери:
За последние два года возникло много проблем, связанных с займами через Flash Loan. Некоторые проекты выглядят очень прибыльными, но на самом деле имеют логические уязвимости, например:
Проектная команда должна быть настороже в отношении этих вопросов.
Манипуляции с ценами
Проблема манипуляций с ценами тесно связана с flash-кредитами, которые можно разделить на два основных типа:
Атака повторного входа
Вызов внешнего контракта может привести к захвату управления, что приведет к непредвиденным изменениям данных. Типичный пример атаки повторного входа:
солидность отображение (address => uint) private userBalances;
функция withdrawBalance() публичная { uint amountToWithdraw = userBalances[msg.sender]; (bool успех, ) = msg.sender.call.value(amountToWithdraw)("" ); require(успех); userBalances[msg.sender] = 0; }
Поскольку баланс пользователя устанавливается в 0 только в конце функции, повторные вызовы могут многократно извлекать баланс.
Решение проблемы повторного входа требует внимания:
Рекомендуется использовать зрелые лучшие практики безопасности, избегая изобретения колеса.
Рекомендации по безопасности
Предложения к команде проекта:
Как пользователю определить, безопасен ли смарт-контракт:
В общем, в области Децентрализованных финансов, как проектам, так и обычным пользователям необходимо повысить осведомленность о безопасности, принять необходимые меры безопасности, чтобы снизить риски и защитить безопасность активов.