RUSTSEC-2026-0393 Out-of-bounds read when training a dictionary from inconsistent sample sizes

Not scored Published
Exploited in the wild
Not known
Fix
Available

What is RUSTSEC-2026-0393?

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

Official description

ZDICT_trainFromBuffer is never told the length of the samples buffer. Before 0.4.10, zstd::dict::from_continuous (initially train_dict) called it directly: up to 0.2.1 without checking the sample sizes against the buffer at all, and from 0.3.0 with a sum that wraps around when overflow checks are off, as in release builds. Sizes that do not describe the buffer made the trainer read past its end.

This requires the sample sizes to come from an untrusted source. From 0.4.10, training goes through zstd-safe, where the same flaw is covered by the zstd-safe advisory for it, fixed in zstd-safe 8.2.0.

Which versions are affected by RUSTSEC-2026-0393?

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

PackageAffectedFixed in
zstd crates.ioFrom 0.1.10.4.10

How do I fix RUSTSEC-2026-0393?

Upgrade zstd to 0.4.10 or later.

Is RUSTSEC-2026-0393 being exploited?

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

Sources

Is RUSTSEC-2026-0393 in your software?

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

Check your SBOMs for free