Análise profunda da vulnerabilidade de estouro de inteiro no módulo de segurança da linguagem Move

robot
Geração do resumo em andamento

Análise da vulnerabilidade de estouro de inteiros no módulo de segurança da linguagem Move

Este artigo analisará em profundidade uma nova vulnerabilidade de estouro de inteiro encontrada na linguagem Move. Esta vulnerabilidade existe no módulo de verificação de segurança de referência e pode causar a falha de nós. Através da explicação deste artigo, os leitores terão uma compreensão mais profunda da linguagem Move.

Contexto da vulnerabilidade

A linguagem Move realiza a verificação de código antes da execução do bytecode, dividida em 4 etapas. Esta vulnerabilidade ocorre durante a etapa de verificação de segurança (reference_safety).

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

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

O chave é manter a estrutura AbstractState, que inclui locals e o gráfico de empréstimos para garantir a segurança das referências.

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

Detalhes da Vulnerabilidade

A vulnerabilidade existe na função join_. Quando o comprimento dos parâmetros da função somado ao comprimento das variáveis locais é superior a 256, devido à utilização da iteração do tipo u8, ocorre um estouro de inteiro.

Especificamente:

  • iter_locals() retorna um iterador do tipo u8
  • Ocorre um overflow quando o comprimento do parâmetro + o comprimento da variável local > 256
  • O desenvolvedor apenas verificou o número de variáveis locais, ignorando o comprimento dos parâmetros.

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

Exploração de Vulnerabilidades

É possível construir um bloco básico de loop que altera o estado usando overflow:

  1. Definir o comprimento total de parâmetros e variáveis locais > 256
  2. Após a primeira execução, o tamanho dos novos locals transbordou e ficou menor.
  3. Ao executar novamente, acessar um índice locals que não existe provoca panic

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

Demonstração PoC

Forneceu código PoC reproduzível, incluindo um bloco básico em loop infinito. Ao definir parâmetros adequados e comprimento de variáveis locais, é possível desencadear um DoS.

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 uma vulnerabilidade crítica na linguagem move

Numen Cyber descobriu uma nova 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

Descoberta exclusiva da Numen Cyber de uma nova vulnerabilidade crítica na linguagem move

Conclusão

Esta vulnerabilidade demonstra novamente que:

  1. Não há código absolutamente seguro.
  2. A importância da auditoria de código
  3. O tempo de execução da linguagem Move precisa de mais verificações de segurança
  4. A validação estática pode ser contornada, a segurança em tempo de execução é igualmente importante

Como líder em pesquisa de segurança da linguagem Move, continuaremos a explorar profundamente as questões de segurança relacionadas e a compartilhar os resultados da pesquisa com a comunidade.

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

MOVE1.18%
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
  • 8
  • Compartilhar
Comentário
0/400
WhaleMinionvip
· 07-26 05:03
o ataque de overflow já chegou
Ver originalResponder0
MevTearsvip
· 07-24 04:19
Quem escreveu este código não deve verificar dez vezes.
Ver originalResponder0
GasFeeCryervip
· 07-23 13:34
As falhas podem ser exploradas, e o DoS é cheiroso.
Ver originalResponder0
TopEscapeArtistvip
· 07-23 05:47
Errar é o dia-a-dia de um Bear Market, é necessário ter mais cuidado ao mover pedras.
Ver originalResponder0
TokenomicsTherapistvip
· 07-23 05:45
Esse bug é realmente assustador.
Ver originalResponder0
TxFailedvip
· 07-23 05:43
lmao clássico estouro de inteiro... aprendi sobre isso da forma cara, para ser sincero
Ver originalResponder0
SchrödingersNodevip
· 07-23 05:40
Fico nervoso, como é que há tantos problemas?
Ver originalResponder0
AltcoinMarathonervip
· 07-23 05:40
hodling através da tempestade de overflow de inteiros... apenas mais um marco na ultra web3
Ver originalResponder0
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)