Wasmtime — Dos Vulnerabilidades Críticas de Evasión de Sandbox en Cranelift (CVE-2026-115889 y CVE-2026-115893)
Fecha de publicación: 26 de octubre de 2026
Categoría: Vulnerability / Software Security
Introducción
Los mantenedores del proyecto Wasmtime han divulgado la existencia de dos vulnerabilidades críticas de seguridad que afectan al motor de ejecución WebAssembly (Wasm). Los fallos, identificados bajo los identificadores CVE-2026-115889 y CVE-2026-115893, permiten que un módulo WebAssembly malicioso controlado por un atacante escape de los límites del sandbox de contención previsto por la arquitectura. Para materializar la explotación, un atacante necesita primeramente compilar y suministrar un módulo malicioso a través de una aplicación vulnerable que utilice Wasmtime como biblioteca de ejecución, siendo el riesgo especialmente elevado en plataformas de computación en nube que procesan código de terceros, como Fastly Compute. Las versiones corregidas fueron lanzadas por Bytecode Alliance a mediados de octubre de 2026.
¿Qué es Wasmtime y Cranelift? (Análisis General)
Wasmtime es un motor de ejecución independiente y de alto rendimiento para WebAssembly que opera fuera de los navegadores web, permitiendo ejecutar código portable de forma nativa en diversos entornos de servidor y arquitecturas de hardware. El motor utiliza por defecto el compilador Cranelift para traducir el bytecode de WebAssembly a código máquina optimizado. El aislamiento de seguridad (sandbox) de Wasmtime está diseñado para garantizar que cualquier módulo ejecutado permanezca estrictamente confinado a su propio espacio de memoria y a las funciones de host explícitamente autorizadas, restringiendo además los saltos de código a ubicaciones válidas y verificadas.
Ambas vulnerabilidades han sido catalogadas oficialmente con una puntuación severa en el sistema CVSS v3.1:
- CVE-2026-115889: Puntuación CVSS de 9.9 (CRITICAL) bajo el vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H. Clasificación CWE: CWE-197 (Numeric Truncation Error) y CWE-843 (Access to Resource Using Incompatible Type / Type Confusion). Dato confirmado mediante registros oficiales de NVD. - CVE-2026-115893: Puntuación CVSS de 9.9 (CRITICAL) bajo el vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H. Clasificación CWE: CWE-691 (Insufficient Control Flow Management). Dato confirmado mediante registros oficiales de NVD.
¿Cómo funciona? (Análisis Técnico)
El compromiso de la seguridad radica en fallos lógicos y de gestión de desbordamientos dentro del backend del compilador Cranelift:
- Flujo de infección y vectores de entrada: Un usuario o atacante externo suministra un módulo WebAssembly diseñado a medida para ser compilado por un host que utilice Wasmtime. La explotación no requiere privilegios elevados en el sistema operativo subyacente, sino únicamente la capacidad de proporcionar código Wasm para su compilación.
- Mecanismo de CVE-2026-115889 (Desbordamiento de SSA en Cranelift): Las versiones anteriores del compilador empaquetaban los índices de valores de Asignación Estática Única (SSA, por sus siglas en inglés) en campos limitados a 24 bits. Al compilar funciones WebAssembly extremadamente grandes o específicamente diseñadas con una gran cantidad de valores SSA, las compilaciones de producción sufrían un desbordamiento numérico silencioso sin generar errores. Esto provocaba que Cranelift hiciera referencia a valores de representación intermedia (IR) incorrectos, induciendo a errores de compilación arbitrarios, confusión de tipos y efectos controlados por el atacante que derivaban en la evasión del sandbox en cualquier arquitectura.
- Mecanismo de CVE-2026-115893 (Desbordamiento de saltos
br_tableen ARM64): Esta vulnerabilidad afecta exclusivamente a arquitecturas ARM64 (aarch64). La instrucción de WebAssemblybr_tablepermite realizar saltos condicionales basados en un índice hacia múltiples destinos posibles. En ARM64, Cranelift despachaba índices fuera de rango hacia el destino predeterminado utilizando una instrucción de salto condicional cuyo alcance máximo está limitado a aproximadamente 1 MiB. Al procesar una tabla de saltos que contenía más de aproximadamente 256,000 objetivos, la estructura excedía dicho rango de alcance, provocando que la rama apuntara silenciosamente a una dirección incorrecta y permitiendo que el módulo saltara a código arbitrario controlado por el usuario.
Sistemas / Entornos Afectados
El impacto abarca múltiples líneas de versiones de Wasmtime y arquitecturas de hardware específicas:
| CVE | Categoría (CWE) | Impacto | CVSS | Vector (resumido) |
|---|---|---|---|---|
| CVE-2026-115889 | CWE-197, CWE-843 | Evasión de sandbox en cualquier arquitectura | 9.9 (CRITICAL) | AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| CVE-2026-115893 | CWE-691 | Evasión de sandbox en ARM64 (aarch64) | 9.9 (CRITICAL) | AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
- Líneas de versiones afectadas:
- Versiones anteriores a 36.0.19 (afectada por ambos CVEs).
- Líneas entre 37.0.0 y 42.x (afectada por ambos CVEs).
- Líneas de la 43.0.0 a la 47.x (afectada por CVE-2026-115893 en ARM64).
- Líneas de la 48.0.0 a la 48.0.6 y de la 49.0.0 a la 49.0.3 (afectadas por CVE-2026-115893 en ARM64).
- Línea LTS (Long-Term Support): La línea 24.x LTS finalizó su soporte el 20 de agosto de 2026 y no recibió parches oficiales.
- Entornos de riesgo: Plataformas serverless, herramientas de infraestructura WebAssembly como Spin (en versiones anteriores a la 4.2.4) y servicios cloud que procesan código arbitrario de clientes.
Mitigación y Detección
Remediación
Dado que Wasmtime se integra como biblioteca (dependencia estática o dinámica) en múltiples aplicaciones de software, la simple actualización de herramientas de línea de comandos genéricas no resuelve el problema. Cada software que incorpore Wasmtime debe ser recompilado utilizando versiones corregidas:
- Actualizar a las líneas estables y corregidas: 36.0.19, 48.0.7, 49.0.4 o la versión mayor 50.0.0 (o posteriores).
- Para dependencias en Rust, verificar los archivos
Cargo.lockmediante la herramientacargo-audit, la cual cataloga estas incidencias bajo los identificadores RUSTSEC-2026-0380 y RUSTSEC-2026-0379.
Detección
Los equipos defensivos deben auditar el inventario de dependencias de software (Software Bill of Materials - SBOM) para identificar aplicaciones que utilicen versiones vulnerables de Wasmtime en arquitecturas x86_64 y ARM64. Asimismo, se debe monitorear la compilación de módulos Wasm con estructuras excesivamente complejas o tablas de saltos anómalas.
“La ejecución de WebAssembly en entornos multi-tenant asume un aislamiento estricto mediante sandboxing; los fallos en la etapa de compilación JIT de Cranelift demuestran cómo un desbordamiento numérico a nivel de representación intermedia puede traducirse en una ruptura completa del modelo de privilegios del host.”
Recapitulando
Las vulnerabilidades CVE-2026-115889 y CVE-2026-115893 evidencian los riesgos inherentes a los compiladores Just-In-Time (JIT) y de representación intermedia cuando procesan entradas no confiables en arquitecturas de aislamiento. La rápida respuesta de Bytecode Alliance con el lanzamiento de parches en las líneas de soporte consolida la necesidad de mantener una gestión estricta de dependencias en ecosistemas modernos basados en WebAssembly y serverless.
Referencias
- The Hacker News. (2026). Two Critical Wasmtime Flaws Could Let Malicious WebAssembly Modules Escape Sandboxes. https://thehackernews.com/2026/10/two-critical-wasmtime-flaws-could-let.html
- Bytecode Alliance. Wasmtime Security Advisory for CVE-2026-115889 (GHSA-897f-g5gm-fmxm). https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-897f-g5gm-fmxm
- Bytecode Alliance. Wasmtime Security Advisory for CVE-2026-115893 (GHSA-mghf-wjfp-p5xm). https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-mghf-wjfp-p5xm
- RustSec Advisory Database. RUSTSEC-2026-0380. https://rustsec.org/advisories/RUSTSEC-2026-0380.html
- RustSec Advisory Database. RUSTSEC-2026-0379. https://rustsec.org/advisories/RUSTSEC-2026-0379.html
- National Vulnerability Database. NVD - CVE-2026-115889. (Datos oficiales NVD CVSS y CWE).
- National Vulnerability Database. NVD - CVE-2026-115893. (Datos oficiales NVD CVSS y CWE).