PT-2021-19817 · Cranelift · Cranelift
Javier Cabrera Arteaga
·
Publicado
2021-05-21
·
Atualizado
2024-06-15
·
CVE-2021-32629
CVSS v3.1
7.2
Alta
| Vetor | AV:L/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:N |
Nome do software vulnerável e versões afetadas
Cranelift versão 0.73.0
Descrição
Existe um bug no backend x64 do Cranelift que pode criar uma situação que resulte em uma possível fuga da sandbox em um módulo WebAssembly. O bug realiza uma extensão de sinal em vez de uma extensão de zero em um valor carregado da pilha sob circunstâncias específicas. Se essas circunstâncias ocorrerem, o bug pode permitir o acesso a endereços de memória de até 2 GiB antes do início da pilha alocada para o módulo WebAssembly. O impacto desse bug depende muito da implementação da pilha e é mitigado se não houver memória mapeada no intervalo acessível por meio desse bug. O problema ocorreria quando um valor
i32 é maior ou igual a 0x8000 0000, o valor é transbordado e recarregado pelo alocador de registros, o valor é produzido por uma instrução “especial”, o valor é então estendido a zero para 64 bits e o valor de 64 bits resultante é usado. Nessas circunstâncias, há um potencial escape da sandbox quando o valor i32 é um ponteiro.Recomendações
Para resolver o problema, os usuários da versão 0.73.0 do Cranelift devem atualizar para a versão 0.73.1 ou 0.74. Os usuários do Cranelift anteriores à versão 0.73.0 devem atualizar para a versão 0.73.1 ou 0.74, caso não estivessem usando o backend padrão antigo. Como solução temporária, considere desativar o uso do novo backend até que um patch esteja disponível. Restrinja o acesso ao módulo vulnerável para minimizar o risco de exploração. Evite usar o valor
i32 no affExploit
Correção
Out of bounds Read
Access of Memory Location After End of Buffer
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Identificadores relacionados
Produtos afetados
Cranelift