Vulnerabilidad crítica en Wasmtime, runtime para aplicaciones WebAssembly.

En las actualizaciones correctivas de Wasmtime 6.0.1, 5.0.1 y 4.0.1 se ha solucionado una vulnerabilidad (CVE-2023-26489), a la que se le ha asignado un nivel crítico de peligrosidad. La vulnerabilidad permite escribir datos en áreas de memoria fuera de los límites permitidos para el código WebAssembly aislado, lo que podría ser potencialmente explotado por un atacante para ejecutar su código fuera del entorno aislado de WASI.

Wasmtime es un runtime para ejecutar aplicaciones WebAssembly con extensiones WASI (Interfaz de Sistema WebAssembly) como aplicaciones aisladas convencionales. El conjunto de herramientas está escrito en Rust, y la vulnerabilidad se debe a un error lógico en la determinación de las reglas de direccionamiento lineal de la memoria en el generador de código Cranelift, que traduce una representación intermedia independiente de la arquitectura de hardware a código de máquina ejecutable para la arquitectura x86_64.

En particular, se calcularon direcciones efectivas de 35 bits para aplicaciones WebAssembly en lugar de las direcciones de 33 bits permitidas en WebAssembly, aumentando así el límite permitido para operaciones de lectura y escritura de memoria virtual hasta 34 GB, mientras que la configuración del entorno sandbox proporciona protección para 6 GB desde la dirección base. Como resultado, el rango de memoria virtual de 6 a 34 GB desde la dirección base quedaba accesible para lectura y escritura desde aplicaciones WebAssembly. En esta memoria pueden residir otros entornos WebAssembly o componentes del runtime WebAssembly.

Si no es posible actualizar la versión de Wasmtime, se mencionan como soluciones alternativas para bloquear el error la opción «Config::static_memory_maximum_size(0)» para habilitar una verificación de límites obligatoria en cada acceso a la memoria lineal (lo que conlleva una disminución significativa del rendimiento). Otra variante es usar la configuración «Config::static_memory_guard_size(1 < 36)» para aumentar el número de páginas de memoria vigilantes (Guard Page, se genera una excepción al acceder) colocadas en el rango problemático de memoria virtual (lo que conlleva la reserva de un gran volumen de memoria virtual y limita el número de aplicaciones WebAssembly que pueden ejecutarse simultáneamente).

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster