Skip to main content

Wasmtime CVE-2026-115393

| EUVDEUVD-2026-108327 LOW
Out-of-bounds Write (CWE-787)
2026-10-22 disclosure@vulncheck.com GHSA-hm3j-7f84-9x3r
1.0
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Embedder creates two Engines in host code
  2. Delivery
    Pass cross-engine Module/type into Store API (Instance::new, StructRefPre::new, Tag::new)
  3. Exploit
    Engine ownership unchecked before code registration
  4. Execution
    Trampoline signature mismatch
  5. Impact
    Out-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.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

wasmtime 25.0.0 <36.0.13
wasmtime 0 <24.0.12
wasmtime 47.0.0 <47.0.3
wasmtime 37.0.0 <46.0.2

Affected Packages

cargo wasmtime fix: 24.0.12, 36.0.13, 46.0.2, 47.0.3

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

Vendor (vulncheck) PRIMARY 1.0 LOW
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
vuln.today AI 3.8 LOW

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.

3.1 AV:L/AC:H/PR:H/UI:R/S:U/C:L/I:L/A:L
4.0 AV:L/AC:H/AT:P/PR:H/UI:P/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Local
Attack Complexity
High
Attack Requirements
Present
Privileges Required
High
User Interaction
Passive
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 22, 2026 - 20:18 EUVD

DescriptionCVE.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

EPSS Score
0.1%
Top 100% exploitable
Prevalence
Medium
popular WebAssembly runtime, but embedded library not universally deployed in production
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Low

Priority Score

5
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +5
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy