Децентрализованные финансы Общие уязвимости безопасности и меры предосторожности
В последнее время один из экспертов по безопасности поделился с членами сообщества курсом по безопасности Децентрализованных финансов. Курс охватывает основные события безопасности, с которыми столкнулась индустрия Web3 за последний год, исследует причины этих событий и способы их предотвращения, обобщает распространённые уязвимости смарт-контрактов и меры предосторожности, а также предлагает некоторые советы по безопасности для разработчиков проектов и обычных пользователей.
Распространенные типы уязвимостей DeFi включают в себя флеш-кредиты, манипуляции с ценами, проблемы с правами доступа к функциям, произвольные внешние вызовы, проблемы с функцией обратного вызова, уязвимости бизнес-логики, утечку приватных ключей и атаки повторного входа. В данной статье будут подробно рассмотрены три типа: флеш-кредиты, манипуляции с ценами и атаки повторного входа.
Лимонный кредит
Мгновенные займы являются инновацией в Децентрализованных финансах, но также могут быть использованы хакерами. Злоумышленники обычно берут в долг большие суммы через мгновенные займы, чтобы манипулировать ценами или атаковать бизнес-логику. Разработчики должны учитывать, приведет ли большое количество средств к аномалиям в функционале контракта или возможно ли получить неправомерные вознаграждения, взаимодействуя с несколькими функциями в одной транзакции.
Многие проекты Децентрализованные финансы выглядят так, будто они предлагают высокую доходность, но уровень команд проекта варьируется. Некоторые проекты могут использовать купленный код, и даже если сам код не имеет уязвимостей, логически могут существовать проблемы. Например, некоторые проекты будут выдавать вознаграждения в фиксированное время на основе количества токенов у держателей, что может быть использовано злоумышленниками с использованием flash-кредита для покупки большого количества токенов и получения большей части вознаграждения в момент его выдачи.
Манипуляция ценами
Проблема манипуляции ценами тесно связана с кредитами на мгновенных займах, в основном из-за того, что некоторые параметры могут контролироваться пользователем при расчете цены. Существует два основных типа проблем:
При расчете цены используются данные третьих сторон, но неправильное использование или отсутствие проверки приводит к манипуляциям с ценой.
Использование количества токенов на некоторых адресах в качестве расчетной переменной, при этом баланс токенов на этих адресах может быть временно увеличен или уменьшен.
Атака повторного входа
Одним из основных рисков вызова внешних контрактов является то, что они могут захватить управление потоком и внести непредвиденные изменения в данные. Например, в функции вывода, если баланс пользователя устанавливается в 0 только в конце функции, то повторный (и последующие) вызовы все равно будут успешными, что приведет к дублирующему выводу.
Чтобы решить проблему повторного входа, необходимо обратить внимание на следующие моменты:
Необходимо предотвратить не только проблему повторного входа в одну функцию.
Следуйте модели Checks-Effects-Interactions при кодировании.
Используйте проверенный временем модификатор защиты от повторного входа.
Стоит отметить, что повторное создание колеса может привести к большим рискам. Использование хорошо проверенных лучших практик безопасности обычно безопаснее, чем разработка новых методов самостоятельно.
Рекомендации по безопасности для проекта
Следуйте лучшим практикам безопасности при разработке контрактов.
Реализовать возможность обновления и приостановки контрактов.
Использование механизма временной блокировки.
Увеличить инвестиции в безопасность и создать完善ную систему безопасности.
Повышение безопасности всех сотрудников.
Предотвращение внутренних злоупотреблений, одновременно повышая эффективность и усиливая управление рисками.
Осторожно вводите третьих лиц, по умолчанию предполагается, что вверх и вниз по потоку все небезопасно.
Как пользователю/поставщику ликвидности определить, безопасен ли смарт-контракт
Подтвердите, является ли контракт открытым.
Проверьте, использует ли владелец мультиподпись и является ли она децентрализованной.
Посмотреть уже существующую торговую ситуацию по контракту.
Убедитесь, что контракт является代理ным, может ли он быть обновлен и есть ли временная блокировка.
Проверьте, проводился ли аудит контракта несколькими учреждениями и не слишком ли велики полномочия владельца.
Обратите внимание на использование оракулов.
Обратив внимание на эти аспекты, пользователи могут лучше оценить безопасность смарт-контрактов и снизить вероятность участия в рискованных проектах.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
9 Лайков
Награда
9
6
Поделиться
комментарий
0/400
GateUser-a180694b
· 7ч назад
Срочные займы Ах, ах, ах Будут играть для лохов старые приятели?
Посмотреть ОригиналОтветить0
ContractCollector
· 7ч назад
Теперь Срочные займы действительно являются наиболее уязвимыми.
Посмотреть ОригиналОтветить0
AirdropChaser
· 7ч назад
Я сначала попробую, посмотреть, сколько неудачников в этот раз разыгрывают людей как лохов.
Посмотреть ОригиналОтветить0
BridgeTrustFund
· 7ч назад
Срочные займы снова подводят
Посмотреть ОригиналОтветить0
DeFiVeteran
· 7ч назад
Снова будут жертвы Срочных займов.
Посмотреть ОригиналОтветить0
MidnightSnapHunter
· 7ч назад
Атаки повторного входа – это старая тема, не так ли? Сейчас кто не знает об этом?
Анализ распространенных уязвимостей безопасности DeFi: предотвращение рисков Срочных займов, манипуляций с ценами и атак повторного входа
Децентрализованные финансы Общие уязвимости безопасности и меры предосторожности
В последнее время один из экспертов по безопасности поделился с членами сообщества курсом по безопасности Децентрализованных финансов. Курс охватывает основные события безопасности, с которыми столкнулась индустрия Web3 за последний год, исследует причины этих событий и способы их предотвращения, обобщает распространённые уязвимости смарт-контрактов и меры предосторожности, а также предлагает некоторые советы по безопасности для разработчиков проектов и обычных пользователей.
Распространенные типы уязвимостей DeFi включают в себя флеш-кредиты, манипуляции с ценами, проблемы с правами доступа к функциям, произвольные внешние вызовы, проблемы с функцией обратного вызова, уязвимости бизнес-логики, утечку приватных ключей и атаки повторного входа. В данной статье будут подробно рассмотрены три типа: флеш-кредиты, манипуляции с ценами и атаки повторного входа.
Лимонный кредит
Мгновенные займы являются инновацией в Децентрализованных финансах, но также могут быть использованы хакерами. Злоумышленники обычно берут в долг большие суммы через мгновенные займы, чтобы манипулировать ценами или атаковать бизнес-логику. Разработчики должны учитывать, приведет ли большое количество средств к аномалиям в функционале контракта или возможно ли получить неправомерные вознаграждения, взаимодействуя с несколькими функциями в одной транзакции.
Многие проекты Децентрализованные финансы выглядят так, будто они предлагают высокую доходность, но уровень команд проекта варьируется. Некоторые проекты могут использовать купленный код, и даже если сам код не имеет уязвимостей, логически могут существовать проблемы. Например, некоторые проекты будут выдавать вознаграждения в фиксированное время на основе количества токенов у держателей, что может быть использовано злоумышленниками с использованием flash-кредита для покупки большого количества токенов и получения большей части вознаграждения в момент его выдачи.
Манипуляция ценами
Проблема манипуляции ценами тесно связана с кредитами на мгновенных займах, в основном из-за того, что некоторые параметры могут контролироваться пользователем при расчете цены. Существует два основных типа проблем:
Атака повторного входа
Одним из основных рисков вызова внешних контрактов является то, что они могут захватить управление потоком и внести непредвиденные изменения в данные. Например, в функции вывода, если баланс пользователя устанавливается в 0 только в конце функции, то повторный (и последующие) вызовы все равно будут успешными, что приведет к дублирующему выводу.
Чтобы решить проблему повторного входа, необходимо обратить внимание на следующие моменты:
Стоит отметить, что повторное создание колеса может привести к большим рискам. Использование хорошо проверенных лучших практик безопасности обычно безопаснее, чем разработка новых методов самостоятельно.
Рекомендации по безопасности для проекта
Как пользователю/поставщику ликвидности определить, безопасен ли смарт-контракт
Обратив внимание на эти аспекты, пользователи могут лучше оценить безопасность смарт-контрактов и снизить вероятность участия в рискованных проектах.