CVE-2026-34971: CWE-125: Out-of-bounds Read in bytecodealliance wasmtime
Wasmtime is a runtime for WebAssembly. From 32.0.0 to before 36.0.7, 42.0.2, and 43.0.1, Wasmtime's Cranelift compilation backend contains a bug on aarch64 when performing a certain shape of heap accesses which means that the wrong address is accessed. When combined with explicit bounds checks a guest WebAssembly module this can create a situation where there are two diverging computations for the same address: one for the address to bounds-check and one for the address to load. This difference in address being operated on means that a guest module can pass a bounds check but then load a different address. Combined together this enables an arbitrary read/write primitive for guest WebAssembly when accesssing host memory. This is a sandbox escape as guests are able to read/write arbitrary host memory. This vulnerability has a few ingredients, all of which must be met, for this situation to occur and bypass the sandbox restrictions. This miscompiled shape of load only occurs on 64-bit WebAssembly linear memories, or when Config::wasm_memory64 is enabled. 32-bit WebAssembly is not affected. Spectre mitigations or signals-based-traps must be disabled. When spectre mitigations are enabled then the offending shape of load is not generated. When signals-based-traps are disabled then spectre mitigations are also automatically disabled. The specific bug in Cranelift is a miscompile of a load of the shape load(iadd(base, ishl(index, amt))) where amt is a constant. The amt value is masked incorrectly to test if it's a certain value, and this incorrect mask means that Cranelift can pattern-match this lowering rule during instruction selection erroneously, diverging from WebAssembly's and Cranelift's semantics. This incorrect lowering would, for example, load an address much further away than intended as the correct address's computation would have wrapped around to a smaller value insetad. This vulnerability is fixed in 36.0.7, 42.0.2, and 43.0.1.
AI Analysis
Technical Summary
Wasmtime versions from 32.0.0 up to but not including 36.0.7, 42.0.2, and 43.0.1 contain a vulnerability in the Cranelift backend on aarch64. The issue arises from a miscompilation of a load instruction pattern involving an indexed address calculation with a shift amount constant. Incorrect masking during instruction selection causes the load address to diverge from the bounds-checked address, enabling a guest WebAssembly module to pass bounds checks but access different memory locations. This leads to an arbitrary read/write primitive on host memory, constituting a sandbox escape. The vulnerability only affects 64-bit WebAssembly linear memories or when wasm_memory64 is enabled, and is mitigated if Spectre mitigations or signals-based traps are enabled. The flaw is resolved in Wasmtime versions 36.0.7, 42.0.2, and 43.0.1.
Potential Impact
This vulnerability enables a guest WebAssembly module to bypass sandbox memory protections and perform arbitrary reads and writes to host memory. This compromises the isolation guarantees of Wasmtime, potentially allowing an attacker to access or modify sensitive host data or execute arbitrary code outside the intended sandbox. The impact is critical given the ability to escape the sandbox and manipulate host memory arbitrarily.
Mitigation Recommendations
Fixed versions 36.0.7, 42.0.2, and 43.0.1 of Wasmtime address this vulnerability. Users should upgrade to one of these versions or later to remediate the issue. The vendor advisory does not indicate any alternative mitigations or temporary workarounds. Spectre mitigations or signals-based traps being enabled prevent the vulnerable code generation, but relying on these is not a substitute for applying the official fix.
CVE-2026-34971: CWE-125: Out-of-bounds Read in bytecodealliance wasmtime
Description
Wasmtime is a runtime for WebAssembly. From 32.0.0 to before 36.0.7, 42.0.2, and 43.0.1, Wasmtime's Cranelift compilation backend contains a bug on aarch64 when performing a certain shape of heap accesses which means that the wrong address is accessed. When combined with explicit bounds checks a guest WebAssembly module this can create a situation where there are two diverging computations for the same address: one for the address to bounds-check and one for the address to load. This difference in address being operated on means that a guest module can pass a bounds check but then load a different address. Combined together this enables an arbitrary read/write primitive for guest WebAssembly when accesssing host memory. This is a sandbox escape as guests are able to read/write arbitrary host memory. This vulnerability has a few ingredients, all of which must be met, for this situation to occur and bypass the sandbox restrictions. This miscompiled shape of load only occurs on 64-bit WebAssembly linear memories, or when Config::wasm_memory64 is enabled. 32-bit WebAssembly is not affected. Spectre mitigations or signals-based-traps must be disabled. When spectre mitigations are enabled then the offending shape of load is not generated. When signals-based-traps are disabled then spectre mitigations are also automatically disabled. The specific bug in Cranelift is a miscompile of a load of the shape load(iadd(base, ishl(index, amt))) where amt is a constant. The amt value is masked incorrectly to test if it's a certain value, and this incorrect mask means that Cranelift can pattern-match this lowering rule during instruction selection erroneously, diverging from WebAssembly's and Cranelift's semantics. This incorrect lowering would, for example, load an address much further away than intended as the correct address's computation would have wrapped around to a smaller value insetad. This vulnerability is fixed in 36.0.7, 42.0.2, and 43.0.1.
CVSS v4.0
Score 9.0critical
Affected software
pkg:cargo/bytecodealliance/wasmtimeRun on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
Wasmtime versions from 32.0.0 up to but not including 36.0.7, 42.0.2, and 43.0.1 contain a vulnerability in the Cranelift backend on aarch64. The issue arises from a miscompilation of a load instruction pattern involving an indexed address calculation with a shift amount constant. Incorrect masking during instruction selection causes the load address to diverge from the bounds-checked address, enabling a guest WebAssembly module to pass bounds checks but access different memory locations. This leads to an arbitrary read/write primitive on host memory, constituting a sandbox escape. The vulnerability only affects 64-bit WebAssembly linear memories or when wasm_memory64 is enabled, and is mitigated if Spectre mitigations or signals-based traps are enabled. The flaw is resolved in Wasmtime versions 36.0.7, 42.0.2, and 43.0.1.
Potential Impact
This vulnerability enables a guest WebAssembly module to bypass sandbox memory protections and perform arbitrary reads and writes to host memory. This compromises the isolation guarantees of Wasmtime, potentially allowing an attacker to access or modify sensitive host data or execute arbitrary code outside the intended sandbox. The impact is critical given the ability to escape the sandbox and manipulate host memory arbitrarily.
Mitigation Recommendations
Fixed versions 36.0.7, 42.0.2, and 43.0.1 of Wasmtime address this vulnerability. Users should upgrade to one of these versions or later to remediate the issue. The vendor advisory does not indicate any alternative mitigations or temporary workarounds. Spectre mitigations or signals-based traps being enabled prevent the vulnerable code generation, but relying on these is not a substitute for applying the official fix.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- GitHub_M
- Date Reserved
- 2026-03-31T19:38:31.616Z
- Cvss Version
- 4.0
- State
- PUBLISHED
- Remediation Level
- null
- Vendor Advisory Urls
- [{"url":"https://access.redhat.com/security/cve/CVE-2026-34971","vendor":"Red Hat"}]
Threat ID: 69d7f88c1cc7ad14da0c1700
Added to database: 04/09/2026, 19:05:48 UTC
Last enriched: 07/15/2026, 09:04:20 UTC
Last updated: 07/31/2026, 19:22:58 UTC
Views: 162
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.