Email me

Rust advisories / ruzstd

Vulnerability HighRUSTSEC-2026-0344 · ruzstd

RUSTSEC-2026-0344: Decompression bomb in `ruzstd`: a tiny input can exhaust memory (OOM)

Short answerA security vulnerability in the ruzstd crate: Decompression bomb in `ruzstd`: a tiny input can exhaust memory (OOM). High severity (CVSS 7.5). Fixed in 0.9.1: update to a fixed version.

Crateruzstd
TypeVulnerability (denial-of-service)
Affected versionsBefore 0.9.1.
Fixed in0.9.1
SeverityHigh, CVSS 7.5
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Published2026-10-11
Last changed2026-10-13
Also known asnone

What to do

  1. See which version you have: cargo tree -i ruzstd (it also shows which of your dependencies pulls it in).
  2. Update within your version requirement: cargo update -p ruzstd. If the fix is a newer major or minor than your requirement allows, raise it in Cargo.toml (for example ruzstd = "0.9.1") or update the dependency that pulls it in.
  3. Check again with cargo audit, or paste your Cargo.lock into our Cargo.toml checker.

Details from the advisory

A crafted .zst input under 128 KB can force ruzstd to allocate several gigabytes at once, crashing the process with an out-of-memory condition. Since ruzstd is a decoder for untrusted input, a single small file is enough to take down anything decoding it.

The compressed size of a block was capped at 128 KB, but a compressed block's **decompressed** size was never checked against Block_Maximum_Size = min(Window_Size, 128 KiB) (RFC 8878). In execute_sequences the output was built with no running bound and no flush between blocks, so one block could expand to gigabytes , bypassing both the configured window-size limit and the block-by-block streaming that would otherwise release memory. (A related u32 counter overflow on such a block caused an additional panic.)

This is a denial of service only; memory access stays in bounds (no corruption, no RCE).

ruzstd is also built as a dependency of the Rust standard library via rustc-dep-of-std; in the toolchain it is used only to load zstd-compressed debug symbols, so the toolchain-side impact is limited.

**Fixed in 0.9.1** (commit d3907c9), which enforces the per-block output bound. Upgrade to ruzstd >= 0.9.1.

References

From the RustSec Advisory Database (CC0-1.0) via the OSV export, downloaded Oct 24, 2026. Severity score computed from the published CVSS vector.

Other advisories for ruzstd

Full security history of ruzstd

Up next

Same crateruzstd: security historyEvery advisory for this crate, and whether it is safe to use today.Read it next →

Did this answer your question?

Get the receipts by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ