PT-2021-22468 · Wasmtime · Wasmtime
Fitzgen
·
Publicado
2021-09-17
·
Atualizado
2021-12-21
·
CVE-2021-39216
CVSS v3.1
6.3
Média
| Vetor | AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:H |
Nome do software vulnerável e versões afetadas
Versões do Wasmtime de 0.19.0 a 0.29.0
Descrição
O problema está relacionado a um bug de uso após liberação (use-after-free) ao passar
externrefs do host para o conteúdo Wasm do convidado. Para acionar o bug, vários externrefs devem ser passados do host para uma instância Wasm ao mesmo tempo. O bug pode ser acionado ao passar vários externrefs como argumentos do código do host para uma função Wasm ou ao retornar vários externrefs para o Wasm a partir de uma função de retorno com múltiplos valores definida no host. Se a VMExternRefActivationsTable do Wasmtime ficar cheia após a passagem do primeiro externref, a passagem do segundo externref poderia acionar uma coleta de lixo. No entanto, o primeiro externref não é fixado até que o controle seja passado para o Wasm e, portanto, poderia ser recuperado pelo coletor se nada mais mantivesse uma referência a ele ou o mantivesse ativo de outra forma. Então, quando o controle foi passado para o Wasm após a coleta de lixo, o Wasm poderia usar o primeiro externref, que a essa altura já havia sido liberado. Além disso, há um bug de liberação inválida e leitura e gravação fora dos limites ao executar o Wasm que usa externrefs no Wasmtime. O bug pode ser acionado quando o Wasmtime está executando o Wasm que usa externrefs, o host cria externrefs não nulos, o Wasmtime realiza uma coleta de lixo e deve haver um quadro Wasm na pilha que esteja em um ponto seguro de GC onde não haja referências ativas nesse ponto seguro, e háCorreção
Memory Corruption
Use After Free
Out of bounds Read
Type Confusion
Encontrou algum problema na descrição? Tem algo a acrescentar? Fique à vontade para nos escrever 👾
Identificadores relacionados
Produtos afetados
Wasmtime