Slow Mist: Uma breve análise do Stars Arena sendo hackeado

fundo

De acordo com o alerta de segurança do sistema SlowMist MistEye, em 7 de outubro de 2023, o Stars Arena, protocolo social da rede Avalanche, foi atacado, causando um prejuízo de aproximadamente US$ 2,9 milhões. A equipe de segurança do SlowMist analisou brevemente o incidente do ataque e compartilhou os resultados da seguinte forma.

Informação relacionada

Endereço do invasor:

Contrato de ataque:

Transação de ataque:

Núcleo de Ataque

O invasor explora a vulnerabilidade de reentrada para adulterar o preço correspondente à sua parcela de depósito. Posteriormente, durante a venda, ocorreu manipulação de preços semelhante devido à dependência do cálculo de preços da manipulação maliciosa. Ao calcular com precisão o preço atualizado das ações na reentrada, o invasor rouba fundos do contrato.

Análise de transação

Podemos descobrir que há uma chamada reentrante na transação de ataque e analisamos gradualmente o método de chamada descompilando o código.

O invasor primeiro criou contratos de ataque (0x7f283 e 0xdd9af), chamado método 0xe9ccf3a3 da Stars Arena: compartilha o contrato por meio do contrato de ataque e, em seguida, depositou 1 token AVAX.

De acordo com o rastreamento passo a passo do código descompilado, o método 0xe9ccf3a3 usado pela primeira vez pelo invasor é uma função semelhante a um depósito, que chama os métodos 0x326c e 0x2058. O método 0x326c é apenas uma chamada retornada como parâmetro, enquanto o método 0x2058 é semelhante a uma função que trata da compra ou troca de um determinado token. Este método usa a quantidade e o endereço do token AVAX passados em 0xe9ccf3a3 para realizar a próxima operação , compartilhar e cobrar. calcular.

Seguindo a lógica de chamada da linha 92 do método 0x2058, podemos descobrir que o método 0x1a9b é uma função de cálculo, o resultado calculado é um valor semelhante ao preço e seu valor de retorno é o recém-calculado v24 / 0xde0b6b3a7640000 ou _initialPrice.

Existem chamadas de baixo nível nos métodos 0x307c e 0x30ef nas linhas 109, 110 e 116, e a chamada de 0x30ef ainda é uma chamada externa para g1, que é o endereço do contrato de ataque 0xdd9af de entrada. A função não possui restrições de bloqueio anti-reentrada e, após a chamada externa ser executada, este método executará o julgamento if subsequente para atualizar os parâmetros field0.length e field0. Não há dúvida de que a reentrada ocorre aqui.

Vejamos os dados construídos pelo invasor na chamada reentrante.

A chamada externa reentrante é o método 0x5632b2e4 e 4 parâmetros construídos pelo invasor são passados. Esses parâmetros são convertidos em 91000000000 por meio de conversão hexadecimal.

Conforme mencionado acima, a chamada externa para o método 0x5632b2e4 é executada antes do julgamento if (g0 == _getMyShares[address(g1)][msg.sender]). Neste momento, o valor de field0.lengt é 0 e não foi atualizado. O invasor apenas usou esse método para ignorar o julgamento do método 0x5632b2e4 e alterou os quatro estados de parâmetro a seguir de msg.sender, que é o contrato de ataque 0xdd9af, para os dados construídos quando a chamada externa é feita.

Após as operações acima, o invasor ligou para sellShares para vender sua ação e obteve 266.102,97278 AVAX.

Aprofundando-se na função sellShares, a função primeiro chamou o método 0x1a9b, e houve uma chamada no método 0x2058 anterior, que é uma função que trata da compra ou troca de determinados tokens. Podemos descobrir que o método 0x2329 no método 0x1a9b atualizará o proprietário_9f [g0] , e este parâmetro foi modificado para 91000000000 construído pelo invasor durante a reentrada.

Retorne ao método 0x1a9b e recalcule com base no valor construído anteriormente de forma maliciosa (veja os comentários para o valor do cálculo).

Após o cálculo acima, o preço correspondente à ação recém-calculada foi alterado e o resultado calculado é 274.333,061476814e18. Após uma série de cobranças de taxas, o invasor usou uma construção maliciosa para manipular o preço sem modificar as ações, vendeu as ações e obteve lucro com sucesso.

Resumir

O núcleo deste ataque reside na atualização da dependência do cálculo de preços causada pelo ataque de reentrada, que por sua vez leva a uma manipulação maliciosa de preços semelhante. A equipe de segurança do SlowMist recomenda que a parte do projeto tente o seu melhor para passar por auditorias de várias empresas de segurança antes de implantar e liberar o contrato; ao mesmo tempo, a especificação de codificação Checks-Effects-Interactions deve ser atendida tanto quanto possível durante a codificação, e bloqueios anti-reentrada devem ser adicionados.

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.
  • Recompensa
  • Comentar
  • Partilhar
Comentar
0/400
Nenhum comentário
Negocie cripto em qualquer lugar e a qualquer hora
qrCode
Digitalizar para transferir a aplicação Gate
Novidades
Português (Portugal)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)