Jarvis Network подвергся атаке повторного входа через Срочные займы, убыток составил 66万MATIC

Анализ атаки повторного входа на Jarvis Network с использованием Срочных займов

15 января 2023 года проект Jarvis_Network подвергся хакерской атаке, в результате которой было потеряно 663101 MATIC. Анализируя данные о транзакциях, было выявлено, что данная атака связана со Срочными займами и уязвимостью повторного входа.

Анализ события атаки повторного входа Срочные займы Jarvis Network

Атакующий использовал уязвимость в функции remove_liquidity. При удалении ликвидности эта функция возвращает токены, добавленные пользователем. Поскольку Polygon и EVM являются однородными цепочками, перевод MATIC на контракт вызывает логику повторного входа контракта.

Анализ события повторной атаки на Срочные займы Jarvis Network

Обратите внимание на процесс вызова функции getUnderlyingPrice. Эта функция включает взаимодействие нескольких контрактов, некоторые из которых не являются открытыми. Анализ показывает, что проблема заключается в значении, возвращаемом функцией get_virtual_price. Возвращаемое значение этой функции значительно отличается до и после повторного входа.

! Анализ инцидентов атаки на повторный вход в сеть Jarvis

Конкретно, обновление переменной self.D происходит после перевода токенов. Когда злоумышленник удаляет ликвидность, MATIC переводится на контракт злоумышленника. При вызове функции обратного вызова fallback злоумышленник сначала запрашивает цену определённого токена. Поскольку обновление self.D отстаёт от перевода, это приводит к ошибке в получении предыдущей цены.

Анализ событий атаки повторного входа на Срочные займы Jarvis Network

Анализ событий повторного входа в Срочные займы сети Jarvis

Процесс удаления ликвидности включает: 1) уничтожение LP-токенов пользователя; 2) отправка пользователю залоговых средств; 3) обновление значения self.D. self.D используется для расчета цены и обновляется как при добавлении, так и при удалении ликвидности. Злоумышленник использовал уязвимость больших объемов ликвидности и времени обновления self.D, чтобы провести повторный ввод на этапе 2 и занять средства по цене, в 10 раз превышающей первоначальную.

Анализ инцидента с повторным нападением на Срочные займы Jarvis Network

Анализ события реинъекции Срочных займов Jarvis Network

Анализ инцидента с реинвестированием Срочные займы Jarvis Network

Хотя функция remove_liquidity использует декоратор @nonreentrant('lock') для предотвращения повторного входа, злоумышленник обошел этот механизм защиты через межконтрактное кредитование.

Анализ инцидента повторного использования срочных займов Jarvis Network

Анализ инцидента с реинкапсуляцией Срочных займов в сети Jarvis

Данная атака выявила недостатки проекта в логике изменения переменных и безопасности межконтрактных вызовов. Для предотвращения подобных атак рекомендуется проектной стороне принять следующие меры:

  1. Провести строгую безопасность аудит.
  2. Поместите изменения переменной перед внешним вызовом.
  3. Использование многоданных источников для получения цен.
  4. Соблюдайте кодировочные нормы "Проверки-Эффекты-Взаимодействия" (Checks-Effects-Interactions).

Анализ инцидента повторного использования срочных займов Jarvis Network

Анализ инцидента с повторной атакой Срочных займов Jarvis Network

С помощью этих мер можно значительно повысить безопасность и стабильность проекта, предотвратив повторение подобных атак.

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 6
  • Поделиться
комментарий
0/400
NFTHoardervip
· 9ч назад
Тестирование этого проекта слишком слабое, одним ударом можно сломать защиту.
Посмотреть ОригиналОтветить0
RektDetectivevip
· 07-19 06:12
Снова кто-то потерпел неудачу, перевод matic даже не проверяют, новичок пишет код?
Посмотреть ОригиналОтветить0
DuskSurfervip
· 07-18 23:29
Все еще лежит и копирует контракт, даже не понял, что такое повторный вход~
Посмотреть ОригиналОтветить0
StableGeniusvip
· 07-18 23:29
лmao еще один день, еще один взлом... как и предсказывал, если честно
Посмотреть ОригиналОтветить0
HypotheticalLiquidatorvip
· 07-18 23:18
Старая проблема снова возникла. Разве не стоит установить защиту от повторного входа?
Посмотреть ОригиналОтветить0
failed_dev_successful_apevip
· 07-18 23:11
команда проекта спит, а другие тут пытаются вскрыть замок~
Посмотреть ОригиналОтветить0
  • Закрепить