Skip to main content

CVE-2026-90648: CWE-252 Unchecked Return Value in WebAssembly wabt

0
High
VulnerabilityCVE-2026-90648cvecve-2026-90648cwe-252
Published: 09/12/2026 (09/12/2026, 23:16:34 UTC)
Source: CVE Database V5
Vendor/Project: WebAssembly
Product: wabt

Description

wasm2c in WebAssembly wabt through 1.0.41 allows sandbox escape in some situations that primarily involve 32-bit platforms, aka a "table flip" attack. It does not check the return value of calloc() in wasm_rt_allocate_funcref_table() (wasm2c/wasm-rt-impl-tableops.inc). When the funcref table allocation fails, table->data is left NULL while table->size keeps the guest-declared element count; thus, bounds checks still pass and table element accesses resolve to absolute memory addresses (i * sizeof(wasm_rt_funcref_t)). This gives arbitrary read and write of host process memory and - via table.get, table.set, and call_indirect - arbitrary code execution, defeating the isolation that wasm2c exists to provide (a full sandbox escape). wasm2c is used as an in-process sandboxing boundary by RLBox and WasmBoxC, including in Firefox, which compiles the Graphite, Hunspell, Ogg, Expat, and Woff2 libraries via wasm2c to contain untrusted font, media, and XML input. Therefore, sandboxing in these applications is potentially affected. Exploitation requires the funcref table allocation to fail, for example under an address-space limit (RLIMIT_AS), on 32-bit hosts, with vm.overcommit_memory=2, or under memory pressure. On 64-bit Linux with default overcommit the allocation succeeds and the defect is not triggered. The wasm2c memory allocator aborts on calloc failure in the same runtime; the table allocator lacks this abort behavior. This was introduced in commit ab9e0b55 (PR #813).

CVSS v4.0

Score 7.1high

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vuln. Confidentiality
None
Vuln. Integrity
High
Vuln. Availability
High
Subsq. Confidentiality
None
Subsq. Integrity
High
Subsq. Availability
High
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:H/SA:H

Affected software

WebAssembly

wabt

Affected versions
>=0 <=1.0.41
GitHub Actionsmore threats →cve
wabt
pkg:github/wabt
Affected versions
>=0 <=1.0.41

Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.

AI-Powered Analysis

Machine-generated threat intelligence

AILast updated: 09/12/2026, 23:46:29 UTC

Technical Analysis

The vulnerability CVE-2026-90648 in wasm2c of WebAssembly wabt (<=1.0.41) arises from failure to check the return value of calloc() in wasm_rt_allocate_funcref_table(). On allocation failure, the funcref table's data pointer is left NULL while its size remains set, allowing bounds checks to pass incorrectly. This leads to out-of-bounds table element accesses that map to absolute host memory addresses, enabling arbitrary read/write and code execution via table.get, table.set, and call_indirect instructions. This bypasses the sandbox isolation intended by wasm2c. The flaw primarily affects 32-bit platforms or environments with strict memory limits (e.g., RLIMIT_AS, vm.overcommit_memory=2). The defect was introduced in commit ab9e0b55 (PR #813). wasm2c is used as an in-process sandbox by RLBox and WasmBoxC, including in Firefox for isolating untrusted font, media, and XML processing.

Potential Impact

Successful exploitation allows an attacker to escape the wasm2c sandbox and achieve arbitrary read and write access to the host process memory, potentially leading to arbitrary code execution. This compromises the isolation guarantees of wasm2c, affecting applications relying on it for sandboxing untrusted code, such as Firefox components using RLBox and WasmBoxC. The vulnerability is conditional on allocation failure, which is more likely on 32-bit platforms or under memory pressure with strict memory overcommit policies. On 64-bit Linux with default memory overcommit, the vulnerability is not triggered.

Mitigation Recommendations

Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until a fix is available, mitigating conditions that cause calloc() to fail (such as strict address space limits or disabling memory overcommit) may reduce the risk of exploitation. Monitoring and controlling memory pressure on affected systems can also help. Users should track official WebAssembly wabt advisories for updates and apply patches once released.

Pro Console: star threats, build custom feeds, automate alerts via Slack, email & webhooks.Upgrade to Pro

Technical Details

Data Version
5.2
Assigner Short Name
mitre
Date Reserved
2026-09-12T23:16:33.768Z
Cvss Version
4.0
State
PUBLISHED

Threat ID: 6aa5e0f455bf5e2cf5df3027

Added to database: 09/12/2026, 23:32:04 UTC

Last enriched: 09/12/2026, 23:46:29 UTC

Last updated: 09/13/2026, 02:46:46 UTC

Views: 9

Community Reviews

0 reviews

Crowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.

Sort by
Loading community insights…

Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.

Actions

PRO

Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.

Please log in to the Console to use AI analysis features.

Need more coverage?

Upgrade to Pro Console for AI refresh and higher limits.

For incident response and remediation, OffSeq services can help resolve threats faster.

Latest Threats

Breach by OffSeqOFFSEQFRIENDS — 25% OFF

Check if your credentials are on the dark web

Instant breach scanning across billions of leaked records. Free tier available.

Scan now
OffSeq TrainingCredly Certified

Lead Pen Test Professional

Technical5-day eLearningPECB Accredited
View courses