RUSTSEC-2026-0406
Vulnerability from osv_rustsec – Published: 2026-10-16 12:00 – Updated: 2026-11-02 09:18 – Source websiteWhen 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.
{
"affected": [
{
"database_specific": {
"categories": [
"memory-corruption"
],
"cvss": null,
"informational": "unsound"
},
"ecosystem_specific": {
"affected_functions": null,
"affects": {
"arch": [],
"functions": [
"zstd_safe::CCtx::disable_dictionary",
"zstd_safe::CCtx::init",
"zstd_safe::CCtx::load_dictionary",
"zstd_safe::CCtx::ref_cdict",
"zstd_safe::CCtx::ref_prefix",
"zstd_safe::CCtx::reset",
"zstd_safe::CCtx::set_parameter"
],
"os": []
}
},
"package": {
"ecosystem": "crates.io",
"name": "zstd-safe",
"purl": "pkg:cargo/zstd-safe"
},
"ranges": [
{
"events": [
{
"introduced": "0.0.0-0"
},
{
"fixed": "7.4.0"
},
{
"introduced": "8.0.0-0"
},
{
"fixed": "8.2.0"
}
],
"type": "SEMVER"
}
],
"versions": []
}
],
"aliases": [],
"database_specific": {
"license": "CC0-1.0"
},
"details": "When a multithreaded frame (`zstdmt` feature, `CParameter::NbWorkers`) is\nleft unfinished, its jobs may still be running on the worker threads: the C\nlibrary only waits for them when the next frame starts, or when the context\nis freed. A session reset makes the context accept changes again in the\nmeantime, so:\n\n- unloading the dictionary (`load_dictionary`, `ref_cdict`, `ref_prefix`,\n `disable_dictionary`, `init*`, or `reset` with parameters) freed the\n dictionary a worker was still compressing against;\n- changing `NbWorkers` made the next frame resize the job table before\n waiting for the old jobs.\n\nThe flaw was corrected by refusing these calls while a multithreaded frame\nis unfinished. The new `CCtx::wait_for_workers()` waits for the workers\nfirst.",
"id": "RUSTSEC-2026-0406",
"modified": "2026-11-02T09:18:23Z",
"published": "2026-10-16T12:00:00Z",
"references": [
{
"type": "PACKAGE",
"url": "https://crates.io/crates/zstd-safe"
},
{
"type": "ADVISORY",
"url": "https://rustsec.org/advisories/RUSTSEC-2026-0406.html"
},
{
"type": "WEB",
"url": "https://github.com/gyscos/zstd-rs/commit/e224018a2389915d68ed17f30109bebad36e9734"
},
{
"type": "WEB",
"url": "https://github.com/gyscos/zstd-rs/pull/384"
}
],
"related": [],
"severity": [],
"summary": "Use-after-free when changing a multithreaded context with an unfinished frame"
}
Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline
Sightings and recorded dates, grouped by day · UTC
Loading timeline…
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.