Análise do ataque de reentrada Empréstimos Flash na Jarvis Network
No dia 15 de janeiro de 2023, o projeto Jarvis_Network foi alvo de um ataque hacker, resultando na perda de 663101 MATIC. Através da análise dos dados de transação, foi descoberto que o ataque envolveu Empréstimos Flash e uma vulnerabilidade de reentrada.
Os atacantes exploraram uma vulnerabilidade na função remove_liquidity. Ao remover liquidez, essa função retornará os tokens adicionados pelo usuário. Como o Polygon e o EVM são cadeias homomórficas, a transferência de MATIC para o contrato acionará a lógica de reentrada do contrato.
Preste atenção ao processo de chamada da função getUnderlyingPrice. Esta função envolve a interação entre vários contratos, alguns dos quais não são de código aberto. Através da análise, descobriu-se que o problema reside no valor de retorno da função get_virtual_price. Este valor de retorno apresenta diferenças significativas antes e depois da reentrada.
Especificamente, a atualização da variável self.D ocorre após a transferência do token. Quando o atacante remove a liquidez, MATIC é transferido para o contrato do atacante. Ao chamar a função de fallback de retorno, o atacante primeiro consulta o preço de um determinado token. Como a atualização de self.D está atrasada em relação à transferência, isso resulta em um erro na obtenção do preço anterior.
O processo de remoção de liquidez inclui: 1) destruir os tokens LP do usuário; 2) enviar os fundos em staking para o usuário; 3) atualizar o valor de self.D. self.D é utilizado para o cálculo de preços, sendo atualizado tanto ao adicionar quanto ao remover liquidez. Um atacante explorou a vulnerabilidade do grande volume de liquidez e do momento da atualização de self.D, realizando uma reentrada no passo 2 e emprestando a um preço 10 vezes superior ao preço original.
'lock'( para prevenir reentradas, o atacante contornou esse mecanismo de proteção através de empréstimos cross-contract.
![Análise do incidente de ataque de reentrada dos Empréstimos Flash da Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-9b2de9b00c52d3ff96d5a361df65769a.webp(
![Análise do incidente de ataque de reentrada de Empréstimos Flash da Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-88f9283ee0923cff2a22405715721cd2.webp(
Este ataque expôs as deficiências do projeto na lógica de modificação de variáveis e na segurança das chamadas entre contratos. Para prevenir ataques semelhantes, recomenda-se que a equipe do projeto tome as seguintes medidas:
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 as normas de codificação "Checks-Effects-Interactions".
![Análise do incidente de ataque de reentrada Empréstimos Flash da Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-d41ac025ee561569cce3b941d7e07967.webp(
![Análise do incidente de ataque de reentrada do Empréstimos Flash da Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-2c4474781d661306bc8c432dad3942c0.webp(
Através dessas medidas, é possível aumentar significativamente a segurança e a estabilidade do projeto, prevenindo a ocorrência de eventos de ataque semelhantes.
Ver original
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
22 gostos
Recompensa
22
6
Partilhar
Comentar
0/400
NFTHoarder
· 9h atrás
O teste deste projeto foi demasiado fraco, uma só perna quebrou a defesa.
Ver originalResponder0
RektDetective
· 07-19 06:12
Mais alguém teve problemas, não fizeram verificação de transferência de matic, novato escrevendo código?
Ver originalResponder0
DuskSurfer
· 07-18 23:29
Ainda está deitado a copiar contratos, nem conseguiu entender o reentrância~
Ver originalResponder0
StableGenius
· 07-18 23:29
lmao mais um dia, mais um hack... como previsto, para ser sincero
Ver originalResponder0
HypotheticalLiquidator
· 07-18 23:18
O velho problema voltou a acontecer. Não se pode pelo menos bloquear um bloqueio de reentrada?
Ver originalResponder0
failed_dev_successful_ape
· 07-18 23:11
equipa do projeto dormindo, enquanto os outros estão aqui a arrombar a porta~
Jarvis Network sofreu um ataque de reentrada de Empréstimos Flash, perdendo 66 mil MATIC
Análise do ataque de reentrada Empréstimos Flash na Jarvis Network
No dia 15 de janeiro de 2023, o projeto Jarvis_Network foi alvo de um ataque hacker, resultando na perda de 663101 MATIC. Através da análise dos dados de transação, foi descoberto que o ataque envolveu Empréstimos Flash e uma vulnerabilidade de reentrada.
Os atacantes exploraram uma vulnerabilidade na função remove_liquidity. Ao remover liquidez, essa função retornará os tokens adicionados pelo usuário. Como o Polygon e o EVM são cadeias homomórficas, a transferência de MATIC para o contrato acionará a lógica de reentrada do contrato.
Preste atenção ao processo de chamada da função getUnderlyingPrice. Esta função envolve a interação entre vários contratos, alguns dos quais não são de código aberto. Através da análise, descobriu-se que o problema reside no valor de retorno da função get_virtual_price. Este valor de retorno apresenta diferenças significativas antes e depois da reentrada.
Especificamente, a atualização da variável self.D ocorre após a transferência do token. Quando o atacante remove a liquidez, MATIC é transferido para o contrato do atacante. Ao chamar a função de fallback de retorno, o atacante primeiro consulta o preço de um determinado token. Como a atualização de self.D está atrasada em relação à transferência, isso resulta em um erro na obtenção do preço anterior.
O processo de remoção de liquidez inclui: 1) destruir os tokens LP do usuário; 2) enviar os fundos em staking para o usuário; 3) atualizar o valor de self.D. self.D é utilizado para o cálculo de preços, sendo atualizado tanto ao adicionar quanto ao remover liquidez. Um atacante explorou a vulnerabilidade do grande volume de liquidez e do momento da atualização de self.D, realizando uma reentrada no passo 2 e emprestando a um preço 10 vezes superior ao preço original.
'lock'( para prevenir reentradas, o atacante contornou esse mecanismo de proteção através de empréstimos cross-contract.
![Análise do incidente de ataque de reentrada dos Empréstimos Flash da Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-9b2de9b00c52d3ff96d5a361df65769a.webp(
![Análise do incidente de ataque de reentrada de Empréstimos Flash da Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-88f9283ee0923cff2a22405715721cd2.webp(
Este ataque expôs as deficiências do projeto na lógica de modificação de variáveis e na segurança das chamadas entre contratos. Para prevenir ataques semelhantes, recomenda-se que a equipe do projeto tome as seguintes medidas:
![Análise do incidente de ataque de reentrada Empréstimos Flash da Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-d41ac025ee561569cce3b941d7e07967.webp(
![Análise do incidente de ataque de reentrada do Empréstimos Flash da Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-2c4474781d661306bc8c432dad3942c0.webp(
Através dessas medidas, é possível aumentar significativamente a segurança e a estabilidade do projeto, prevenindo a ocorrência de eventos de ataque semelhantes.