Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en múltiples "externref"s en Wasmtime. para WebAssembly y WASI (CVE-2021-39216)

Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-416 Utilización después de liberación
Fecha de publicación:
17/09/2021
Última modificación:
07/11/2023

Descripción

Wasmtime es un tiempo de ejecución de código abierto para WebAssembly y WASI. En Wasmtime desde la versión 0.19.0 y versiones anteriores a 0.30.0, se presentaba un error de uso de memoria previamente liberada cuando se pasaban "externref"s desde el host al contenido del Wasm invitado. Para desencadenar el bug, debes pasar explícitamente múltiples "externref"s desde el host a una instancia de Wasm al mismo tiempo, ya sea pasando múltiples "externref"s como argumentos desde el código del host a una función de Wasm, o devolviendo múltiples "externref"s a Wasm desde una función de retorno multivalente definida en el host. Si no tienes código de host que coincida con una de estas formas, entonces no te afecta. Si la "VMExternRefActivationsTable" de Wasmtime se llenó de capacidad después de pasar la primera "externref", entonces pasar la segunda "externref" podría desencadenar una recolección de basura. Sin embargo, la primera "externref" no está arraigada hasta que pasamos el control a Wasm, y por lo tanto podría ser recuperada por el recolector si nada más estuviera manteniendo una referencia a ella o la mantuviera viva. Entonces, cuando se pasara el control a Wasm después de la recolección de basura, Wasm podría usar la primera "externref", que en este punto ya ha sido liberada. Tenemos razones para creer que el impacto efectivo de este error es relativamente pequeño porque el uso de "externref" es actualmente bastante raro. El bug ha sido corregido, y los usuarios deberían actualizar a Wasmtime versión 0.30.0. Si no puedes actualizar Wasmtime todavía, puedes evitar el bug deshabilitando el soporte de tipos de referencia en Wasmtime pasando "false" a "wasmtime::Config::wasm_reference_types"

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:bytecodealliance:wasmtime:*:*:*:*:*:*:*:* 0.19.0 (incluyendo) 0.30.0 (excluyendo)
cpe:2.3:o:fedoraproject:fedora:34:*:*:*:*:*:*:*
cpe:2.3:o:fedoraproject:fedora:35:*:*:*:*:*:*:*