RUSTSEC-2026-0406 Use-after-free when changing a multithreaded context with an unfinished frame

Not scored Published
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*, or reset with parameters) freed the dictionary a worker was still compressing against;
  • changing NbWorkers made 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.

PackageAffectedFixed in
zstd-safe crates.ioFrom 0.0.0-08.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.

Sources

Is RUSTSEC-2026-0406 in your software?

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

Check your SBOMs for free