CVE-2026-44216
Executive Summary
CVE-2026-44216 is a denial-of-service (DoS) vulnerability in the Bytecode Alliance Wasmtime runtime, affecting versions 30.0.0 through 36.0.7, 43.0.0 through 43.0.1, and 44.0.0. The flaw resides in the allocation logic for WebAssembly tables when the memory64 proposal is enabled. An attacker can trigger an arithmetic overflow during table allocation, causing a panic and crashing the runtime. This is a high-severity issue (CVSS 7.5) with no known public exploit code, but the attack vector is network-based and requires no authentication. The vulnerability has been patched in versions 36.0.8, 43.0.2, and 44.0.1.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
Wasmtime is a critical component in the WebAssembly ecosystem, used in serverless platforms, edge computing, and sandboxed execution environments. The vulnerability affects the core runtime library, which is distributed via crates.io (Rust package manager) and GitHub. Organizations using Wasmtime in production should immediately update to patched versions to prevent service disruption. The supply chain risk is moderate, as the vulnerability is in the runtime itself, not in a dependency, but the impact on availability is severe.
CVSS Breakdown & Threat Level
- CVSS Score: 7.5 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Attack Vector: Network (AV:N) – The vulnerability can be triggered remotely by sending a crafted WebAssembly module or component.
- Attack Complexity: Low (AC:L) – No special conditions required; the attacker only needs to provide a malicious module.
- Privileges Required: None (PR:N) – No authentication needed.
- User Interaction: None (UI:N) – No user action required.
- Scope: Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality Impact: None (C:N) – No data exposure.
- Integrity Impact: None (I:N) – No data modification.
- Availability Impact: High (A:H) – The runtime crashes, causing denial of service.
Threat Level: High. The vulnerability is easy to exploit remotely and can cause complete service disruption. Although no public exploit exists, the attack vector is straightforward for anyone with knowledge of the memory64 proposal.
Deep Dive & Mechanics
The vulnerability is rooted in Wasmtime's table allocation logic. WebAssembly tables are used to store function references or other typed elements. With the memory64 proposal, table sizes can be specified as 64-bit values, allowing extremely large sizes (up to 2^64 - 1). The allocation code uses checked arithmetic to prevent integer overflow, but the check itself panics on overflow instead of returning an error gracefully.
Specifically, when a WebAssembly module or component is instantiated with a table size that causes an overflow in the allocation calculation, the runtime calls panic!() in Rust, crashing the entire process. This is a classic denial-of-service vector: an attacker can craft a malicious .wasm file that requests a table size such that the internal arithmetic overflows, leading to a panic.
The vulnerable code path is in the table allocation function, likely in wasmtime-runtime/src/table.rs or similar. The fix involves replacing the panic!() with a proper error return, allowing the runtime to reject the malicious module without crashing.
Vulnerable vs. Patched Code
Vulnerable Code (Conceptual):
// In table allocation logic
let size: u64 = ...; // from module
let allocation_size = size.checked_mul(element_size).expect("overflow in table allocation");
// This panics if overflow occurs
Patched Code (Conceptual):
// In table allocation logic
let size: u64 = ...; // from module
let allocation_size = size.checked_mul(element_size).ok_or_else(|| Error::new("table size overflow"))?;
// Returns an error instead of panicking
The patched version converts the overflow into a recoverable error, preventing the runtime from crashing. The exact patch can be found in the Wasmtime GitHub repository under the releases for versions 36.0.8, 43.0.2, and 44.0.1.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A target running Wasmtime version 30.0.0 to 36.0.7, 43.0.0 to 43.0.1, or 44.0.0.
- Ability to send a WebAssembly module to the runtime (e.g., via HTTP, gRPC, or direct instantiation).
Exploitation Steps:
- Create a malicious WebAssembly module that uses the
memory64proposal and requests a table with a size that causes overflow. For example, a table with size2^63and element size2will overflow when multiplied. - Send the module to the target for instantiation.
- The runtime will panic and crash, causing a denial of service.
Example Malicious Module (WAT format):
(module
(memory (export "mem") 1)
(table (export "tbl") funcref (size 9223372036854775808)) ;; 2^63
(func (export "start") (result i32)
i32.const 0
)
)
This module defines a table with a size of 2^63, which will cause an overflow when the runtime attempts to allocate it.
Note: No public exploit code exists, but the above WAT example demonstrates the concept.
Blue Team (Defense & Detection)
Detection:
- Monitor for crashes or panics in Wasmtime logs. Look for messages containing "overflow" or "panic".
- Use runtime monitoring to detect sudden process terminations.
- Implement input validation to reject modules with excessively large table sizes before instantiation.
Mitigation:
- Immediately update to patched versions (36.0.8, 43.0.2, or 44.0.1).
- If patching is not possible, disable the
memory64proposal in Wasmtime configuration:let mut config = Config::new(); config.wasm_memory64(false); - Use a WebAssembly module validator to reject modules with table sizes exceeding a safe threshold (e.g., 2^32 - 1).
Indicators of Compromise (IOCs)
- Log Entries: Panic messages containing "overflow in table allocation" or similar.
- Process Behavior: Unexpected termination of Wasmtime processes.
- Network Traffic: Incoming WebAssembly modules with table sizes > 2^32.
- File Hashes: Malicious
.wasmfiles with table sizes in the 64-bit range (e.g., size = 2^63).
Example IOC (Log):
thread 'main' panicked at 'overflow in table allocation', src/table.rs:123:45
Detection Engineering
YARA Rule
rule CVE_2026_44216_Wasmtime_Table_Overflow {
meta:
description = "Detects malicious WebAssembly modules exploiting CVE-2026-44216"
author = "Valters IT"
date = "2026-01-01"
reference = "CVE-2026-44216"
strings:
$table_section = { 04 } // table section ID
$large_size = { 00 00 00 00 00 00 00 80 } // 2^63 in little-endian
condition:
$table_section and $large_size
}
Sigma Rule
title: Wasmtime Table Allocation Overflow Panic
id: cve-2026-44216
status: experimental
description: Detects panic messages indicating exploitation of CVE-2026-44216
logsource:
product: wasmtime
service: runtime
detection:
selection:
- "overflow in table allocation"
- "panicked at"
condition: selection
falsepositives:
- Legitimate large tables (unlikely)
level: high
Suricata Rule
alert tcp any any -> any any (msg:"CVE-2026-44216 Wasmtime Table Overflow Attempt"; flow:to_server; content:"|00 61 73 6d|"; depth:4; content:"|04|"; distance:4; within:1; content:"|00 00 00 00 00 00 00 80|"; distance:0; within:8; classtype:attempted-dos; sid:1000001; rev:1;)
This rule detects WebAssembly modules with a table section containing a size of 2^63 (little-endian).
Remediation & Mitigation
Immediate Actions:
- Patch: Upgrade Wasmtime to version 36.0.8, 43.0.2, or 44.0.1 (or later).
- Disable memory64: If patching is delayed, disable the
memory64proposal in the Wasmtime configuration. - Input Validation: Implement a WebAssembly module validator that rejects modules with table sizes > 2^32 - 1.
Long-Term Measures:
- Enable runtime crash monitoring and alerting.
- Conduct code reviews of allocation logic for similar overflow issues.
- Use fuzzing tools (e.g.,
wasm-tools fuzz) to test Wasmtime against edge cases.
Patch Details:
- GitHub Releases: Wasmtime 36.0.8, 43.0.2, 44.0.1
- Crate.io: Update via
cargo update -p wasmtime
Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert