Skip to content
Fencer Intel
no cvss —

GHSA-465w-v9q3-7j98 json

Remote peer can panic quinn-proto with zero-length STREAM frames during unordered reads

published last mo. modified last mo. also RUSTSEC-2026-0338

cvss
—
not scored
cisa kev
Not listed
not in CISA's catalog
epss
—
no score, EPSS covers CVEs only
public exploits
0
none known

Summary

When a stream is read in unordered mode (for example through `RecvStream::read(false)` in quinn-proto or `read_unordered` in `quinn`), quinn-proto proactively deduplicates received data by recording received ranges in a `RangeSet` through its `replace` method. When an incoming STREAM frame carried an empty payload, the `Drop` implementation of the iterator returned by `replace` inserted an empty range into the set, violating the invariant that stored ranges are non-empty. Subsequent frames overlapping that region then caused a panic while processing the stream.

A remote peer can trigger this with five small STREAM frames (two of them zero-length) once the application has put the stream in unordered-read mode. The default ordered read path is not affected.

The flaw was corrected in 0.11.18 by ignoring empty ranges in `RangeSet::replace`.

Thanks to Otto Hermann ([@ojhermann](https://github.com/ojhermann)) for reporting this issue.

Patch / fix

  • crates.io quinn-proto 0.11.18

Is GHSA-465w-v9q3-7j98 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.

Check with Fencer

Affected packages

ecosystem package affected fixed in
crates.io quinn-proto
>=0.7.0, <0.11.18
0.11.18

References

Sources

Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.