PT-2021-22468 · Wasmtime · Wasmtime

Fitzgen

·

Publicado

2021-09-17

·

Atualizado

2021-12-21

·

CVE-2021-39216

CVSS v3.1

6.3

Média

VetorAV: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 👾

Enumeração de Fraquezas

Identificadores relacionados

CVE-2021-39216
GHSA-4873-36H9-WV49
GHSA-Q879-9G95-56MX
GHSA-V4CP-H94R-M7XF
PYSEC-2021-320
PYSEC-2021-321
PYSEC-2021-322
RUSTSEC-2021-0110

Produtos afetados

Wasmtime