O módulo de segurança da linguagem Move detectou uma vulnerabilidade de estouro de inteiro que pode levar a um ataque de negação de serviço.

robot
Geração de resumo em curso

Módulo de segurança de referência Move descobre nova vulnerabilidade de estouro de inteiro

Recentemente, os pesquisadores, ao analisarem profundamente a linguagem Move, descobriram uma nova vulnerabilidade de estouro de inteiro. Esta vulnerabilidade existe no módulo de segurança de referências e pode levar a graves ataques de negação de serviço. Este artigo irá detalhar o processo de descoberta desta vulnerabilidade e os detalhes técnicos.

Numen Cyber descobriu uma nova vulnerabilidade grave na linguagem move

Mecanismo de segurança de referência da linguagem Move

A linguagem Move inspira-se na filosofia do Rust e suporta dois tipos de referências: referência imutável (&) e referência mutável (&mut). O módulo de segurança de referências valida a legalidade de todas as operações de referência através da varredura de blocos básicos e instruções de bytecode nas funções.

O processo de verificação inclui as seguintes etapas:

  1. Analisar cada bloco básico
  2. Executar código de bloco básico para gerar estado post
  3. Combinar o estado pré e o estado pós
  4. Atualizar o estado do bloco e propagá-lo para blocos subsequentes

Entre eles, o estado contém dois componentes-chave, locals e borrow graph, usados para garantir a segurança das referências dentro da função.

Numen Cyber descobriu outra vulnerabilidade crítica na linguagem move

Detalhes da Vulnerabilidade

A vulnerabilidade ocorre na função join_ que referencia o módulo de segurança. Quando a soma do comprimento dos parâmetros da função e o comprimento das variáveis locais é superior a 256, a utilização do tipo u8 para iterar sobre locals pode causar um estouro de inteiro.

Especificamente:

  • iter_locals() retorna um iterador do tipo u8
  • Quando o comprimento dos parâmetros + o comprimento das variáveis locais > 256, ocorrerá um overflow.
  • Os desenvolvedores parecem estar cientes de que é necessário verificar isso, mas o código real só verifica o número de variáveis locais.

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

Exploração de vulnerabilidades

Usando essa vulnerabilidade, é possível construir um bloco de código em loop:

  1. Ao ser executado pela primeira vez, aciona um overflow, alterando o mapa locals.
  2. Na segunda execução, acesso a um índice de locals que não existe, causando panic

Isto pode causar a falha de nós, resultando em um ataque de negação de serviço.

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

Reproduzir a Vulnerabilidade

Os pesquisadores forneceram um PoC para reproduzir esta vulnerabilidade:

  1. Defina parameters e locals ambos como SignatureIndex(0), fazendo num_locals igual a 264
  2. Após a primeira execução, o comprimento do novo mapa de locais torna-se 8
  3. Na segunda execução, copyloc(57) acessa um offset inexistente, causando um panic.

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

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

Resumo e Sugestões

Esta vulnerabilidade indica:

  1. Não existe código absolutamente seguro, a verificação estática pode ser contornada.
  2. A auditoria de código é muito importante, pois pode descobrir a negligência dos desenvolvedores.
  3. A linguagem Move deve aumentar a verificação em tempo de execução, e não apenas depender da verificação de segurança na fase de validação.

Os pesquisadores pedem aos designers da linguagem Move que fortaleçam os mecanismos de segurança em tempo de execução para evitar que vulnerabilidades semelhantes sejam exploradas e causem problemas mais graves.

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

Ver original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
  • Recompensa
  • 6
  • Partilhar
Comentar
0/400
staking_grampsvip
· 13h atrás
Move esta falha é muito amadora, não é?
Ver originalResponder0
ChainMaskedRidervip
· 13h atrás
A habilidade de escrever código não é muito refinada, não é?
Ver originalResponder0
MissedTheBoatvip
· 13h atrás
Mais uma falha, Move também não é grande coisa.
Ver originalResponder0
GateUser-c799715cvip
· 13h atrás
Quem escreveu o código? Como é que está tão fraco?
Ver originalResponder0
YieldChaservip
· 13h atrás
u8 teve problemas novamente
Ver originalResponder0
BridgeJumpervip
· 13h atrás
Desenvolvimento não padronizado, corrigir bugs com duas lágrimas.
Ver originalResponder0
  • Pino
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)