{"id":"CVE-2026-115393","kind":"vulnerability","aliases":["CVE-2026-115393"],"related":[],"title":"Wasmtime: Store APIs accept objects from other Engines, causing type confusion","description":"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.","summary":"Several Wasmtime Store APIs do not check that objects belong to the Store's Engine, so mixing objects across Engines can cause signature mismatches. An attacker who can make an embedder mix objects between Engines may cause out-of-bounds stack writes, GC heap corruption, or a panic.","severity":"low","cvss":3.8,"epss":0.00092,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["embedders","runtime","rust","wasmtime","webassembly"],"not_affected_if":["no-cross-engine-objects","single-engine"],"how_to_check":"- Run `wasmtime --version` or check the `wasmtime` crate version in `Cargo.lock` to see whether it falls in a vulnerable range (before `24.0.12`, `25.0.0` to before `36.0.13`, `37.0.0` to before `46.0.2`, or `47.0.0` to before `47.0.3`).\n- Search the codebase for calls to `Instance::new`, `StructRefPre::new`, or `Tag::new` that take objects created from a different Engine.","fix":"- Upgrade Wasmtime to `24.0.12`, `36.0.13`, `46.0.2`, or `47.0.3`, matching your major release line.","status":"open","published_at":"2026-10-22T19:17:47+00:00","first_seen_at":"2026-10-23T21:57:31+00:00","triaged_at":"2026-10-25T04:43:11+00:00","updated_at":"2026-10-25T04:43:11+00:00","category":"runtime","confidence":0.6,"triage":{"at":"2026-10-25T04:43:11Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Wasmtime to `24.0.12`, `36.0.13`, `46.0.2`, or `47.0.3`, matching your major release line.","reach":"unknown","title":"Wasmtime: Store APIs accept objects from other Engines, causing type confusion","impact":"medium","summary":"Several Wasmtime Store APIs do not check that objects belong to the Store's Engine, so mixing objects across Engines can cause signature mismatches. An attacker who can make an embedder mix objects between Engines may cause out-of-bounds stack writes, GC heap corruption, or a panic.","category":"runtime","nicknames":[],"who_cares":["wasmtime","rust","webassembly","embedders"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Out-of-bounds writes or heap corruption could crash or compromise the embedding process.","analyst_note":"","how_to_check":"- Run `wasmtime --version` or check the `wasmtime` crate version in `Cargo.lock` to see whether it falls in a vulnerable range (before `24.0.12`, `25.0.0` to before `36.0.13`, `37.0.0` to before `46.0.2`, or `47.0.0` to before `47.0.3`).\n- Search the codebase for calls to `Instance::new`, `StructRefPre::new`, or `Tag::new` that take objects created from a different Engine.","needs_analyst":false,"not_affected_if":["single-engine","no-cross-engine-objects"],"who_is_affected":"Only embedders of Wasmtime that create multiple Engines and pass objects from one Engine into a Store belonging to another. Applications that run a single Engine or only load Wasm modules without mixing objects are unlikely to be exposed. Users of the standalone Wasmtime CLI are not described as affected by the sources.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.00068,"input_tokens":3457,"output_tokens":669,"severity_before":"low"},"analyst_status":null,"analyst_note":null,"search":"'-115393':14A,17A '-2026':13A,16A '24.0.12':74C '25.0.0':75C '36.0.13':77C '37.0.0':78C '46.0.2':80C '47.0.0':82C '47.0.3':84C 'accept':4A 'across':41B 'api':3A,26B,93C 'attack':48B 'belong':32B,99C 'bound':63B,127C 'caus':9A,44B,59B,123C 'check':29B 'confus':11A,88C 'contain':85C 'corrupt':68B,132C 'cve':12A,15A 'embedd':18B,53B,105C 'engin':8A,37B,42B,57B,104C,109C 'fail':94C 'gc':66B,130C 'heap':67B,131C 'instanc':111C 'make':51B 'may':58B 'mismatch':46B,122C 'mix':39B,54B,106C 'new':112C,114C,117C 'object':5A,31B,40B,55B,98C,107C 'out-of-bound':60B,124C 'panic':71B,134C 'runtim':19B 'rust':20B 'sever':23B,91C 'signatur':45B,121C 'stack':64B,128C 'store':2A,25B,35B,92C,102C 'structrefpr':113C 'tag':116C 'trampolin':120C 'trigger':119C 'type':10A,87C 'valid':96C 'via':110C 'vulner':89C 'wasmtim':1A,21B,24B,72C 'webassembl':22B 'write':65B,129C","nicknames":[],"mitigations":[],"who_affected":"Only embedders of Wasmtime that create multiple Engines and pass objects from one Engine into a Store belonging to another. Applications that run a single Engine or only load Wasm modules without mixing objects are unlikely to be exposed. Users of the standalone Wasmtime CLI are not described as affected by the sources.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-22T19:17:47+00:00","kev":null,"cvss_vector":"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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-115393","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115393","severity":null,"published_at":"2026-10-22T19:17:47+00:00","modified_at":"2026-10-22T19:17:47+00:00","first_seen_at":"2026-10-23T21:57:31+00:00","fetched_at":"2026-10-23T22:29:02+00:00","note":null},{"source":"epss","external_id":"CVE-2026-115393","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-115393","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T07:15:51+00:00","fetched_at":"2026-10-24T07:15:51+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}