CVE-2026-115393: Wasmtime before 24.0.12, 25.0.0 before 36.0.13, 37.0.0 before 46.0.2, and 47.0.0 before 47.0.3 Cross-Engine Type Confusion
Wasmtime before 24.0.12, 25.0.0 before 36.0.13, 37.0.0 before 46.0.2, and 47.0.0 before 47.0.3 contains a type confusion vulnerability because several Store APIs fail to validate that objects belong to the Store's Engine. Embedders mixing objects between Engines via Instance::new, StructRefPre::new, or Tag::new can trigger trampoline signature mismatches causing out-of-bounds stack writes, GC heap corruption, or panics.
Affected Software
Event History
Frequently Asked Questions
Which Wasmtime release lines need to be updated?
Update to 24.0.12, 36.0.13, 46.0.2, or 47.0.3 or later, depending on the release line in use. The affected ranges are versions before 24.0.12; 25.0.0 through before 36.0.13; 37.0.0 through before 46.0.2; and 47.0.0 through before 47.0.3.
What conditions are needed to exploit this issue?
Exploitation requires an embedder to mix objects from different Engines through Instance::new, StructRefPre::new, or Tag::new. The supplied vector also indicates local access, high privileges, high attack complexity, and user interaction are required.
How can an integration determine whether it is exposed?
Review code that creates or uses Wasmtime Store objects and determine whether objects passed to Instance::new, StructRefPre::new, or Tag::new may have originated from a different Engine than the Store's Engine. Integrations that do not mix objects across Engines through these APIs are not described as the affected scenario.
What can happen if the vulnerable API usage is reached?
Cross-Engine object use can cause trampoline signature mismatches. The reported outcomes include out-of-bounds stack writes, GC heap corruption, and panics.