O módulo de segurança de referência Move contém uma vulnerabilidade de estouro de inteiro
Recentemente, investigadores de segurança descobriram uma nova vulnerabilidade de estouro de inteiro no módulo de segurança de referência da linguagem Move. Esta vulnerabilidade ocorre na etapa reference_safety do processo de validação de código, podendo levar a ataques de negação de serviço.
A linguagem Move realiza a verificação de código antes de executar o bytecode, dividindo-se em 4 etapas. A reference_safety é uma das etapas importantes, utilizada para verificar a segurança das referências, incluindo a verificação da presença de referências pendentes e se o acesso a referências mutáveis é seguro, entre outros.
A vulnerabilidade origina-se do tratamento da quantidade de variáveis locais durante o processo de verificação de segurança. Na função join_, se a soma do número de parâmetros da função e do número de variáveis locais exceder 256, ocorrerá um estouro do tipo u8. Embora a linguagem Move tenha um processo para verificar o número de locals, ele apenas verifica a quantidade de variáveis locais, sem incluir a quantidade de parâmetros.
Os atacantes podem construir códigos Move especiais para explorar esta vulnerabilidade de estouro e alterar o estado do bloco de código. Quando o bloco básico é executado novamente, se o índice que a instrução precisa acessar não existir no novo mapeamento de variáveis locais, isso resultará em um panic, fazendo com que o nó falhe.
Pesquisadores de segurança forneceram um código de prova de conceito (PoC), que, ao configurar um grande número de parâmetros e variáveis locais, desencadeia um estouro de inteiro, levando finalmente a um panic.
Esta vulnerabilidade mais uma vez demonstra que mesmo linguagens bem projetadas podem ter falhas de segurança. Para a linguagem Move, recomenda-se aumentar mais verificações de segurança em tempo de execução, e não apenas confiar nas verificações da fase de validação. Isso também reflete a importância da auditoria de código, que pode detectar prontamente a negligência dos desenvolvedores.
Como pioneiros na pesquisa de segurança da linguagem Move, a equipe de segurança afirmou que continuará a investigar profundamente os problemas de segurança do Move. Eles também descobriram outra vulnerabilidade na linguagem Move, que será divulgada em mais detalhes posteriormente.
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.
13 Curtidas
Recompensa
13
4
Compartilhar
Comentário
0/400
SoliditySlayer
· 07-11 20:03
Vulnerabilidades há todos os dias, não é nada de mais.
Ver originalResponder0
BlockchainGriller
· 07-11 20:02
Mais uma vez bugs, a música de Move está cada vez mais enigmática~
Vulnerabilidade de estouro de inteiro exposta no módulo de segurança de referência Move, podendo causar a queda do nó.
O módulo de segurança de referência Move contém uma vulnerabilidade de estouro de inteiro
Recentemente, investigadores de segurança descobriram uma nova vulnerabilidade de estouro de inteiro no módulo de segurança de referência da linguagem Move. Esta vulnerabilidade ocorre na etapa reference_safety do processo de validação de código, podendo levar a ataques de negação de serviço.
A linguagem Move realiza a verificação de código antes de executar o bytecode, dividindo-se em 4 etapas. A reference_safety é uma das etapas importantes, utilizada para verificar a segurança das referências, incluindo a verificação da presença de referências pendentes e se o acesso a referências mutáveis é seguro, entre outros.
A vulnerabilidade origina-se do tratamento da quantidade de variáveis locais durante o processo de verificação de segurança. Na função join_, se a soma do número de parâmetros da função e do número de variáveis locais exceder 256, ocorrerá um estouro do tipo u8. Embora a linguagem Move tenha um processo para verificar o número de locals, ele apenas verifica a quantidade de variáveis locais, sem incluir a quantidade de parâmetros.
Os atacantes podem construir códigos Move especiais para explorar esta vulnerabilidade de estouro e alterar o estado do bloco de código. Quando o bloco básico é executado novamente, se o índice que a instrução precisa acessar não existir no novo mapeamento de variáveis locais, isso resultará em um panic, fazendo com que o nó falhe.
Pesquisadores de segurança forneceram um código de prova de conceito (PoC), que, ao configurar um grande número de parâmetros e variáveis locais, desencadeia um estouro de inteiro, levando finalmente a um panic.
Esta vulnerabilidade mais uma vez demonstra que mesmo linguagens bem projetadas podem ter falhas de segurança. Para a linguagem Move, recomenda-se aumentar mais verificações de segurança em tempo de execução, e não apenas confiar nas verificações da fase de validação. Isso também reflete a importância da auditoria de código, que pode detectar prontamente a negligência dos desenvolvedores.
Como pioneiros na pesquisa de segurança da linguagem Move, a equipe de segurança afirmou que continuará a investigar profundamente os problemas de segurança do Move. Eles também descobriram outra vulnerabilidade na linguagem Move, que será divulgada em mais detalhes posteriormente.