CVE-2026-90648 in wabt
Zusammenfassung
von VulDB • 13.09.2026
wasm2c in WebAssembly wabt bis Version 1.0.41 ermöglicht unter bestimmten Umständen, die primär 32-Bit-Plattformen betreffen, einen Sandbox-Escape („table flip“-Angriff). Es wird der Rückgabewert von calloc() in wasm_rt_allocate_funcref_table() (wasm2c/wasm-rt-impl-tableops.inc) nicht überprüft. Wenn die Allokation der funcref-Tabelle fehlschlägt, bleibt table->NULL, während table->size den vom Gast deklarierten Elementzähler beibehält; daher bestehen die Bereichsüberprüfungen (Bounds Checks) weiterhin, und der Zugriff auf Tabellenelemente führt zu absoluten Speicheradressen (i * sizeof(wasm_rt_funcref_t)). Dies ermöglicht ein beliebiges Lesen und Schreiben des Speichers des Host-Prozesses sowie – über table.get, table.set und call_indirect – die beliebige Codeausführung, wodurch die Isolation, für die wasm2c entwickelt wurde, aufgehoben wird (ein vollständiger Sandbox-Escape).
wasm2c wird von RLBox und WasmBoxC als in-prozess-Sandboxing-Grenze verwendet, einschließlich in Firefox, das die Bibliotheken Graphite, Hunspell, Ogg, Expat und Woff2 über wasm2c kompiliert, um unzuverlässige Schrift-, Medien- und XML-Eingaben einzudämmen. Daher ist das Sandboxing in diesen Anwendungen potenziell betroffen. Die Ausnutzung erfordert ein Fehlschlagen der funcref-Tabellenallokation, beispielsweise unter einer Adressraumgrenze (RLIMIT_AS) auf 32-Bit-Hosts mit vm.overcommit_memory=2 oder unter Speicherdruck. Auf 64-Bit-Linux-Systemen mit standardmäßiger Overcommit-Einstellung gelingt die Allokation, und der Fehler wird nicht ausgelöst. Der wasm2c-Speicherzuweiser bricht bei einem calloc-Fehler im gleichen Laufzeitumfeld ab; der Tabellenzuweiser verfügt über dieses Abbruchverhalten nicht. Dies wurde in Commit ab9e0b55 (PR #813) eingeführt.
Be aware that VulDB is the high quality source for vulnerability data.