{"id":"RUSTSEC-2026-0338","revision":"96285c10dbc042f9b417680073002b41","records":[{"revision":"96285c10dbc042f9b417680073002b41","observedAt":"2026-10-24T13:19:54.901+00:00","statement":{"source":"osv","id":"RUSTSEC-2026-0338","aliases":["GHSA-465w-v9q3-7j98"],"title":"Remote peer can panic quinn-proto with zero-length STREAM frames during unordered reads","description":"When a stream is read in unordered mode (for example through `RecvStream::read(false)` in\nquinn-proto or `read_unordered` in `quinn`), quinn-proto proactively deduplicates received data\nby recording received ranges in a `RangeSet` through its `replace` method. When an incoming\nSTREAM frame carried an empty payload, the `Drop` implementation of the iterator returned by\n`replace` inserted an empty range into the set, violating the invariant that stored ranges are\nnon-empty. Subsequent frames overlapping that region then caused a panic while processing the\nstream.\n\nA remote peer can trigger this with five small STREAM frames (two of them zero-length) once the\napplication has put the stream in unordered-read mode. The default ordered read path is not\naffected.\n\nThe flaw was corrected in 0.11.18 by ignoring empty ranges in `RangeSet::replace`.\n\nThanks to Otto Hermann ([@ojhermann](https://github.com/ojhermann)) for reporting this issue.","state":0,"publishedAt":"2026-09-14T12:00:00+00:00","modifiedAt":"2026-10-12T18:15:01.9695146+00:00","affected":[{"ecosystem":"crates.io","name":"quinn-proto","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0.7.0"},{"kind":"fixed","version":"0.11.18"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[],"references":["https://crates.io/crates/quinn-proto","https://rustsec.org/advisories/RUSTSEC-2026-0338.html","https://github.com/quinn-rs/quinn/pull/2868"],"sourceUrl":"https://osv.dev/vulnerability/RUSTSEC-2026-0338","license":"OSV · upstream source license applies","key":"osv:RUSTSEC-2026-0338","identifiers":["RUSTSEC-2026-0338","GHSA-465w-v9q3-7j98"]},"retained":false,"historicalAffected":[]}],"coverage":[]}