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, resultando na perda de 663.101 MATIC. Este ataque explorou principalmente Empréstimos Flash e uma vulnerabilidade de reentrada, levando à perda de fundos do projeto.
Ao analisar a pilha de chamadas de transações, descobriu-se que o atacante executou um ataque de reentrada na função remove_liquidity. Esta função é responsável por remover a liquidez e devolver os tokens ao usuário. Como a Polygon tem uma estrutura semelhante à cadeia EVM, ocorreu uma reentrada do contrato durante o processo de transferência de MATIC.
Os ataques de reentrada ocorrem na fase de consulta de preços. O atacante transfere MATIC para o contrato do atacante ao remover a liquidez. Durante o processo de retorno, o atacante consulta primeiro o preço de um determinado token. Devido à atualização da variável self.D no contrato estar atrasada em relação à operação de transferência, ocorre um erro na obtenção do preço inicial.
O fluxo de execução da função remove_liquidity é o seguinte:
Destruir os tokens LP do usuário
Enviar fundos de staking para o usuário
Atualizar a variável self.D
A variável self.D é usada para o cálculo de preços e é atualizada tanto ao adicionar como ao remover liquidez. O atacante aproveitou operações com grandes quantias de fundos, fazendo com que o valor de self.D aumentasse significativamente ao adicionar liquidez, enquanto não foi atualizado a tempo ao removê-la.
Embora a função remove_liquidity utilize o decorador @nonreentrant('lock') para prevenir reentrâncias, o atacante contornou essa limitação através de empréstimos intercontratos.
Este ataque expôs a existência de vulnerabilidades de segurança no código do projeto. Para evitar problemas semelhantes, recomenda-se que a equipe do projeto tome as seguintes medidas:
Realizar auditorias de segurança rigorosas
Colocar a operação de modificação da variável antes da chamada externa
Utilizando múltiplas fontes de dados para obter preços
Seguir a norma de codificação "Checks-Effects-Interactions"
Ao otimizar a lógica do código e reforçar as medidas de segurança, é possível aumentar efetivamente a segurança e a estabilidade do projeto, prevenindo a ocorrência de ataques semelhantes.
https://img-cdn.gateio.im/webp-social/moments-9b2de9b00c52d3ff96d5a361df65769a.webp(
![Análise do Evento de Ataque de Reentrada de Empréstimos Flash da 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-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.
23 Curtidas
Recompensa
23
9
Compartilhar
Comentário
0/400
MEV_Whisperer
· 07-22 15:42
Esta panela só pode ser suportada.
Ver originalResponder0
AirdropCollector
· 07-22 15:27
Uma olhada e já não quero comprar.
Ver originalResponder0
GateUser-e87b21ee
· 07-20 04:01
equipa do projeto防护不给力啊
Ver originalResponder0
StakeOrRegret
· 07-19 19:17
Mais um projeto foi alvo de um ataque...
Ver originalResponder0
ZenMiner
· 07-19 19:09
O que é que este segurança está a fazer?
Ver originalResponder0
LayerZeroEnjoyer
· 07-19 19:09
Ai, é de novo a reentrada, é a velha tática.
Ver originalResponder0
LiquidityOracle
· 07-19 19:05
Quem mandou não levar a sério a escrita de código.
A Jarvis Network foi alvo de um ataque de reentrada de Empréstimos Flash, resultando na perda de 663,101 MATIC.
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, resultando na perda de 663.101 MATIC. Este ataque explorou principalmente Empréstimos Flash e uma vulnerabilidade de reentrada, levando à perda de fundos do projeto.
Ao analisar a pilha de chamadas de transações, descobriu-se que o atacante executou um ataque de reentrada na função remove_liquidity. Esta função é responsável por remover a liquidez e devolver os tokens ao usuário. Como a Polygon tem uma estrutura semelhante à cadeia EVM, ocorreu uma reentrada do contrato durante o processo de transferência de MATIC.
Os ataques de reentrada ocorrem na fase de consulta de preços. O atacante transfere MATIC para o contrato do atacante ao remover a liquidez. Durante o processo de retorno, o atacante consulta primeiro o preço de um determinado token. Devido à atualização da variável self.D no contrato estar atrasada em relação à operação de transferência, ocorre um erro na obtenção do preço inicial.
O fluxo de execução da função remove_liquidity é o seguinte:
A variável self.D é usada para o cálculo de preços e é atualizada tanto ao adicionar como ao remover liquidez. O atacante aproveitou operações com grandes quantias de fundos, fazendo com que o valor de self.D aumentasse significativamente ao adicionar liquidez, enquanto não foi atualizado a tempo ao removê-la.
Embora a função remove_liquidity utilize o decorador @nonreentrant('lock') para prevenir reentrâncias, o atacante contornou essa limitação através de empréstimos intercontratos.
Este ataque expôs a existência de vulnerabilidades de segurança no código do projeto. Para evitar problemas semelhantes, recomenda-se que a equipe do projeto tome as seguintes medidas:
Ao otimizar a lógica do código e reforçar as medidas de segurança, é possível aumentar efetivamente a segurança e a estabilidade do projeto, prevenindo a ocorrência de ataques semelhantes.
https://img-cdn.gateio.im/webp-social/moments-9b2de9b00c52d3ff96d5a361df65769a.webp(
![Análise do Evento de Ataque de Reentrada de Empréstimos Flash da Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-88f9283ee0923cff2a22405715721cd2.webp(
![Jarvis Network Empréstimos Flash重入攻击事件分析])https://img-cdn.gateio.im/webp-social/moments-d41ac025ee561569cce3b941d7e07967.webp(
![Análise do incidente de ataque de reentrada do Empréstimos Flash Jarvis Network])https://img-cdn.gateio.im/webp-social/moments-2c4474781d661306bc8c432dad3942c0.webp(