Распространенные уязвимости безопасности в Децентрализованных финансах и меры предосторожности
В последнее время один из экспертов по безопасности поделился с членами сообщества темами, связанными с безопасностью в Децентрализованных финансах. Этот эксперт рассмотрел значительные события безопасности, с которыми столкнулась индустрия Web3 за последний год, углубился в причины этих событий и способы их предотвращения, обобщил распространенные уязвимости смарт-контрактов и меры предосторожности, а также дал некоторые советы по безопасности для проектных команд и обычных пользователей.
Основные типы уязвимостей DeFi включают в себя: флеш-кредиты, манипуляции с ценами, проблемы с правами функций, произвольные внешние вызовы, проблемы с функцией обратного вызова, уязвимости в бизнес-логике, утечка приватных ключей и атаки повторного входа. В данной статье подробно рассматриваются флеш-кредиты, манипуляции с ценами и атаки повторного входа.
Мгновенный заём
Флеш-займы являются инновацией в области Децентрализованных финансов, но также часто используются хакерами. Нападающие могут взять в долг большие суммы через флеш-займ, манипулировать ценами или атаковать бизнес-логику. Разработчики должны учитывать, приведут ли огромные суммы денег к аномалиям в функциональности контрактов, или будут использованы в одной транзакции для взаимодействия с несколькими функциями для получения неправомерной выгоды.
Многие проекты Децентрализованные финансы кажутся очень прибыльными, но уровень команд проектов сильно различается. Даже если в коде нет уязвимостей, логически могут существовать проблемы. Например, некоторые проекты выделяют награды в фиксированное время в зависимости от объема держания, но злоумышленники могут использовать флеш-кредиты для покупки большого количества токенов, получая большую часть прибыли во время распределения награды. Есть также проекты, которые рассчитывают цену через токены, и они также могут быть подвержены влиянию флеш-кредитов. Команды проектов должны быть настороже по поводу этих проблем.
Манипуляция ценами
Проблема манипуляции ценами тесно связана с flash-кредитами, в основном из-за того, что некоторые параметры могут контролироваться пользователями при вычислении цен. Существуют два распространенных случая:
При расчете цены используются данные третьих сторон, но неправильное использование или отсутствие проверки приводит к манипуляциям с ценой.
Используйте баланс токенов определенных адресов в качестве вычислительной переменной, при этом количество токенов на этих адресах может временно увеличиваться или уменьшаться.
Атака повторного входа
Одним из основных рисков вызова внешних контрактов является то, что они могут перехватить управление потоком и внести непредвиденные изменения в данные. Например:
Поскольку баланс пользователя устанавливается в 0 только в конце функции, повторные вызовы по-прежнему будут успешными и будут неоднократно извлекать баланс.
Существуют различные формы атак повторного входа, которые могут затрагивать разные функции одного и того же контракта или функции нескольких контрактов. При решении проблемы повторного входа необходимо обратить внимание на:
Не только предотвращает проблему повторного входа одной функции
Кодирование в соответствии с моделью Checks-Effects-Interactions
Используйте проверенный модификатор защиты от повторного входа
Лучше избегать дублирования усилий и использовать зрелые лучшие практики безопасности в отрасли. Новые "колеса" часто недостаточно проверены, и вероятность возникновения проблем у них обычно выше, чем у проверенных решений.
Рекомендации по безопасности
Рекомендации по безопасности от команды проекта
Следуйте лучшим практикам безопасности при разработке контрактов
Проектирование обновляемых и приостанавливаемых контрактов: помогает своевременно обнаруживать и снижать потери от атак.
Использование временной блокировки: предоставление буферного периода для выявления и решения потенциальных проблем
Увеличьте инвестиции в безопасность, создайте完善ную систему безопасности: безопасность является системной работой и не ограничивается аудитом контрактов.
Повышение безопасности всех сотрудников: многие атаки используют человеческие слабости, повышение бдительности может избежать многих проблем.
Профилактика внутренних злоупотреблений, повышение эффективности при усилении управления рисками: например, использование мультиподписей, временных замков и т.д.
Осторожно вводите третьи стороны: необходимо проводить проверку безопасности как вверх, так и вниз по цепочке, особенно для неоткрытых контрактов.
Способы оценки безопасности смарт-контрактов пользователями/пулом ликвидности
Проверьте, является ли контракт открытым: не участвуйте в проектах, которые не являются открытыми.
Подтвердите, использует ли владелец децентрализованную мультиподпись.
Посмотреть уже существующую торговую ситуацию по контракту: время развертывания, количество взаимодействий и т.д.
Проверьте, является ли контракт代理ным, можно ли его обновить, есть ли временная блокировка
Подтвердите, проходил ли контракт аудит у нескольких учреждений, и не слишком ли велики права владельца.
Обратите внимание на надежность оракулов: ведущие оракулы более безопасны, собственные или оракулы с низким порогом следует использовать с осторожностью.
В общем, участники в области Децентрализованные финансы должны оставаться бдительными, проектные команды должны всесторонне учитывать вопросы безопасности, а пользователи должны осторожно оценивать безопасность проекта перед принятием решений.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
12 Лайков
Награда
12
5
Поделиться
комментарий
0/400
HackerWhoCares
· 07-30 21:57
Деньги взяты в долг, безопасность нельзя одолжить.
Посмотреть ОригиналОтветить0
SurvivorshipBias
· 07-30 14:52
Снова история слез и крови неудачников, которых разыгрывают как лохов.
Посмотреть ОригиналОтветить0
MetaMaskVictim
· 07-30 14:52
Снова кто-то разыгрывает людей как лохов... Кто потерял, скажите мне.
Полный анализ уязвимостей безопасности DeFi: руководство по предотвращению срочных займов, манипуляций с ценами и атак повторного входа
Распространенные уязвимости безопасности в Децентрализованных финансах и меры предосторожности
В последнее время один из экспертов по безопасности поделился с членами сообщества темами, связанными с безопасностью в Децентрализованных финансах. Этот эксперт рассмотрел значительные события безопасности, с которыми столкнулась индустрия Web3 за последний год, углубился в причины этих событий и способы их предотвращения, обобщил распространенные уязвимости смарт-контрактов и меры предосторожности, а также дал некоторые советы по безопасности для проектных команд и обычных пользователей.
Основные типы уязвимостей DeFi включают в себя: флеш-кредиты, манипуляции с ценами, проблемы с правами функций, произвольные внешние вызовы, проблемы с функцией обратного вызова, уязвимости в бизнес-логике, утечка приватных ключей и атаки повторного входа. В данной статье подробно рассматриваются флеш-кредиты, манипуляции с ценами и атаки повторного входа.
Мгновенный заём
Флеш-займы являются инновацией в области Децентрализованных финансов, но также часто используются хакерами. Нападающие могут взять в долг большие суммы через флеш-займ, манипулировать ценами или атаковать бизнес-логику. Разработчики должны учитывать, приведут ли огромные суммы денег к аномалиям в функциональности контрактов, или будут использованы в одной транзакции для взаимодействия с несколькими функциями для получения неправомерной выгоды.
Многие проекты Децентрализованные финансы кажутся очень прибыльными, но уровень команд проектов сильно различается. Даже если в коде нет уязвимостей, логически могут существовать проблемы. Например, некоторые проекты выделяют награды в фиксированное время в зависимости от объема держания, но злоумышленники могут использовать флеш-кредиты для покупки большого количества токенов, получая большую часть прибыли во время распределения награды. Есть также проекты, которые рассчитывают цену через токены, и они также могут быть подвержены влиянию флеш-кредитов. Команды проектов должны быть настороже по поводу этих проблем.
Манипуляция ценами
Проблема манипуляции ценами тесно связана с flash-кредитами, в основном из-за того, что некоторые параметры могут контролироваться пользователями при вычислении цен. Существуют два распространенных случая:
При расчете цены используются данные третьих сторон, но неправильное использование или отсутствие проверки приводит к манипуляциям с ценой.
Используйте баланс токенов определенных адресов в качестве вычислительной переменной, при этом количество токенов на этих адресах может временно увеличиваться или уменьшаться.
Атака повторного входа
Одним из основных рисков вызова внешних контрактов является то, что они могут перехватить управление потоком и внести непредвиденные изменения в данные. Например:
солидность отображение (address => uint) private userBalances;
функция withdrawBalance() публичная { uint amountToWithdraw = userBalances[msg.sender]; (bool успех, ) = msg.sender.call.value(amountToWithdraw)("" ); require(успех); userBalances[msg.sender] = 0; }
Поскольку баланс пользователя устанавливается в 0 только в конце функции, повторные вызовы по-прежнему будут успешными и будут неоднократно извлекать баланс.
Существуют различные формы атак повторного входа, которые могут затрагивать разные функции одного и того же контракта или функции нескольких контрактов. При решении проблемы повторного входа необходимо обратить внимание на:
Лучше избегать дублирования усилий и использовать зрелые лучшие практики безопасности в отрасли. Новые "колеса" часто недостаточно проверены, и вероятность возникновения проблем у них обычно выше, чем у проверенных решений.
Рекомендации по безопасности
Рекомендации по безопасности от команды проекта
Следуйте лучшим практикам безопасности при разработке контрактов
Проектирование обновляемых и приостанавливаемых контрактов: помогает своевременно обнаруживать и снижать потери от атак.
Использование временной блокировки: предоставление буферного периода для выявления и решения потенциальных проблем
Увеличьте инвестиции в безопасность, создайте完善ную систему безопасности: безопасность является системной работой и не ограничивается аудитом контрактов.
Повышение безопасности всех сотрудников: многие атаки используют человеческие слабости, повышение бдительности может избежать многих проблем.
Профилактика внутренних злоупотреблений, повышение эффективности при усилении управления рисками: например, использование мультиподписей, временных замков и т.д.
Осторожно вводите третьи стороны: необходимо проводить проверку безопасности как вверх, так и вниз по цепочке, особенно для неоткрытых контрактов.
Способы оценки безопасности смарт-контрактов пользователями/пулом ликвидности
Проверьте, является ли контракт открытым: не участвуйте в проектах, которые не являются открытыми.
Подтвердите, использует ли владелец децентрализованную мультиподпись.
Посмотреть уже существующую торговую ситуацию по контракту: время развертывания, количество взаимодействий и т.д.
Проверьте, является ли контракт代理ным, можно ли его обновить, есть ли временная блокировка
Подтвердите, проходил ли контракт аудит у нескольких учреждений, и не слишком ли велики права владельца.
Обратите внимание на надежность оракулов: ведущие оракулы более безопасны, собственные или оракулы с низким порогом следует использовать с осторожностью.
В общем, участники в области Децентрализованные финансы должны оставаться бдительными, проектные команды должны всесторонне учитывать вопросы безопасности, а пользователи должны осторожно оценивать безопасность проекта перед принятием решений.