{"id":"CVE-2026-115389","kind":"vulnerability","aliases":["CVE-2026-115389"],"related":[],"title":"Wasmtime: crafted guest return values exhaust host memory, denial of service","description":"Wasmtime before 36.0.16, 37.0.0 before 48.0.3, and 49.0.0 before 49.0.1 does not adequately account for host allocations when lifting guest values through the dynamically-typed Val API, bypassing the hostcall fuel limit. A malicious WebAssembly guest can return crafted values that allocate at least ~100x more host memory than tracked, causing denial of service.","summary":"Wasmtime's dynamically-typed Val API does not count host memory allocated while lifting guest return values, so it bypasses the hostcall fuel limit. A malicious WebAssembly guest can make the host allocate about 100 times more memory than tracked, causing denial of service.","severity":"low","cvss":2.3,"epss":0.00152,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["plugin-systems","runtime","rust","self-hosted","wasmtime"],"not_affected_if":["trusted-guest-only","typed-api-only","wasmtime-not-embedded"],"how_to_check":"- Run `wasmtime --version` on the host or check the pinned wasmtime crate version in `Cargo.lock`\n- Search the codebase for uses of the dynamically-typed `Val` API when running untrusted guest modules\n- unknown for anything beyond this","fix":"- Upgrade wasmtime to `36.0.16` on the 36.x line, `48.0.3` on the 48.x line (37.0.0 and later within that range), or `49.0.1` on the 49.x line\n- unknown for any workaround beyond upgrading","status":"open","published_at":"2026-10-22T19:17:46+00:00","first_seen_at":"2026-10-23T21:57:31+00:00","triaged_at":"2026-10-25T04:49:41+00:00","updated_at":"2026-10-25T04:49:41+00:00","category":"runtime","confidence":0.7,"triage":{"at":"2026-10-25T04:49:41Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade wasmtime to `36.0.16` on the 36.x line, `48.0.3` on the 48.x line (37.0.0 and later within that range), or `49.0.1` on the 49.x line\n- unknown for any workaround beyond upgrading","reach":"unknown","title":"Wasmtime: crafted guest return values exhaust host memory, denial of service","impact":"low","summary":"Wasmtime's dynamically-typed Val API does not count host memory allocated while lifting guest return values, so it bypasses the hostcall fuel limit. A malicious WebAssembly guest can make the host allocate about 100 times more memory than tracked, causing denial of service.","category":"runtime","nicknames":[],"who_cares":["wasmtime","rust","self-hosted","plugin-systems"],"confidence":0.7,"needs_auth":"no","worst_case":"Guest code exhausts host memory, crashing the service with denial of service","analyst_note":"","how_to_check":"- Run `wasmtime --version` on the host or check the pinned wasmtime crate version in `Cargo.lock`\n- Search the codebase for uses of the dynamically-typed `Val` API when running untrusted guest modules\n- unknown for anything beyond this","needs_analyst":false,"not_affected_if":["trusted-guest-only","typed-api-only","wasmtime-not-embedded"],"who_is_affected":"Only applications that embed Wasmtime and run untrusted WebAssembly guests that return values through the dynamically-typed Val API are exposed. Hosts that run only trusted guest code, or that use the typed API, are less likely to be affected; the sources do not say more.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"low"},"cost_usd":0.000645,"input_tokens":3408,"output_tokens":608,"severity_before":"low"},"analyst_status":null,"analyst_note":null,"search":"'-115389':14A,17A '-2026':13A,16A '100':62B '100x':117C '36.0.16':74C '37.0.0':75C '48.0.3':77C '49.0.0':79C '49.0.1':81C 'account':85C 'adequ':84C 'alloc':39B,60B,88C,114C 'api':33B,99C 'bypass':47B,100C 'caus':68B,123C 'count':36B 'craft':2A,111C 'cve':12A,15A 'denial':9A,69B,124C 'dynam':30B,96C 'dynamically-typ':29B,95C 'exhaust':6A 'fuel':50B,103C 'guest':3A,42B,55B,91C,108C 'host':7A,25B,37B,59B,87C,119C 'hostcal':49B,102C 'least':116C 'lift':41B,90C 'limit':51B,104C 'make':57B 'malici':53B,106C 'memori':8A,38B,65B,120C 'plugin':19B 'plugin-system':18B 'return':4A,43B,110C 'runtim':21B 'rust':22B 'self':24B 'self-host':23B 'servic':11A,71B,126C 'system':20B 'time':63B 'track':67B,122C 'type':31B,97C 'val':32B,98C 'valu':5A,44B,92C,112C 'wasmtim':1A,26B,27B,72C 'webassembl':54B,107C","nicknames":[],"mitigations":[],"who_affected":"Only applications that embed Wasmtime and run untrusted WebAssembly guests that return values through the dynamically-typed Val API are exposed. Hosts that run only trusted guest code, or that use the typed API, are less likely to be affected; the sources do not say more.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-22T19:17:46+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:A/AC:H/AT:P/PR:L/UI:P/VC:N/VI:N/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-115389","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115389","severity":null,"published_at":"2026-10-22T19:17:46+00:00","modified_at":"2026-10-22T19:17:46+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-115389","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-115389","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"}