Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessEmbedder creates two Engines in host code
-
DeliveryPass cross-engine Module/type into Store API (Instance::new, StructRefPre::new, Tag::new)
-
ExploitEngine ownership unchecked before code registration
-
ExecutionTrampoline signature mismatch
-
ImpactOut-of-bounds stack write, GC heap corruption, or panic
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the embedder's own host code (not guest WebAssembly) to instantiate two or more Wasmtime Engines and then hand an object created by one Engine to a Store backed by a different Engine through one of the affected APIs: Instance::new / Instance::new_async / InstancePre::instantiate(_async) and Store::debug_register_module / Store::debug_register_component / BreakpointEdit::add_breakpoint / remove_breakpoint (trampoline mismatch and potential out-of-bounds write), StructRefPre::new / ArrayRefPre::new / ExnRefPre::new (GC heap corruption sandboxed within the GC heap), or Tag::new (type confusion and/or panic). Strict limiting factors confirmed by the advisory: untrusted guest Wasm programs CANNOT trigger this; the wasmtime CLI is not affected; embedders using a single Engine for the process lifetime are not affected; and embedders that never call an affected method are not affected. In practice the vulnerable condition is a cross-engine object-mixing bug in the embedder's Rust code, which is why the CVSS vector is AV:L with PR:H and AC:H. |
| Impact | All signals converge on low real-world risk despite the alarming CWE pairing (CWE-787 out-of-bounds write and CWE-843 type confusion). The input CVSS 4.0 base score is 1.0 with a vector (AV:L/AC:H/AT:P/PR:H/UI:P) indicating local vector, high attack complexity, a present attack requirement, high privileges, and passive user interaction, with only Low impact to confidentiality, integrity, and availability and no subsequent-system impact - a profile that matches the 'monitor' decision label. No EPSS score, KEV listing, or public exploit is present in the input. The decisive mitigating fact, confirmed by the Bytecode Alliance GHSA-hgjw-h833-99q9 advisory, is that this bug is NOT triggerable by guest WebAssembly programs and the wasmtime CLI is unaffected; it requires the embedder's own host (Rust) code to create two or more Engines and erroneously mix objects between them via specific APIs. This is therefore a high-CWE-class but low-real-risk issue contingent on an embedder programming error, not a remotely reachable flaw. No signals conflict: the CVSS score, the 'monitor' label, the absence of KEV/EPSS/PoC, and the advisory's stated preconditions all agree this is a defensive-upgrade item rather than an active-exploitation priority. |
| Exploit ScenarioDerived | An application that embeds Wasmtime (before 24.0.12 / 36.0.13 / 46.0.2 / 47.0.3) creates two Engines and, through a host-code logic error, instantiates a Module belonging to Engine B into a Store built on Engine A via Instance::new, or passes a cross-engine type into StructRefPre::new or Tag::new. Because the engine ownership was not validated before the Module's code was registered, Wasmtime uses a trampoline compiled for one signature with a function of a different signature, and the host writes return values past the end of the stack allocation, corrupting memory. No public exploit code is identified in the available sources, and the flaw cannot be triggered by untrusted guest Wasm - only by the embedder's own misuse. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 22, 2026
Cross-engine type confusion in Wasmtime's Store APIs can produce trampoline signature mismatches, out-of-bounds stack writes, GC heap corruption, or panics when a host embedder passes an object from one Engine to a Store backed by a different Engine. Only embedders that create multiple Engines and directly call affected APIs such as Instance::new, StructRefPre::new, or Tag::new are exposed; guest WebAssembly cannot trigger the flaw and the wasmtime CLI is unaffected. No public exploit has been identified at the time of analysis, and the vendor has released fixes in 24.0.12, 36.0.13, 46.0.2, and 47.0.3.
RemediationAI
Upgrade the wasmtime crate to 24.0.12, 36.0.13, 46.0.2, or 47.0.3 as appropriate for your release branch; the vendor advisory is at https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-hgjw-h833-99q9. If upgrading is not immediately possible, enforce at the embedder level that every object handed to a Store was created by that Store's Engine-for example, call Engine::same(store.engine(), module.engine()) before Instance::new and apply the same check for Module, Component, StructRefPre/ArrayRefPre/ExnRefPre types, and TagType values; objects from a different Engine should be rejected before any affected API is invoked. Embedders that use a single Engine for the process lifetime or never call the affected APIs are not exposed, and the wasmtime CLI requires no action.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in cargo
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Wasmtime is a Rust WebAssembly runtime that separates compilation state (Engine) from execution state (Store). Internally, type indices are unique per Engine, and several public APIs-Instance::new, Instance::new_async, InstancePre::instantiate(_async), Store::debug_register_module, Store::debug_register_component, BreakpointEdit::add_breakpoint/remove_breakpoint, StructRefPre::new, ArrayRefPre::new, ExnRefPre::new, and Tag::new-failed to validate that a supplied Module, Component, type, or TagType belonged to the Store's Engine before using raw indices. This is a type confusion (CWE-843) that can lead to an out-of-bounds write (CWE-787): a trampoline compiled for one signature may be used with a Wasm function of a different signature, and the host's return values are written past the end of a stack allocation sized for the wrong signature. The advisory states that guest Wasm cannot trigger the bug, the CLI is unaffected, and single-Engine embedders are not exposed. NVD scores this 1.0 under CVSS 4.0, and the independent assessment rates it CVSS 3.1 AV:L/AC:H/PR:H/UI:R/S:U/C:L/I:L/A:L, reflecting the embedder-only precondition.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:H/AT:P/PR:H/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N
Triggerable only by local embedder host code mixing objects across two Engines, so AV:L, PR:H and AC:H; impacts are limited (bounded OOB write / sandboxed heap corruption / panic), hence C/I/A:L.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
1DescriptionCVE.org
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.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
EUVD-2026-108327
GHSA-hm3j-7f84-9x3r
NVD
CVE.org
EPSS
Exploit-DB