Wasmtime segfault or unused out-of-sandbox load with f64.copysign operator on x86-64
Wasmtime is a runtime for WebAssembly. Starting in version 29.0.0 and prior to version 36.0.5, 40.0.3, and 41.0.1, on x86-64 platforms with AVX, Wasmtime's compilation of the `f64.copysign` WebAssembly instruction with Cranelift may load 8 more bytes than is necessary. When signals-based-traps are disabled this can result in a uncaught segfault due to loading from unmapped guard pages. With guard pages disabled it's possible for out-of-sandbox data to be loaded, but unless there is another bug in Cranelift this data is not visible to WebAssembly guests. Wasmtime 36.0.5, 40.0.3, and 41.0.1 have been released to fix this issue. Users are recommended to upgrade to the patched versions of Wasmtime. Other affected versions are not patched and users should updated to supported major version instead. This bug can be worked around by enabling signals-based-traps. While disabling guard pages can be a quick fix in some situations, it's not recommended to disabled guard pages as it is a key defense-in-depth measure of Wasmtime.
References
- https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-vc8c-j3xm-xj73 x_refsource_CONFIRM
- https://github.com/bytecodealliance/wasmtime/commit/728fa07184f8da2a046f48ef9b61f869dce133a6 x_refsource_MISC
- https://github.com/bytecodealliance/wasmtime/commit/799585fc362fcb991de147dd1a9f2ba0861ed440 x_refsource_MISC
- https://github.com/bytecodealliance/wasmtime/commit/ac92d9bb729ad3a6d93f0724c4c33a0c4a9c0227 x_refsource_MISC
- https://docs.rs/wasmtime/latest/wasmtime/struct.Config.html#method.memory_guard_size x_refsource_MISC
- https://docs.rs/wasmtime/latest/wasmtime/struct.Config.html#method.signals_based_traps x_refsource_MISC
- https://docs.wasmtime.dev/stability-release.html x_refsource_MISC
- https://rustsec.org/advisories/RUSTSEC-2026-0006.html x_refsource_MISC
Affected products
- ==>= 37.0.0, < 40.0.3
- === 41.0.0
- ==>= 29.0.0, < 36.0.5
Package maintainers
-
@ereslibre Rafael Fernández López <ereslibre@ereslibre.es>
-
@matthewbauer Matthew Bauer <mjbauer95@gmail.com>