GHSA-wppq-2f6r-wfvm json
Long Retry token can panic or exhaust memory in a QUIC client
published last mo. modified 18h ago also RUSTSEC-2026-0524
- 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
A client kept the token from a Retry packet without any length limit and put it into the header of every Initial packet it sent afterwards. Initial datagrams are 1200 bytes. When the token and connection IDs left no room for the minimum payload, `PacketBuilder::new` computed a minimum packet size larger than the maximum, which only a debug assertion checked. On the next `poll_transmit`, debug builds panic, and release builds try to allocate more than 10 GiB in one call. With longer tokens the allocation fails and the process aborts.
A matching Retry packet can be built from the client's first Initial alone. The attacker can therefore be the server being contacted, or anyone who sees that Initial and can answer before the server does. Every application that makes outgoing connections with `quinn-proto` is affected, including all `quinn` clients. Servers do not process Retry packets.
The fix closes the connection with `PROTOCOL_VIOLATION` when an Initial token leaves too little room for frames. That covers Retry tokens and cached address-validation tokens, since both come from the peer. It also reserves room for CONNECTION_CLOSE after large Initial headers. Both changes are in 0.11.19.
Patch / fix
- crates.io quinn-proto 0.11.19
Is GHSA-wppq-2f6r-wfvm 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 FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | quinn-proto | >=0.11.0, <0.11.19 |
0.11.19 |
References
-
github.com
/quinn-rs/quinn/commit/3bba467893ceff64d6cda0b3a2c51a1429e10372
web
-
github.com
/quinn-rs/quinn/commit/d45b5136ed1d5b2b04ff6456443c0662acf1d0d3
web
-
github.com
/quinn-rs/quinn/commit/74c33ff75281d7751488e410e21e4f030782b655
web
-
github.com
/quinn-rs/quinn/commit/a6e78d1c8bf28630f1e92fbcc38f60e0a134b01a
web
-
crates.io
/crates/quinn-proto
package
-
rustsec.org
/advisories/RUSTSEC-2026-0524.html
advisory
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.