O módulo de segurança da linguagem Move detectou uma vulnerabilidade de estouro de inteiro que pode causar um ataque DoS.

Foi descoberto uma nova vulnerabilidade de estouro de inteiro no módulo de segurança da linguagem Move.

Recentemente, durante uma pesquisa aprofundada na linguagem Move, descobrimos uma nova vulnerabilidade de estouro de inteiro. Esta vulnerabilidade existe no processo de verificação de segurança de referências, e seu processo de ativação é bastante interessante. Este artigo irá analisar a fundo essa vulnerabilidade e explorar alguns conhecimentos de fundo sobre a linguagem Move.

A linguagem Move realiza a validação da unidade de código antes de executar o bytecode, dividindo-se em quatro etapas. Esta vulnerabilidade ocorre na etapa reference_safety. Esta etapa é responsável por validar a segurança das referências, incluindo verificar se existem referências pendentes, se o acesso a referências mutáveis é seguro, e se o acesso a referências de armazenamento global é seguro, entre outros.

Numen Cyber descobriu outra vulnerabilidade grave na linguagem move

A função de entrada que invoca a verificação de segurança chamará analyze_function, que valida cada bloco básico. Um bloco básico refere-se a uma sequência de código que não possui instruções de ramificação, exceto a entrada e a saída. A linguagem Move identifica blocos básicos percorrendo o bytecode e procurando todas as instruções de ramificação e sequências de instruções de loop.

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

A linguagem Move suporta dois tipos de referências: referências imutáveis (&) e referências mutáveis (&mut). O módulo de segurança de referências valida a legalidade de todas as operações de referência através da análise das instruções de bytecode nos blocos básicos das funções. O processo de validação utiliza a estrutura AbstractState, que contém o gráfico de empréstimos e os locais, para garantir a segurança das referências dentro da função.

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

A vulnerabilidade ocorre na função join_. Quando o comprimento dos parâmetros mais o comprimento das variáveis locais excede 256, devido à função iter_locals() retornar um iterador do tipo u8, isso pode causar um estouro de inteiro. Embora o Move tenha um processo de verificação do número de locals, no módulo check bounds, apenas verifica os locals, sem incluir o comprimento dos parâmetros.

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

Essa sobrecarga de inteiro pode levar a um ataque de negação de serviço (DoS). Quando há um bloco de código em loop e a sobrecarga altera o estado do bloco, o novo mapa de locais é diferente do anterior. Ao executar novamente a função execute_block, se o índice que a instrução precisa acessar não existir no novo mapa de locais do AbstractState, isso causará um DoS.

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

Fornecemos um PoC que pode ser reproduzido no git. O bloco de código neste PoC contém uma instrução de desvio incondicional que, a cada execução da última instrução, salta de volta para a primeira instrução, chamando repetidamente as funções execute_block e join.

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

Esta vulnerabilidade demonstra que mesmo linguagens que priorizam a segurança, como Move, podem ter riscos de segurança. A importância da auditoria de código é inegável, e os programadores não estão imunes a descuidos. Como líderes na pesquisa de segurança da linguagem Move, continuaremos a investigar profundamente os problemas de segurança do Move.

Recomendamos que os designers da linguagem Move adicionem mais código de verificação em tempo de execução para evitar situações inesperadas. Atualmente, a Move realiza verificações de segurança principalmente na fase de verificação, mas isso pode não ser suficiente. Uma vez que a validação é contornada, a falta de reforço de segurança suficiente na fase de execução pode levar a problemas mais graves.

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

Numen Cyber descobriu mais uma 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 outra vulnerabilidade crítica na linguagem move

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

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

Numen Cyber descobriu uma nova vulnerabilidade grave na linguagem move

MOVE0.62%
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
  • 5
  • Repostar
  • Compartilhar
Comentário
0/400
GasFeeWhisperervip
· 08-16 04:23
o move caiu de novo
Ver originalResponder0
StopLossMastervip
· 08-16 03:33
É um buraco cavado por alguém da própria casa, não é?
Ver originalResponder0
LiquidationWatchervip
· 08-16 03:31
Mais uma vez encontraram uma falha.
Ver originalResponder0
ZKProofEnthusiastvip
· 08-16 03:28
Este bug tornou-se um grande problema.
Ver originalResponder0
ZenMinervip
· 08-16 03:08
Está envenenado, o move vai ter que receber um patch de novo.
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)