Skip to main content
VulnerabilityPublished Updated

Zstd sys: WebAssembly allocator shim corrupts memory on allocation failure

Affects zstd-sysSource GCVE Database

0
Severity
Unrated

Rated by Threat Radar

Patch
Available – fixed in 2.1.2

Data as of 26 Oct 2026, 16:13 UTC

What to do

Upgrade zstd-sys to 2.1.2.

Affected software

ProductAffectedFixed in
crates.iozstd-syspkg:cargo/zstd-sysOther threatsAffected
  • >=2.0.9 <2.1.2
Fixed in
  • 2.1.2

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

Description

On wasm32, zstd-sys provides `malloc` and `free` to the C library through a shim over Rust's allocator. The shim did not check for allocation failure: it wrote its size header to address 0 and returned address 4, which the C library used as a valid buffer. `free(NULL)` also read below address 0. Whenever the instance cannot grow its memory by what a frame asks for, a small crafted frame (a 9-byte header declaring a 128 MiB window is enough) made decompression write decoded data over the bottom of the module's linear memory, instead of failing. The corruption stays within the wasm sandbox. The flaw was corrected by returning NULL on allocation failure or size overflow, and by making `free(NULL)` a no-op.

References

Community reviews

Loading reviews…