RUSTSEC-2026-0400 Use-after-free of a dictionary after a one-shot call on a context with an open stream
- 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.
| Package | Affected | Fixed in |
|---|---|---|
zstd-safe crates.io | From 3.0.1 | 8.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.