Децентрализованные финансы Часто встречающиеся уязвимости безопасности и меры предосторожности
Недавно один из экспертов по безопасности провел для членов сообщества урок по безопасности в Децентрализованных финансах. Эксперт рассмотрел основные события безопасности в индустрии Web3 за последний год, обсудил причины их возникновения и способы их предотвращения, обобщил распространенные уязвимости смарт-контрактов и меры предосторожности, а также дал некоторые советы по безопасности для проектных команд и обычных пользователей.
Распространенные типы уязвимостей в Децентрализованных финансах в основном включают в себя флеш-кредиты, манипуляции с ценами, проблемы с правами на функции, произвольные внешние вызовы, проблемы с функцией fallback, уязвимости в бизнес-логике, утечку приватных ключей и атаки повторного входа. В данной статье будет уделено особое внимание флеш-кредитам, манипуляциям с ценами и атакам повторного входа.
Ловкий заём
Мгновенные займы — это инновация в области Децентрализованных финансов, но они также часто используются злоумышленниками. Злоумышленники занимают большие суммы денег через мгновенные займы, чтобы манипулировать ценами или атаковать бизнес-логику. Разработчики должны учитывать, повлияет ли огромная сумма денег на функциональность контракта, или же она будет использована для получения незаконной прибыли.
Многие проекты в области Децентрализованные финансы кажутся высокодоходными, но на самом деле уровень команд проектов очень разный. Некоторые проекты могут иметь код, который был куплен; даже если сам код не содержит уязвимостей, логически могут возникнуть проблемы. Например, некоторые проекты распределяют вознаграждения в фиксированное время в зависимости от количества токенов у держателей, но злоумышленники используют флеш-кредиты для покупки большого количества токенов, получая большую часть вознаграждения в момент его распределения.
Манипуляция ценами
Проблема манипуляции ценами тесно связана с闪电贷, в основном из-за того, что некоторые параметры, используемые для расчета цен, могут контролироваться пользователями. Существует два основных типа проблем:
Использование сторонних данных для расчета цен, но неправильное использование или отсутствие проверки приводит к манипуляциям с ценами.
Использовать количество токенов на некоторых адресах в качестве расчетной переменной, при этом баланс токенов на этих адресах может временно увеличиваться или уменьшаться.
Атака повторного входа
Атака повторного входа является одной из основных опасностей, с которыми можно столкнуться при вызове внешних контрактов. Злоумышленник может захватить управление потоком и внести неожиданные изменения в данные. Например:
В этом примере, поскольку баланс пользователя устанавливается в 0 только в конце функции, злоумышленник может снова вызвать эту функцию после успешного первого вызова, что позволяет ему многократно выводить баланс.
Для решения проблемы повторного входа необходимо обратить внимание на следующие моменты:
Необходимо предотвратить не только проблемы повторного входа для одной функции;
Следуйте модели Checks-Effects-Interactions при кодировании;
Используйте проверенный временем модификатор защиты от повторного входа.
Типичный случай повторного входа - это инцидент с Omni Protocol. Во время этой атаки транзакции, отправленные злоумышленником, который обнаружил уязвимость, были перехвачены и выполнены другими хакерами, что привело к тому, что первоначальный злоумышленник получил лишь часть прибыли. Это подчеркивает особенности "темного леса" в экосистеме Web3, где злоумышленники также могут быть добычей друг друга.
Рекомендации по безопасности
Рекомендации по безопасности от команды проекта
Следуйте лучшим практикам безопасности при разработке контрактов.
Реализация возможности обновления и приостановки контрактов.
Используйте механизм временной блокировки.
Увеличить инвестиции в безопасность, создать完善ную систему безопасности.
Повышение осведомленности всех сотрудников о безопасности.
Профилактика внутренних злоупотреблений, повышение эффективности и одновременно укрепление управления рисками.
Осторожно вводите сторонние услуги, следуя принципу "по умолчанию, ни вверх, ни вниз по цепочке не безопасно".
Как пользователю/поставщику ликвидности определить, безопасен ли смарт-контракт
Проверьте, открыт ли контракт.
Проверить, использует ли владелец децентрализованный многофакторный механизм.
Посмотреть текущую торговую ситуацию по контракту.
Подтвердите, является ли контракт代理-контрактом, можно ли его обновить и есть ли временной замок.
Проверьте, проводился ли аудит контракта несколькими организациями и оцените, не слишком ли велики полномочия владельца.
Обратите внимание на выбор и использование оракулов.
В общем, в области Децентрализованные финансы вопросы безопасности всегда являются одним из самых важных факторов. Как для команд проектов, так и для обычных пользователей, необходимо сохранять высокую бдительность и принимать соответствующие меры безопасности, чтобы снизить риски и обеспечить безопасность активов.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
14 Лайков
Награда
14
7
Поделиться
комментарий
0/400
TokenomicsTrapper
· 10ч назад
просто еще один день, наблюдая за тем, как дегены попадают в неприятности от тех же старых эксплойтов... предсказал эту модель несколько месяцев назад, если честно
Посмотреть ОригиналОтветить0
DegenWhisperer
· 10ч назад
И черное, и белое - все ясно
Посмотреть ОригиналОтветить0
degenonymous
· 10ч назад
Снова попались на смарт-контракты.
Посмотреть ОригиналОтветить0
BlockchainFries
· 10ч назад
Лучше пойти на доставку еды, чем целый день искать уязвимости.
Посмотреть ОригиналОтветить0
Ser_This_Is_A_Casino
· 10ч назад
дефи действительно казино, как и должно быть, терять так терять
Посмотреть ОригиналОтветить0
OPsychology
· 10ч назад
Срочные займы怕啥 老子全是歌德币
Посмотреть ОригиналОтветить0
GateUser-00be86fc
· 10ч назад
Мой проект всегда придавал большое значение безопасности.
Обзор уязвимостей безопасности DeFi: анализ рисков срочных займов, манипуляций с ценами и атак повторного входа.
Децентрализованные финансы Часто встречающиеся уязвимости безопасности и меры предосторожности
Недавно один из экспертов по безопасности провел для членов сообщества урок по безопасности в Децентрализованных финансах. Эксперт рассмотрел основные события безопасности в индустрии Web3 за последний год, обсудил причины их возникновения и способы их предотвращения, обобщил распространенные уязвимости смарт-контрактов и меры предосторожности, а также дал некоторые советы по безопасности для проектных команд и обычных пользователей.
Распространенные типы уязвимостей в Децентрализованных финансах в основном включают в себя флеш-кредиты, манипуляции с ценами, проблемы с правами на функции, произвольные внешние вызовы, проблемы с функцией fallback, уязвимости в бизнес-логике, утечку приватных ключей и атаки повторного входа. В данной статье будет уделено особое внимание флеш-кредитам, манипуляциям с ценами и атакам повторного входа.
Ловкий заём
Мгновенные займы — это инновация в области Децентрализованных финансов, но они также часто используются злоумышленниками. Злоумышленники занимают большие суммы денег через мгновенные займы, чтобы манипулировать ценами или атаковать бизнес-логику. Разработчики должны учитывать, повлияет ли огромная сумма денег на функциональность контракта, или же она будет использована для получения незаконной прибыли.
Многие проекты в области Децентрализованные финансы кажутся высокодоходными, но на самом деле уровень команд проектов очень разный. Некоторые проекты могут иметь код, который был куплен; даже если сам код не содержит уязвимостей, логически могут возникнуть проблемы. Например, некоторые проекты распределяют вознаграждения в фиксированное время в зависимости от количества токенов у держателей, но злоумышленники используют флеш-кредиты для покупки большого количества токенов, получая большую часть вознаграждения в момент его распределения.
Манипуляция ценами
Проблема манипуляции ценами тесно связана с闪电贷, в основном из-за того, что некоторые параметры, используемые для расчета цен, могут контролироваться пользователями. Существует два основных типа проблем:
Атака повторного входа
Атака повторного входа является одной из основных опасностей, с которыми можно столкнуться при вызове внешних контрактов. Злоумышленник может захватить управление потоком и внести неожиданные изменения в данные. Например:
солидность отображение (address => uint) private userBalances;
функция withdrawBalance() публичная { uint amountToWithdraw = userBalances[msg.sender]; (bool успех, ) = msg.sender.call.value(amountToWithdraw)("" ); require(успех); userBalances[msg.sender] = 0; }
В этом примере, поскольку баланс пользователя устанавливается в 0 только в конце функции, злоумышленник может снова вызвать эту функцию после успешного первого вызова, что позволяет ему многократно выводить баланс.
Для решения проблемы повторного входа необходимо обратить внимание на следующие моменты:
Типичный случай повторного входа - это инцидент с Omni Protocol. Во время этой атаки транзакции, отправленные злоумышленником, который обнаружил уязвимость, были перехвачены и выполнены другими хакерами, что привело к тому, что первоначальный злоумышленник получил лишь часть прибыли. Это подчеркивает особенности "темного леса" в экосистеме Web3, где злоумышленники также могут быть добычей друг друга.
Рекомендации по безопасности
Рекомендации по безопасности от команды проекта
Как пользователю/поставщику ликвидности определить, безопасен ли смарт-контракт
В общем, в области Децентрализованные финансы вопросы безопасности всегда являются одним из самых важных факторов. Как для команд проектов, так и для обычных пользователей, необходимо сохранять высокую бдительность и принимать соответствующие меры безопасности, чтобы снизить риски и обеспечить безопасность активов.