Анализ атаки повторного входа на проект Jarvis Network с использованием Срочных займов
15 января 2023 года проект Jarvis_Network подвергся атаке, в результате которой было потеряно 663,101 MATIC. Эта атака в основном использовала Срочные займы и уязвимость повторного входа, что привело к утечке средств проекта.
Анализируя стек вызовов транзакций, было установлено, что злоумышленник осуществил повторный ввод в функции remove_liquidity. Эта функция отвечает за удаление ликвидности и возврат токенов пользователю. Поскольку структура Polygon схожа со структурой EVM, во время передачи MATIC был вызван повторный ввод контракта.
Реинвазивная атака происходит на этапе запроса цены. Когда атакующий удаляет ликвидность, MATIC переводится на контракт атакующего. В процессе обратного вызова атакующий сначала запрашивает цену токена. Поскольку обновление переменной self.D в контракте запаздывает относительно операции перевода, это приводит к ошибке в получении цены на начальном этапе.
Процесс выполнения функции remove_liquidity следующий:
Уничтожить LP-токены пользователя
Отправить пользователю средства для стейкинга
Обновить переменную self.D
Переменная self.D используется для расчета цены и обновляется как при добавлении, так и при удалении ликвидности. Злоумышленники воспользовались крупными финансовыми операциями, что привело к значительному увеличению значения self.D при добавлении ликвидности, в то время как при удалении оно не было своевременно обновлено.
Хотя функция remove_liquidity использует декоратор @nonreentrant('lock') для предотвращения повторного входа, злоумышленник обошел это ограничение, используя межконтрактные займы.
Эта атака выявила наличие уязвимостей в коде проекта. Чтобы избежать подобных проблем, рекомендуется команде проекта предпринять следующие меры:
Провести строгий аудит безопасности
Поместите операции изменения переменных перед внешним вызовом
Использование нескольких источников данных для получения цен
Оптимизация логики кода и усиление мер безопасности могут эффективно повысить безопасность и стабильность проекта, предотвратив повторение подобных атак.
На этой странице может содержаться сторонний контент, который предоставляется исключительно в информационных целях (не в качестве заявлений/гарантий) и не должен рассматриваться как поддержка взглядов компании Gate или как финансовый или профессиональный совет. Подробности смотрите в разделе «Отказ от ответственности» .
23 Лайков
Награда
23
9
Репост
Поделиться
комментарий
0/400
MEV_Whisperer
· 07-22 15:42
Эта кастрюля может только выдержать.
Посмотреть ОригиналОтветить0
AirdropCollector
· 07-22 15:27
Сразу не хочется покупать.
Посмотреть ОригиналОтветить0
GateUser-e87b21ee
· 07-20 04:01
команда проекта защита неэффективна啊
Посмотреть ОригиналОтветить0
StakeOrRegret
· 07-19 19:17
Ещё один проект был скопирован...
Посмотреть ОригиналОтветить0
ZenMiner
· 07-19 19:09
Что этот охранник делает?
Посмотреть ОригиналОтветить0
LayerZeroEnjoyer
· 07-19 19:09
Ай, снова повторная атака, старый трюк.
Посмотреть ОригиналОтветить0
LiquidityOracle
· 07-19 19:05
Кто сказал, что писать код не серьезно.
Посмотреть ОригиналОтветить0
DecentralizedElder
· 07-19 19:01
Снова были взломаны, действительно, не помнят уроков.
Посмотреть ОригиналОтветить0
WhaleWatcher
· 07-19 18:54
Еще один полузавершенный проект подвергся сильному удару
Сеть Jarvis подверглась атаке повторного входа через Срочные займы, потеряв 663,101 MATIC.
Анализ атаки повторного входа на проект Jarvis Network с использованием Срочных займов
15 января 2023 года проект Jarvis_Network подвергся атаке, в результате которой было потеряно 663,101 MATIC. Эта атака в основном использовала Срочные займы и уязвимость повторного входа, что привело к утечке средств проекта.
Анализируя стек вызовов транзакций, было установлено, что злоумышленник осуществил повторный ввод в функции remove_liquidity. Эта функция отвечает за удаление ликвидности и возврат токенов пользователю. Поскольку структура Polygon схожа со структурой EVM, во время передачи MATIC был вызван повторный ввод контракта.
Реинвазивная атака происходит на этапе запроса цены. Когда атакующий удаляет ликвидность, MATIC переводится на контракт атакующего. В процессе обратного вызова атакующий сначала запрашивает цену токена. Поскольку обновление переменной self.D в контракте запаздывает относительно операции перевода, это приводит к ошибке в получении цены на начальном этапе.
Процесс выполнения функции remove_liquidity следующий:
Переменная self.D используется для расчета цены и обновляется как при добавлении, так и при удалении ликвидности. Злоумышленники воспользовались крупными финансовыми операциями, что привело к значительному увеличению значения self.D при добавлении ликвидности, в то время как при удалении оно не было своевременно обновлено.
Хотя функция remove_liquidity использует декоратор @nonreentrant('lock') для предотвращения повторного входа, злоумышленник обошел это ограничение, используя межконтрактные займы.
Эта атака выявила наличие уязвимостей в коде проекта. Чтобы избежать подобных проблем, рекомендуется команде проекта предпринять следующие меры:
Оптимизация логики кода и усиление мер безопасности могут эффективно повысить безопасность и стабильность проекта, предотвратив повторение подобных атак.
! Анализ инцидента атаки на повторный вход в сеть Jarvis Network