Nova descoberta de uma vulnerabilidade de estouro de inteiro na linguagem Move
Recentemente, investigadores de segurança descobriram uma nova vulnerabilidade de estouro de inteiro ao analisar profundamente a linguagem Move. Esta vulnerabilidade ocorre durante o processo de verificação de segurança de referências da linguagem Move e pode levar a falhas nos nós.
A linguagem Move realiza a verificação de código antes da execução do bytecode, dividida em quatro etapas. Esta vulnerabilidade existe na etapa de reference_safety. A verificação de segurança de referências verifica principalmente se existem referências soltas, se o acesso a referências mutáveis é seguro e se o acesso a referências de armazenamento global é seguro, entre outros.
O processo de verificação analisará cada bloco básico. Um bloco básico é uma sequência de código sem instruções de ramificação, exceto a entrada e a saída. O Move identifica blocos básicos percorrendo o bytecode, procurando instruções de ramificação e instruções de repetição.
O principal processo para verificar a segurança das referências é: executar o código para cada bloco básico, gerar o estado após a execução e, em seguida, combinar os estados antes e depois da execução, atualizar o estado do bloco e propagá-lo para os blocos subsequentes. Este processo será repetido até que o estado não mude mais ou ocorra um erro.
A vulnerabilidade ocorre durante o processo de estado de mesclagem. Se o comprimento dos parâmetros da função mais o comprimento das variáveis locais for superior a 256, isso causará um estouro do tipo u8. Embora haja verificação de código para o número de variáveis locais, isso não inclui o comprimento dos parâmetros.
Usar este transbordamento pode alterar o estado do bloco, tornando o novo estado diferente do antigo. Quando o bloco básico é executado novamente, o acesso a um índice que não existe no novo estado fará com que o programa falhe.
Os pesquisadores apresentaram um código de prova de conceito que pode explorar essa vulnerabilidade e levar ao colapso do nó. Isso demonstra que até mesmo linguagens de tipagem estática podem ter problemas de segurança, sendo a auditoria de código muito importante. Recomenda-se que a linguagem Move adicione mais verificações de segurança em tempo de execução, e não apenas na fase de validação.
A descoberta desta vulnerabilidade mais uma vez demonstra que não existe código absolutamente seguro. Mesmo linguagens de tipos fortes podem ter vulnerabilidades. Os pesquisadores de segurança continuarão a analisar a linguagem Move em profundidade, em busca de mais problemas potenciais.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
9 gostos
Recompensa
9
7
Republicar
Partilhar
Comentar
0/400
BlockchainRetirementHome
· 9h atrás
O Move vai esfriar?
Ver originalResponder0
MemeEchoer
· 9h atrás
Caiu de novo, quantas vezes é hoje?
Ver originalResponder0
AirdropBlackHole
· 9h atrás
Esta onda de tendências está alinhada~ move explodiu novamente
Ver originalResponder0
UncleLiquidation
· 9h atrás
Já vamos reparar a panela, hein
Ver originalResponder0
MidnightSnapHunter
· 9h atrás
move esfriou
Ver originalResponder0
ApeWithNoChain
· 9h atrás
move está a falhar novamente? Já não vale a pena esperar...
Nova descoberta de vulnerabilidade de estouro de inteiro na linguagem Move pode causar a falha do nó
Nova descoberta de uma vulnerabilidade de estouro de inteiro na linguagem Move
Recentemente, investigadores de segurança descobriram uma nova vulnerabilidade de estouro de inteiro ao analisar profundamente a linguagem Move. Esta vulnerabilidade ocorre durante o processo de verificação de segurança de referências da linguagem Move e pode levar a falhas nos nós.
A linguagem Move realiza a verificação de código antes da execução do bytecode, dividida em quatro etapas. Esta vulnerabilidade existe na etapa de reference_safety. A verificação de segurança de referências verifica principalmente se existem referências soltas, se o acesso a referências mutáveis é seguro e se o acesso a referências de armazenamento global é seguro, entre outros.
O processo de verificação analisará cada bloco básico. Um bloco básico é uma sequência de código sem instruções de ramificação, exceto a entrada e a saída. O Move identifica blocos básicos percorrendo o bytecode, procurando instruções de ramificação e instruções de repetição.
O principal processo para verificar a segurança das referências é: executar o código para cada bloco básico, gerar o estado após a execução e, em seguida, combinar os estados antes e depois da execução, atualizar o estado do bloco e propagá-lo para os blocos subsequentes. Este processo será repetido até que o estado não mude mais ou ocorra um erro.
A vulnerabilidade ocorre durante o processo de estado de mesclagem. Se o comprimento dos parâmetros da função mais o comprimento das variáveis locais for superior a 256, isso causará um estouro do tipo u8. Embora haja verificação de código para o número de variáveis locais, isso não inclui o comprimento dos parâmetros.
Usar este transbordamento pode alterar o estado do bloco, tornando o novo estado diferente do antigo. Quando o bloco básico é executado novamente, o acesso a um índice que não existe no novo estado fará com que o programa falhe.
Os pesquisadores apresentaram um código de prova de conceito que pode explorar essa vulnerabilidade e levar ao colapso do nó. Isso demonstra que até mesmo linguagens de tipagem estática podem ter problemas de segurança, sendo a auditoria de código muito importante. Recomenda-se que a linguagem Move adicione mais verificações de segurança em tempo de execução, e não apenas na fase de validação.
A descoberta desta vulnerabilidade mais uma vez demonstra que não existe código absolutamente seguro. Mesmo linguagens de tipos fortes podem ter vulnerabilidades. Os pesquisadores de segurança continuarão a analisar a linguagem Move em profundidade, em busca de mais problemas potenciais.