Общие уязвимости безопасности в Децентрализованных финансах и меры предосторожности
В последнее время один из экспертов по безопасности поделился знаниями о безопасности Децентрализованных финансах с членами сообщества. Он рассмотрел серьезные инциденты безопасности, с которыми столкнулась индустрия Web3 за последний год, обсудил причины их возникновения и методы предотвращения, подытожил распространенные уязвимости смарт-контрактов и меры предосторожности, а также дал несколько рекомендаций по безопасности.
Распространенные типы уязвимостей DeFi включают в себя кредитование с помощью флеш-займов, манипуляции с ценами, проблемы с правами на функции, произвольные внешние вызовы, проблемы с fallback-функциями, уязвимости бизнес-логики, утечку приватных ключей, повторные атаки и т.д. В этой статье основное внимание уделяется трем типам: флеш-займы, манипуляция ценами и повторные атаки.
Займы мгновенно
Флэш-кредиты сами по себе являются инновацией в области Децентрализованные финансы, но в случае использования хакерами могут позволить занять большие суммы денег без затрат для атаки. Часто такие атаки сопровождаются флэш-кредитами, когда злоумышленник занимает крупные суммы и манипулирует ценами или атакует бизнес-логику.
Разработчики должны учитывать, может ли функциональность контракта быть нарушена из-за больших средств или быть использована для получения неправомерной выгоды при взаимодействии с несколькими функциями в одной сделке.
Некоторые проекты будут выдавать награды в фиксированное время в зависимости от удерживаемых активов, но злоумышленники используют кредитные пулы для покупки большого количества токенов и получения большей части награды. Другие проекты рассчитывают цену токена, и на них также может повлиять кредитный пул. Разработчики проектов должны быть настороже к этим проблемам.
Манипуляция ценами
Проблема манипуляций с ценами тесно связана с флеш-кредитами, существует два основных типа:
При расчете цен используются данные третьих сторон, но неправильное использование или отсутствие проверки приводит к злонамеренному манипулированию ценами.
Использование количества токенов на некоторых адресах в качестве вычислительной переменной, при этом баланс токенов на этих адресах может временно увеличиваться или уменьшаться.
Атака повторного входа
Основной риск вызова внешних контрактов заключается в том, что они могут взять под контроль поток управления и произвести неожиданные изменения в данных. Например:
Поскольку баланс обнуляется только в конце функции, повторные вызовы все равно будут успешно извлекаться.
Способы атаки повторного входа разнообразны и могут затрагивать несколько функций или контрактов. Для решения проблемы повторного входа необходимо обратить внимание на:
Не только предотвращение повторного входа в одну функцию
Следуйте модели Checks-Effects-Interactions при кодировании
Использование проверенного модификатора для предотвращения повторных вызовов
Следует по возможности использовать зрелые практики безопасности, избегая изобретения колеса.
Рекомендации по безопасности для проекта
Разработка контрактов осуществляется в соответствии с лучшими практиками безопасности
Контракты могут быть обновлены и приостановлены: своевременное выявление и снижение убытков
Использование временной блокировки: предоставление времени для проверки и реагирования
Создание完善ной системы безопасности: полное избежание рисков
Повышение осведомленности о безопасности среди всех сотрудников
Предотвращение внутренних злоупотреблений, улучшая эффективность и одновременно усиливая управление рисками
О慎ительное введение третьих сторон: проверка безопасности вверх и вниз по цепочке
Как пользователи могут оценить безопасность смарт-контрактов
Является ли контракт открытым исходным кодом
Использует ли владелец децентрализованную мультиподпись
Проверьте уже существующие сделки по контракту
Можно ли обновить контракт, есть ли временная блокировка
Принимается ли аудит несколькими организациями, слишком ли велики права владельца?
Обратите внимание на надежность оракулов
В общем, безопасность в области Децентрализованных финансов имеет решающее значение. Как проекты, так и пользователи должны быть бдительными и принимать необходимые меры для снижения рисков.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
13 Лайков
Награда
13
2
Поделиться
комментарий
0/400
StableGeniusDegen
· 18ч назад
Снова придется начинать учить безопасность с нуля, голова кругом
Посмотреть ОригиналОтветить0
DAOplomacy
· 18ч назад
театр безопасности в своем лучшем проявлении... те же старые уязвимости, те же старые проблемы с заинтересованными сторонами, если честно
Анализ трех основных уязвимостей DeFi: Срочные займы, манипуляции с ценами и атаки повторного входа
Общие уязвимости безопасности в Децентрализованных финансах и меры предосторожности
В последнее время один из экспертов по безопасности поделился знаниями о безопасности Децентрализованных финансах с членами сообщества. Он рассмотрел серьезные инциденты безопасности, с которыми столкнулась индустрия Web3 за последний год, обсудил причины их возникновения и методы предотвращения, подытожил распространенные уязвимости смарт-контрактов и меры предосторожности, а также дал несколько рекомендаций по безопасности.
Распространенные типы уязвимостей DeFi включают в себя кредитование с помощью флеш-займов, манипуляции с ценами, проблемы с правами на функции, произвольные внешние вызовы, проблемы с fallback-функциями, уязвимости бизнес-логики, утечку приватных ключей, повторные атаки и т.д. В этой статье основное внимание уделяется трем типам: флеш-займы, манипуляция ценами и повторные атаки.
Займы мгновенно
Флэш-кредиты сами по себе являются инновацией в области Децентрализованные финансы, но в случае использования хакерами могут позволить занять большие суммы денег без затрат для атаки. Часто такие атаки сопровождаются флэш-кредитами, когда злоумышленник занимает крупные суммы и манипулирует ценами или атакует бизнес-логику.
Разработчики должны учитывать, может ли функциональность контракта быть нарушена из-за больших средств или быть использована для получения неправомерной выгоды при взаимодействии с несколькими функциями в одной сделке.
Некоторые проекты будут выдавать награды в фиксированное время в зависимости от удерживаемых активов, но злоумышленники используют кредитные пулы для покупки большого количества токенов и получения большей части награды. Другие проекты рассчитывают цену токена, и на них также может повлиять кредитный пул. Разработчики проектов должны быть настороже к этим проблемам.
Манипуляция ценами
Проблема манипуляций с ценами тесно связана с флеш-кредитами, существует два основных типа:
При расчете цен используются данные третьих сторон, но неправильное использование или отсутствие проверки приводит к злонамеренному манипулированию ценами.
Использование количества токенов на некоторых адресах в качестве вычислительной переменной, при этом баланс токенов на этих адресах может временно увеличиваться или уменьшаться.
Атака повторного входа
Основной риск вызова внешних контрактов заключается в том, что они могут взять под контроль поток управления и произвести неожиданные изменения в данных. Например:
солидность отображение (address => uint) private userBalances;
функция withdrawBalance() публичная { uint amountToWithdraw = userBalances[msg.sender]; (bool успех, ) = msg.sender.call.value(amountToWithdraw)("" ); require(успех); userBalances[msg.sender] = 0; }
Поскольку баланс обнуляется только в конце функции, повторные вызовы все равно будут успешно извлекаться.
Способы атаки повторного входа разнообразны и могут затрагивать несколько функций или контрактов. Для решения проблемы повторного входа необходимо обратить внимание на:
Следует по возможности использовать зрелые практики безопасности, избегая изобретения колеса.
Рекомендации по безопасности для проекта
Разработка контрактов осуществляется в соответствии с лучшими практиками безопасности
Контракты могут быть обновлены и приостановлены: своевременное выявление и снижение убытков
Использование временной блокировки: предоставление времени для проверки и реагирования
Создание完善ной системы безопасности: полное избежание рисков
Повышение осведомленности о безопасности среди всех сотрудников
Предотвращение внутренних злоупотреблений, улучшая эффективность и одновременно усиливая управление рисками
О慎ительное введение третьих сторон: проверка безопасности вверх и вниз по цепочке
Как пользователи могут оценить безопасность смарт-контрактов
Является ли контракт открытым исходным кодом
Использует ли владелец децентрализованную мультиподпись
Проверьте уже существующие сделки по контракту
Можно ли обновить контракт, есть ли временная блокировка
Принимается ли аудит несколькими организациями, слишком ли велики права владельца?
Обратите внимание на надежность оракулов
В общем, безопасность в области Децентрализованных финансов имеет решающее значение. Как проекты, так и пользователи должны быть бдительными и принимать необходимые меры для снижения рисков.