RUSTSEC-2026-0406 Use-after-free when changing a multithreaded context with an unfinished frame
- Exploited in the wild
- Not known
- Fix
- Available
What is RUSTSEC-2026-0406?
RUSTSEC-2026-0406 is a vulnerability in zstd-safe, published on 16 Oct 2026.
Official description
When a multithreaded frame (zstdmt feature, CParameter::NbWorkers) is
left unfinished, its jobs may still be running on the worker threads: the C
library only waits for them when the next frame starts, or when the context
is freed. A session reset makes the context accept changes again in the
meantime, so:
- unloading the dictionary (
load_dictionary,ref_cdict,ref_prefix,disable_dictionary,init*, orresetwith parameters) freed the dictionary a worker was still compressing against; - changing
NbWorkersmade the next frame resize the job table before waiting for the old jobs.
The flaw was corrected by refusing these calls while a multithreaded frame
is unfinished. The new CCtx::wait_for_workers() waits for the workers
first.
Which versions are affected by RUSTSEC-2026-0406?
1 open source package ship an affected version, including zstd-safe.
| Package | Affected | Fixed in |
|---|---|---|
zstd-safe crates.io | From 0.0.0-0 | 8.2.0 |
How do I fix RUSTSEC-2026-0406?
Upgrade zstd-safe to 8.2.0 or later.
Is RUSTSEC-2026-0406 being exploited?
There is no known exploitation of RUSTSEC-2026-0406 in the wild and no public exploit code.