RUSTSEC-2026-0398 `Seekable::decompress` sets a `Vec` length beyond its capacity for offsets past the end

Not scored Published
Exploited in the wild
Not known
Fix
Available

What is RUSTSEC-2026-0398?

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

Official description

ZSTD_seekable_decompress shortens the requested length to the end of the data without checking that the offset is before it. For an offset past the end, it returns a wrapped-around length without writing anything, and Seekable::decompress passed that length to Vec::set_len.

With the seekable feature, whoever supplies the archive, or chooses the offset, can leave the caller's Vec<u8> with a length far beyond its capacity. Reading it then discloses neighbouring heap memory, and appending to it corrupts memory. Offsets near u64::MAX can also hang the call.

The flaw was corrected by clamping requests to the end of the data, and by checking every count reported by the C library against the buffer capacity.

Which versions are affected by RUSTSEC-2026-0398?

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

PackageAffectedFixed in
zstd-safe crates.ioFrom 7.2.28.2.0

How do I fix RUSTSEC-2026-0398?

Upgrade zstd-safe to 8.2.0 or later.

Is RUSTSEC-2026-0398 being exploited?

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

Sources

Is RUSTSEC-2026-0398 in your software?

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

Check your SBOMs for free