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

Vulnerabilidad en wasmtime de bytecodealliance (CVE-2026-27195)

Gravedad CVSS v4.0:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
24/02/2026
Última modificación:
25/02/2026

Descripción

Wasmtime es un entorno de ejecución para WebAssembly. A partir de Wasmtime 39.0.0, la característica 'component-model-async' se convirtió en la predeterminada, lo que trajo consigo una nueva implementación de '[Typed]Func::call_async' que la hizo capaz de llamar a funciones de exportación de invitado de tipo asíncrono. Sin embargo, esa implementación tenía un error que provocaba un pánico bajo ciertas circunstancias: Primero, la incrustación anfitriona llama a '[Typed]Func::call_async' en una función exportada por un componente, sondeando la 'Future' devuelta una vez. Segundo, la función del componente cede el control al entorno de ejecución asíncrono (por ejemplo, Tokio), por ejemplo, debido a una llamada a una función anfitriona registrada usando 'LinkerInstance::func_wrap_async' que cede, o debido a una interrupción de época. Tercero, la incrustación anfitriona descarta la 'Future' después de sondearla una vez. Esto deja la instancia del componente en un estado no reentrante ya que la llamada nunca tuvo la oportunidad de completarse. Cuarto, la incrustación anfitriona llama de nuevo a '[Typed]Func::call_async', sondeando la 'Future' devuelta. Dado que la instancia del componente no puede ser accedida en este punto, la llamada atrapa, pero no antes de asignar una tarea y un hilo para la llamada. Quinto, la incrustación anfitriona ignora la trampa y descarta la 'Future'. Esto provoca un pánico debido a que el entorno de ejecución intenta disponer de la tarea creada anteriormente, lo que provoca un pánico ya que el hilo aún no ha salido. Cuando un incrustador anfitrión que utiliza las versiones afectadas de Wasmtime llama a 'wasmtime::component::[Typed]Func::call_async' en una exportación de invitado y luego descarta la 'Future' devuelta sin esperar a que se resuelva, y luego lo hace de nuevo con la misma instancia del componente, Wasmtime entrará en pánico. Las incrustaciones que tienen la característica 'component-model-async' en tiempo de compilación deshabilitada no se ven afectadas. Wasmtime 40.0.4 y 41.0.4 han sido parcheadas para solucionar este problema. Las versiones 42.0.0 y posteriores no se ven afectadas. Si una incrustación no está utilizando realmente ninguna característica de component-model-async, entonces deshabilitar la característica Cargo 'component-model-async' puede solucionar este problema. Este problema también puede solucionarse asegurando que cada 'Future' de 'call_async' sea esperada hasta que se complete o absteniéndose de usar el 'Store' de nuevo después de descartar una 'Future' de 'call_async' aún no resuelta.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:bytecodealliance:wasmtime:*:*:*:*:*:rust:*:* 39.0.0 (incluyendo) 40.0.4 (excluyendo)
cpe:2.3:a:bytecodealliance:wasmtime:*:*:*:*:*:rust:*:* 41.0.0 (incluyendo) 41.0.4 (excluyendo)