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

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

Недавно проект под названием Jarvis_Network подвергся атаке реинжекции срочных займов, в результате чего было потеряно около 663000 токенов MATIC. Это событие произошло вечером 15 января 2023 года.

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

Путем глубокого анализа стека вызовов транзакций мы обнаружили, что злоумышленник использовал уязвимость повторного входа. В процессе повторного входа было сделано несколько вызовов одной и той же функции одного и того же контракта, но возвращаемые значения при каждом вызове имели огромные различия. Эти различия в основном проявляются в функции remove_liquidity.

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

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

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

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

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

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

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

Эта атака в основном выявила две проблемы:

  1. Логика изменения переменной находится после внешнего вызова, что приводит к аномалии получения цены.
  2. Кросс-контрактный повторный вход делает блокировку повторного входа неэффективной.

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

Чтобы предотвратить подобные атаки, рекомендуется, чтобы команда проекта приняла следующие меры:

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

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

Принятие этих мер может значительно повысить безопасность и стабильность проекта, предоставляя пользователям более надежные услуги.

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

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

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

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

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

Посмотреть Оригинал
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
  • Награда
  • 2
  • Поделиться
комментарий
0/400
WalletAnxietyPatientvip
· 23ч назад
Опытный и любящий играть розничный инвестор, не забудьте вовремя сделать резервную копию Закрытого ключа

Язык контента: китайский

Данный комментарий:

Если не проводить аудит контрактов, будете страдать от таких убытков~
Посмотреть ОригиналОтветить0
LiquidatedNotStirredvip
· 23ч назад
Снова реентри, ха-ха, давно следовало заблокировать.
Посмотреть ОригиналОтветить0
  • Закрепить