RUSTSEC-2026-0400 Use-after-free of a dictionary after a one-shot call on a context with an open stream

Not scored Published
Exploited in the wild
Not known
Fix
Available

What is RUSTSEC-2026-0400?

RUSTSEC-2026-0400 is a vulnerability in zstd-safe, published on 16 Oct 2026.

Official description

The one-shot DCtx and CCtx methods assumed the C library resets the context, but it leaves an open stream as it is. When a stream was left unfinished on a context, a one-shot call such as decompress_using_dict could leave the context pointing at the dictionary borrowed for that call, and the next streaming call resumed the stream against it after it was freed: decompressed output then contained freed heap memory. On the compression side, the stream resumed against the one-shot call's buffers.

This requires an application to use one context for both streaming and one-shot calls without a reset in between. The flaw was corrected by resetting the session after one-shot calls whenever a stream may be open.

Which versions are affected by RUSTSEC-2026-0400?

1 open source package ship an affected version, including zstd-safe.

PackageAffectedFixed in
zstd-safe crates.ioFrom 3.0.18.2.0

How do I fix RUSTSEC-2026-0400?

Upgrade zstd-safe to 8.2.0 or later.

Is RUSTSEC-2026-0400 being exploited?

There is no known exploitation of RUSTSEC-2026-0400 in the wild and no public exploit code.

Sources

Is RUSTSEC-2026-0400 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free