O módulo de segurança de referência da linguagem Move apresenta uma vulnerabilidade de estouro de inteiro
Recentemente, uma grave vulnerabilidade de estouro de inteiro foi descoberta no módulo de segurança de referência da linguagem Move. Esta vulnerabilidade pode levar a ataques de negação de serviço e representa uma ameaça potencial à segurança da linguagem Move.
A linguagem Move realiza a verificação de código antes da execução do bytecode, dividindo-se em várias etapas. Esta vulnerabilidade ocorre na etapa reference_safety, que é responsável por verificar a segurança das referências, incluindo a verificação da existência de referências pendentes e se o acesso a referências mutáveis é seguro.
A raiz da vulnerabilidade reside em um problema de overflow de inteiro no módulo de segurança referenciado. Quando a soma do número de parâmetros da função e do número de variáveis locais excede 256, o uso do tipo u8 para iterar sobre as variáveis locais pode causar um overflow de inteiro. Esse overflow pode ser explorado para contornar verificações de segurança, resultando em um ataque de negação de serviço.
Especificamente, o processo de exploração de vulnerabilidades é o seguinte:
Criar um bloco de código Move que contenha um loop, para que seja executado várias vezes.
Defina um grande número de parâmetros de função e variáveis locais, de modo que a soma total exceda 256.
Na primeira execução, devido a um estouro de inteiro, o comprimento do novo mapa de locais torna-se um valor muito pequeno.
Durante a execução subsequente, tentar acessar um índice de variável local inexistente resulta em panic e falha do programa.
Esta vulnerabilidade expõe que mesmo linguagens focadas em segurança como o Move podem ter riscos de segurança negligenciados. Ela nos lembra da importância da auditoria de código e da necessidade de considerações de segurança mais abrangentes no design de linguagens.
Para os utilizadores e desenvolvedores da linguagem Move, recomenda-se que estejam atentos às atualizações de segurança oficiais. Ao escrever código Move, também é importante controlar o número de parâmetros de função e variáveis locais, evitando assim a ativação de tais situações limite.
De uma perspectiva mais macro, essa vulnerabilidade também reflete que depender apenas da verificação estática pode não ser suficiente para garantir a segurança total. No futuro, a linguagem Move pode precisar adicionar mais verificações dinâmicas em tempo de execução para evitar problemas de segurança semelhantes.
De um modo geral, a descoberta desta vulnerabilidade prova mais uma vez a importância da pesquisa contínua em segurança para melhorar a segurança da tecnologia blockchain. À medida que a linguagem Move se expande na área do Web3, esperamos ver mais medidas de melhoria de segurança sendo introduzidas para construir um ecossistema de contratos inteligentes mais robusto e confiável.
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.
17 Curtidas
Recompensa
17
9
Compartilhar
Comentário
0/400
FUDwatcher
· 07-11 15:51
A perda do overflow, eu ainda estava a falar do Move na semana passada.
Ver originalResponder0
PriceOracleFairy
· 07-10 20:42
omg move a ser destruído por um overflow básico u8... como é que os auditores perderam isto smh
A linguagem Move cita a vulnerabilidade de estouro de inteiros do módulo de segurança que ameaça a segurança do código.
O módulo de segurança de referência da linguagem Move apresenta uma vulnerabilidade de estouro de inteiro
Recentemente, uma grave vulnerabilidade de estouro de inteiro foi descoberta no módulo de segurança de referência da linguagem Move. Esta vulnerabilidade pode levar a ataques de negação de serviço e representa uma ameaça potencial à segurança da linguagem Move.
A linguagem Move realiza a verificação de código antes da execução do bytecode, dividindo-se em várias etapas. Esta vulnerabilidade ocorre na etapa reference_safety, que é responsável por verificar a segurança das referências, incluindo a verificação da existência de referências pendentes e se o acesso a referências mutáveis é seguro.
A raiz da vulnerabilidade reside em um problema de overflow de inteiro no módulo de segurança referenciado. Quando a soma do número de parâmetros da função e do número de variáveis locais excede 256, o uso do tipo u8 para iterar sobre as variáveis locais pode causar um overflow de inteiro. Esse overflow pode ser explorado para contornar verificações de segurança, resultando em um ataque de negação de serviço.
Especificamente, o processo de exploração de vulnerabilidades é o seguinte:
Criar um bloco de código Move que contenha um loop, para que seja executado várias vezes.
Defina um grande número de parâmetros de função e variáveis locais, de modo que a soma total exceda 256.
Na primeira execução, devido a um estouro de inteiro, o comprimento do novo mapa de locais torna-se um valor muito pequeno.
Durante a execução subsequente, tentar acessar um índice de variável local inexistente resulta em panic e falha do programa.
Esta vulnerabilidade expõe que mesmo linguagens focadas em segurança como o Move podem ter riscos de segurança negligenciados. Ela nos lembra da importância da auditoria de código e da necessidade de considerações de segurança mais abrangentes no design de linguagens.
Para os utilizadores e desenvolvedores da linguagem Move, recomenda-se que estejam atentos às atualizações de segurança oficiais. Ao escrever código Move, também é importante controlar o número de parâmetros de função e variáveis locais, evitando assim a ativação de tais situações limite.
De uma perspectiva mais macro, essa vulnerabilidade também reflete que depender apenas da verificação estática pode não ser suficiente para garantir a segurança total. No futuro, a linguagem Move pode precisar adicionar mais verificações dinâmicas em tempo de execução para evitar problemas de segurança semelhantes.
De um modo geral, a descoberta desta vulnerabilidade prova mais uma vez a importância da pesquisa contínua em segurança para melhorar a segurança da tecnologia blockchain. À medida que a linguagem Move se expande na área do Web3, esperamos ver mais medidas de melhoria de segurança sendo introduzidas para construir um ecossistema de contratos inteligentes mais robusto e confiável.