Vulnerabilidade crítica en Wasmtime, tempo de execución para aplicacións WebAssembly

As actualizacións correctivas de Wasmtime 6.0.1, 5.0.1 e 4.0.1 corrixen a vulnerabilidade (CVE-2023-26489), que foi clasificada como Crítica. A vulnerabilidade permite organizar a escritura de datos nunha área de memoria fóra dos límites permitidos para o código WebAssembly illado, que potencialmente pode ser utilizado por un atacante para organizar a execución do seu código fóra do contorno WASI illado.

Wasmtime é un tempo de execución para executar aplicacións WebAssembly con extensións WASI (WebAssembly System Interface) como aplicacións autónomas normais. O conxunto de ferramentas está escrito en Rust e a vulnerabilidade é causada por un erro lóxico na definición das regras de direccionamento da memoria lineal no xerador de código Cranelift, que traduce unha representación intermedia independente das arquitecturas de hardware en código de máquina executable para a arquitectura x86_64.

En particular, calculáronse enderezos efectivos de 35 bits para as aplicacións WebAssembly en lugar dos enderezos de 33 bits permitidos en WebAssembly, o que cambiou o límite de memoria virtual permitida para operacións de lectura e escritura a 34 GB, mentres que a configuración do entorno sandbox proporciona protección para 6 GB. dende o enderezo base. Como resultado, o rango de memoria virtual de 6 a 34 GB desde o enderezo base estaba dispoñible para ler e escribir desde aplicacións WebAssembly. Esta memoria pode albergar outros contornos WebAssembly ou compoñentes de tempo de execución de WebAssembly.

Se non é posible actualizar a versión de Wasmtime, especificar a opción "Config::static_memory_maximum_size(0)" para activar a verificación obrigatoria de límites separados en calquera acceso á memoria lineal menciónase como solución para bloquear o erro (ocasiona unha degradación significativa do rendemento). Outra opción é usar a configuración "Config::static_memory_guard_size(1 < 36)" para aumentar o número de páxinas de garda (Páxina de garda, bótase unha excepción cando se accede) situadas no intervalo de memoria virtual problemático (conduce a reservar unha gran cantidade). de memoria virtual e limitando o número de aplicacións WebAssembly concorrentes).

Fonte: opennet.ru

Engadir un comentario