Vulnerabilidade de estouro de inteiro no módulo de segurança de referência da Move pode causar negação de serviço no nó

robot
Geração do resumo em andamento

O módulo de segurança da linguagem Move apresenta uma vulnerabilidade de estouro de inteiro

Recentemente, investigadores de segurança descobriram uma grave vulnerabilidade de estouro de inteiro ao analisarem a linguagem Move. Esta vulnerabilidade existe no módulo de verificação de segurança de referências e pode levar a ataques de negação de serviço. Este artigo irá detalhar o princípio e o impacto desta vulnerabilidade.

Contexto da vulnerabilidade

A linguagem Move realiza uma verificação de código antes da execução do bytecode, incluindo uma verificação de segurança de referências. Este processo é dividido em várias etapas, e a vulnerabilidade descoberta desta vez ocorreu na fase de verificação de segurança de referências.

O principal processo de verificação de segurança é:

  1. Dividir o código em blocos básicos
  2. Analisar cada bloco básico
  3. Estado antes e depois da análise de fusão
  4. Propagar o resultado para os blocos subsequentes

Um struct AbstractState é utilizado para representar o estado de análise, contendo informações sobre locals e o gráfico de empréstimos.

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Detalhes da Vulnerabilidade

A vulnerabilidade ocorre na função join_ do estado de análise de mesclagem. Esta função itera sobre os locals usando o tipo u8, mas se a soma do comprimento dos parâmetros e do comprimento das variáveis locais exceder 256, ocorrerá um estouro de inteiro.

Especificamente:

  • usar self.iter_locals() para iterar sobre locals na função join_
  • iter_locals() retorna um iterador do tipo u8
  • Se o comprimento do parâmetro + comprimento da variável local > 256, o iterador irá transbordar.

Embora o Move tenha um processo de verificação do número de locais, ele apenas verifica o número de variáveis locais, sem incluir o comprimento dos parâmetros.

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Numen Cyber descobriu uma vulnerabilidade crítica na linguagem move

Numen Cyber descobriu mais uma vulnerabilidade grave na linguagem move

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Numen Cyber descobriu outra vulnerabilidade crítica na linguagem move

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Exploração de vulnerabilidades

Um atacante pode construir um bloco de código em loop, utilizando um overflow para alterar o estado do bloco:

  1. O número total de parâmetros e variáveis locais deve ser maior que 256
  2. Após a primeira execução, o comprimento do novo mapa de locais ficará menor devido ao estouro.
  3. Acesso a um índice de locals que não existe durante a execução novamente causará panic

Isto pode provocar um ataque de negação de serviço ao nó.

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

Impacto da Vulnerabilidade

Esta vulnerabilidade pode levar a:

  1. O verificador de bytecode Move falhou.
  2. Nós de blockchain dependentes do Move recusam serviços
  3. Contornar algumas verificações de segurança

Sugestões de Correção

  1. Adicionar verificação do comprimento dos parâmetros na verificação de fronteira de locals
  2. Use tipos inteiros maiores como u16 para iterar sobre locals
  3. Adicionar verificações de segurança adicionais em tempo de execução

Resumo

Esta vulnerabilidade mais uma vez demonstra que, mesmo linguagens bem projetadas podem ter falhas de segurança. Para a linguagem Move, recomenda-se adicionar verificações de segurança necessárias não apenas na fase de validação, mas também em tempo de execução. Os pesquisadores de segurança continuarão a analisar a linguagem Move em profundidade para descobrir mais problemas potenciais.

Numen Cyber descobriu uma nova vulnerabilidade crítica na linguagem move

MOVE2.94%
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
  • 6
  • Repostar
  • Compartilhar
Comentário
0/400
BackrowObservervip
· 08-11 11:51
move mais uma vez falhou
Ver originalResponder0
MidnightTradervip
· 08-10 07:32
Quem é o novato que escreveu este código? Estou de joelhos.
Ver originalResponder0
MevShadowrangervip
· 08-10 07:30
Está a brincar com o overflow de inteiros.
Ver originalResponder0
WagmiOrRektvip
· 08-10 07:29
Ainda bem que eu fechei todas as posições do Move antes.
Ver originalResponder0
CommunityWorkervip
· 08-10 07:27
move vai ter outro colapso? Para que tanto alvoroço?
Ver originalResponder0
CryingOldWalletvip
· 08-10 07:26
Mais uma falha? O move também já não é tão bom, certo?
Ver originalResponder0
  • 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)