Анализ проекта Jarvis Network от атаки на повторный вход флэш-займов
В последнее время инцидент с атакой на проект Jarvis Network привлек внимание индустрии. Согласно данным мониторинга на блокчейне, атака произошла 15 января 2023 года, что привело к потерям проекта в размере 663,101 токенов MATIC.
Анализируя стек вызовов атакующих транзакций, мы обнаружили, что злоумышленник использовал комбинацию срочных займов и уязвимости повторного входа. В процессе удаления ликвидности злоумышленник успешно осуществил повторный вход, что привело к тому, что одна и та же функция возвращала совершенно разные значения до и после повторного входа.
Глубокое исследование показало, что проблема кроется в функции remove_liquidity. Эта функция отвечает за удаление ликвидности и возврат токенов пользователю. Поскольку сеть Polygon совместима с EVM, в процессе перевода была вызвана логика повторного входа контракта.
Ключевая уязвимость заключается в использовании переменной self.D в расчете цены. В нормальных условиях self.D должен своевременно обновляться при удалении ликвидности. Однако из-за логического дефекта в коде обновление self.D было отложено до внешнего вызова. Это дало злоумышленнику возможность ввести операции между ними и использовать не обновленное значение self.D для арбитража.
Хотя функция remove_liquidity использует декоратор @nonreentrant('lock') для предотвращения повторных входов, злоумышленники ловко обошли этот механизм защиты. Они воспользовались функциями заимствования других контрактов, а не напрямую повторно входили в саму функцию remove_liquidity, тем самым избегая ограничений повторного входа.
Эта атака подчеркнула важность нескольких ключевых принципов безопасности в разработке смарт-контрактов:
Строго следуйте модели "Проверка-Эффекты-Взаимодействия" (Checks-Effects-Interactions).
Убедитесь, что обновление ключевых переменных завершено до любого внешнего вызова.
Используйте несколько источников данных для получения информации о ценах, чтобы повысить надежность системы.
Всеобъемлющий аудит безопасности крайне важен для выявления и устранения потенциальных уязвимостей.
Этот инцидент является еще одним напоминанием о том, что безопасность всегда является главным приоритетом в быстрорастущей экосистеме блокчейна. Команда разработчиков проекта должна постоянно следить за новейшими практиками безопасности и проводить регулярные проверки кода и тесты на уязвимости для обеспечения безопасности активов пользователей.
Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
6 Лайков
Награда
6
7
Поделиться
комментарий
0/400
MidnightSnapHunter
· 07-18 10:01
Контракты-баги действительно невозможно предотвратить.
Посмотреть ОригиналОтветить0
StablecoinEnjoyer
· 07-17 23:27
Еще один проект был взломан.
Посмотреть ОригиналОтветить0
OnChainSleuth
· 07-17 00:48
Ещё один проект был выкачан до дна.
Посмотреть ОригиналОтветить0
shadowy_supercoder
· 07-17 00:40
Цыц, снова атака повторного входа, память короткая.
Jarvis Network подверглась атаке на повторный вход на флэш-кредиты, потеряв 660 000 токенов MATIC
Анализ проекта Jarvis Network от атаки на повторный вход флэш-займов
В последнее время инцидент с атакой на проект Jarvis Network привлек внимание индустрии. Согласно данным мониторинга на блокчейне, атака произошла 15 января 2023 года, что привело к потерям проекта в размере 663,101 токенов MATIC.
Анализируя стек вызовов атакующих транзакций, мы обнаружили, что злоумышленник использовал комбинацию срочных займов и уязвимости повторного входа. В процессе удаления ликвидности злоумышленник успешно осуществил повторный вход, что привело к тому, что одна и та же функция возвращала совершенно разные значения до и после повторного входа.
! Анализ инцидентов атаки на повторный вход в сеть Jarvis Network
Глубокое исследование показало, что проблема кроется в функции remove_liquidity. Эта функция отвечает за удаление ликвидности и возврат токенов пользователю. Поскольку сеть Polygon совместима с EVM, в процессе перевода была вызвана логика повторного входа контракта.
! Анализ инцидентов атаки на повторный вход в сеть Jarvis
Ключевая уязвимость заключается в использовании переменной self.D в расчете цены. В нормальных условиях self.D должен своевременно обновляться при удалении ликвидности. Однако из-за логического дефекта в коде обновление self.D было отложено до внешнего вызова. Это дало злоумышленнику возможность ввести операции между ними и использовать не обновленное значение self.D для арбитража.
Хотя функция remove_liquidity использует декоратор @nonreentrant('lock') для предотвращения повторных входов, злоумышленники ловко обошли этот механизм защиты. Они воспользовались функциями заимствования других контрактов, а не напрямую повторно входили в саму функцию remove_liquidity, тем самым избегая ограничений повторного входа.
Эта атака подчеркнула важность нескольких ключевых принципов безопасности в разработке смарт-контрактов:
Этот инцидент является еще одним напоминанием о том, что безопасность всегда является главным приоритетом в быстрорастущей экосистеме блокчейна. Команда разработчиков проекта должна постоянно следить за новейшими практиками безопасности и проводить регулярные проверки кода и тесты на уязвимости для обеспечения безопасности активов пользователей.