RUSTSEC-2026-0338None▾ SunlitRemote peer can panic quinn-proto with zero-length STREAM frames during unordered reads
▾ Sunlit zone — Low / medium · no exploitation signal
impact 2.8 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
Disclosure to exploitation, from the record and what we observed since indexing it.
Disclosed via OSV
Last analysed / modified upstream
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) for reporting this issue.
quinn-proto >= 0.7.0, < 0.11.18Upgrade to a patched release:
quinn-proto 0.11.18Connected by shared product, vendor, weakness, or advisory.
RUSTSEC-2026-0340High· 7.5Peer minimum ACK delay can panic quinn-proto when ACK_FREQUENCY transmission is enabled
RUSTSEC-2026-0343High· 7.5Outgoing datagram buffer accounting can panic the sender in quinn-proto
RUSTSEC-2026-0341High· 7.5Stream reassembly memory-exhaustion guard in quinn-proto can be bypassed
RUSTSEC-2026-0342NoneZero-length DATAGRAM frames bypass the receive buffer limit in quinn-proto
RUSTSEC-2026-0339NoneUnbounded growth of pending connection ID retirements in quinn-proto
CVE-2026-25800High· 7.5Remote memory exhaustion in quinn-proto from unbounded out-of-order stream reassembly