Децентрализованные финансы безопасность уязвимости и меры предосторожности
Недавно один из экспертов по безопасности поделился курсом по безопасности Децентрализованных финансов с сообществом. Этот эксперт рассмотрел основные инциденты безопасности, с которыми столкнулась индустрия Web3 за последний год, обсудил причины этих инцидентов и способы их предотвращения, подытожил распространенные уязвимости смарт-контрактов и меры предосторожности, а также предложил некоторые рекомендации по безопасности для команд проектов и пользователей.
Распространенные типы уязвимостей DeFi включают в себя флеш-займы, манипуляции с ценами, проблемы с правами функций, произвольные внешние вызовы, проблемы с функцией обратного вызова, уязвимости бизнес-логики, утечку приватных ключей и атаки повторного входа. В этой статье основное внимание уделяется трем типам: флеш-займам, манипуляциям с ценами и атакам повторного входа.
Мгновенный кредит
Атрибуты займа в один клик являются инновацией в Децентрализованных финансах, но также используются хакерами для атак. Злоумышленники занимают большие суммы через займ в один клик, чтобы манипулировать ценами или атаковать бизнес-логику. Разработчикам необходимо учитывать, приведет ли использование огромных сумм к аномалиям в функциях контракта или будет использовано для получения неправомерных вознаграждений.
Многие проекты Децентрализованные финансы подвержены атакам с помощью флеш-займов из-за проблем с кодом или логикой. Например, некоторые проекты выдают вознаграждения в фиксированное время в зависимости от наличия токенов, и злоумышленники могут использовать флеш-займы для покупки большого количества токенов, чтобы получить большую часть вознаграждения. Также некоторые проекты могут быть подвержены влиянию флеш-займов при расчете цен через токены. Разработчики проектов должны быть настороже к этим проблемам.
Манипуляция ценами
Проблема манипуляции ценами тесно связана сFlash-кредитами, в основном существует два случая:
При расчете цены используются данные третьих сторон, но неправильное использование или отсутствие проверки приводит к манипуляциям с ценой.
Использовать количество токенов на некоторых адресах в качестве расчетного переменного, при этом баланс токенов на этих адресах может временно увеличиваться или уменьшаться.
Атака повторного входа
Основной риск вызова внешних контрактов заключается в том, что они могут взять под контроль поток управления и внести случайные изменения в данные. Например:
Поскольку баланс пользователя устанавливается в 0 только в конце функции, повторные вызовы все равно будут успешными, что позволит многократно выводить баланс.
Существует множество форм атак повторного входа, которые могут затрагивать различные функции одного контракта или функции нескольких контрактов. Для решения проблемы повторного входа необходимо обратить внимание на:
Не только предотвращает повторный вызов одной функции
Следуйте модели Checks-Effects-Interactions при кодировании
Используйте проверенный модификатор защиты от повторного ввода
Рекомендуется использовать зрелые практики безопасности, избегая повторного изобретения колеса. Новые решения, разработанные самостоятельно, недостаточно проверены, и вероятность возникновения проблем высока.
Рекомендации по безопасности
Рекомендации по безопасности от команды проекта
Следуйте лучшим практикам безопасности при разработке контрактов
Реализовать возможность обновления и приостановки контрактов
Использование механизма временной блокировки
Увеличить инвестиции в безопасность, создать完善ную систему безопасности
Повышение безопасности всех сотрудников
Предотвращение внутреннего злоупотребления, одновременно повышая эффективность и усиливая контроль рисков
Осторожно вводите зависимости от третьих сторон, по умолчанию как вверх, так и вниз по цепочке не безопасны.
Как пользователю определить безопасность смарт-контракта
Является ли контракт открытым исходным кодом
Использует ли владелец децентрализованный мультиподписной механизм
Проверьте текущую торговую ситуацию по контракту
Можно ли обновить контракт, есть ли временной замок
Принимаются ли аудиты от нескольких организаций, не слишком ли велики права владельца
Обратите внимание на надежность оракулов
В общем, как разработчики проектов, так и пользователи должны повысить свою осведомленность о безопасности и принять необходимые меры для снижения рисков безопасности в Децентрализованных финансах.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
7 Лайков
Награда
7
7
Поделиться
комментарий
0/400
RugResistant
· 10ч назад
Еще один пришел под именем защиты, чтобы разыгрывать людей как лохов.
Посмотреть ОригиналОтветить0
ChainDoctor
· 10ч назад
Срочные займы снова становятся козлом отпущения, тьфу-тьфу.
Посмотреть ОригиналОтветить0
PessimisticOracle
· 10ч назад
Ха, за уязвимостями всегда скрываются соблазны огромной прибыли.
Посмотреть ОригиналОтветить0
ParallelChainMaxi
· 10ч назад
Так много уязвимостей, будьте осторожны, ребята.
Посмотреть ОригиналОтветить0
TokenGuru
· 10ч назад
Старые уязвимости, которые были замечены в период майнинга, не стоит их недооценивать.
Посмотреть ОригиналОтветить0
Anon4461
· 10ч назад
Не хвастайся, у всех есть свои недостатки.
Посмотреть ОригиналОтветить0
RektCoaster
· 10ч назад
Рыба умирает, сеть рвется, но не проиграет mei людям и weiruan.
Анализ трех основных угроз безопасности в Децентрализованных финансах: Срочные займы, манипуляции с ценами и атаки повторного входа
Децентрализованные финансы безопасность уязвимости и меры предосторожности
Недавно один из экспертов по безопасности поделился курсом по безопасности Децентрализованных финансов с сообществом. Этот эксперт рассмотрел основные инциденты безопасности, с которыми столкнулась индустрия Web3 за последний год, обсудил причины этих инцидентов и способы их предотвращения, подытожил распространенные уязвимости смарт-контрактов и меры предосторожности, а также предложил некоторые рекомендации по безопасности для команд проектов и пользователей.
Распространенные типы уязвимостей DeFi включают в себя флеш-займы, манипуляции с ценами, проблемы с правами функций, произвольные внешние вызовы, проблемы с функцией обратного вызова, уязвимости бизнес-логики, утечку приватных ключей и атаки повторного входа. В этой статье основное внимание уделяется трем типам: флеш-займам, манипуляциям с ценами и атакам повторного входа.
Мгновенный кредит
Атрибуты займа в один клик являются инновацией в Децентрализованных финансах, но также используются хакерами для атак. Злоумышленники занимают большие суммы через займ в один клик, чтобы манипулировать ценами или атаковать бизнес-логику. Разработчикам необходимо учитывать, приведет ли использование огромных сумм к аномалиям в функциях контракта или будет использовано для получения неправомерных вознаграждений.
Многие проекты Децентрализованные финансы подвержены атакам с помощью флеш-займов из-за проблем с кодом или логикой. Например, некоторые проекты выдают вознаграждения в фиксированное время в зависимости от наличия токенов, и злоумышленники могут использовать флеш-займы для покупки большого количества токенов, чтобы получить большую часть вознаграждения. Также некоторые проекты могут быть подвержены влиянию флеш-займов при расчете цен через токены. Разработчики проектов должны быть настороже к этим проблемам.
Манипуляция ценами
Проблема манипуляции ценами тесно связана сFlash-кредитами, в основном существует два случая:
При расчете цены используются данные третьих сторон, но неправильное использование или отсутствие проверки приводит к манипуляциям с ценой.
Использовать количество токенов на некоторых адресах в качестве расчетного переменного, при этом баланс токенов на этих адресах может временно увеличиваться или уменьшаться.
Атака повторного входа
Основной риск вызова внешних контрактов заключается в том, что они могут взять под контроль поток управления и внести случайные изменения в данные. Например:
солидность отображение (address => uint) private userBalances;
функция withdrawBalance() публичная { uint amountToWithdraw = userBalances[msg.sender]; (bool успех, ) = msg.sender.call.value(amountToWithdraw)("" ); require(success); userBalances[msg.sender] = 0; }
Поскольку баланс пользователя устанавливается в 0 только в конце функции, повторные вызовы все равно будут успешными, что позволит многократно выводить баланс.
Существует множество форм атак повторного входа, которые могут затрагивать различные функции одного контракта или функции нескольких контрактов. Для решения проблемы повторного входа необходимо обратить внимание на:
Рекомендуется использовать зрелые практики безопасности, избегая повторного изобретения колеса. Новые решения, разработанные самостоятельно, недостаточно проверены, и вероятность возникновения проблем высока.
Рекомендации по безопасности
Рекомендации по безопасности от команды проекта
Как пользователю определить безопасность смарт-контракта
В общем, как разработчики проектов, так и пользователи должны повысить свою осведомленность о безопасности и принять необходимые меры для снижения рисков безопасности в Децентрализованных финансах.