Jarvis Network sofreu um ataque de reentrada por Empréstimos Flash, perdendo 66.3 mil MATIC

robot
Geração do resumo em andamento

Análise do ataque de reentrada de Empréstimos Flash ao projeto Jarvis Network

No dia 15 de janeiro de 2023, o projeto Jarvis_Network sofreu um ataque na rede Polygon, resultando em uma perda de aproximadamente 663 mil MATIC. A análise mostra que os atacantes aproveitaram empréstimos flash e uma vulnerabilidade de reentrada para realizar o ataque.

Análise do Evento de Ataque de Reentrada do Empréstimos Flash da Jarvis Network

A análise da pilha de chamadas de transação de ataque mostra que, durante o reentrância, ao chamar a mesma função do mesmo contrato, os parâmetros de entrada são os mesmos, mas os valores de retorno apresentam diferenças significativas. Os valores de retorno antes e depois da reentrância são, respectivamente:

  • Reentrada: 1002157321772769944
  • Reentrada: 10091002696492234934

Análise do Evento de Ataque de Reentrada do Empréstimos Flash da Jarvis Network

A reentrada ocorre na função remove_liquidity. Esta função devolve os tokens adicionados pelo usuário ao remover a liquidez. Devido à compatibilidade do Polygon com o EVM, a reentrada foi acionada quando o MATIC foi transferido para o contrato.

Análise do Evento de Ataque de Reentrada do Empréstimos Flash da Jarvis Network

Uma análise aprofundada revelou que o problema está na implementação da função getUnderlyingPrice. Esta função envolve uma série de cálculos internos e chamadas externas, sendo que a chave é o valor de retorno da função get_virtual_price. O valor de retorno desta função é influenciado pela variável self.D, e a atualização de self.D ocorre após a transferência de tokens.

Análise do incidente de ataque de reentrada de Empréstimos Flash da Jarvis Network

O atacante, ao remover a liquidez, transferiu MATIC para o contrato de ataque e, através de um callback, consultou primeiro o preço do token. Como self.D ainda não havia sido atualizado, isso resultou em um erro na obtenção do preço. O atacante aproveitou essa diferença de tempo e, durante a reentrada, aumentou o preço do empréstimo em cerca de 10 vezes.

Análise do evento de ataque de reentrada do Empréstimos Flash Jarvis Network

Embora a função remove_liquidity use o decorador @nonreentrant('lock') para prevenir reentradas, os atacantes conseguiram contornar este mecanismo de proteção através de reentradas entre contratos.

Análise do incidente de ataque de reentrada de Empréstimos Flash da Jarvis Network

Este ataque expôs várias questões-chave:

  1. A lógica de modificação da variável está localizada após a chamada externa, o que leva a uma anomalia na obtenção do preço.
  2. A reentrada entre contratos torna o bloqueio de reentrada ineficaz.
  3. Não seguir o padrão "Verificação-Efeitos-Interações" (Checks-Effects-Interactions).

Análise de evento de ataque de reentrada Empréstimos Flash Jarvis Network

Para evitar ataques semelhantes, recomenda-se que a equipe do projeto:

  • Realizar auditorias de segurança rigorosas
  • Mova a modificação da variável para antes da chamada externa
  • Utilizar múltiplas fontes de dados para obter preços
  • Seguir a norma de codificação "Verificar-Ativar-Interagir"

Com estas medidas, é possível aumentar significativamente a segurança e a estabilidade do projeto.

![Análise do evento de ataque de reentrada do Empréstimos Flash da Jarvis Network](https://img-cdn.gateio.im/webp-social/moments-fcd66f4cc03bb8e822c9414526681442.webp01

![Análise do evento de ataque de reentrada do Empréstimos Flash Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-9b2de9b00c52d3ff96d5a361df65769a.webp(

![Análise do Evento de Ataque de Reentrada do Empréstimos Flash Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-88f9283ee0923cff2a22405715721cd2.webp(

![Análise do incidente de ataque de reentrada do Empréstimos Flash Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-d41ac025ee561569cce3b941d7e07967.webp(

![Análise do evento de ataque de reentrada de Empréstimos Flash Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-2c4474781d661306bc8c432dad3942c0.webp(

Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • Comentário
  • Repostar
  • Compartilhar
Comentário
0/400
Sem comentários
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)