Skip to content
Fencer Intel
no cvss —

GHSA-53rm-773f-4q8c json

MAX_STREAM_DATA frame can open streams beyond the stream limit

published last mo. modified 18h ago also RUSTSEC-2026-0523

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 MAX_STREAM_DATA frame named a peer-initiated bidirectional stream that was not open yet, `received_max_stream_data` treated the stream, and every lower-numbered stream, as opened without checking the stream ID against the limit advertised to the peer. RFC 9000 section 4.6 requires closing the connection with `STREAM_LIMIT_ERROR` in this case, and the STREAM and RESET_STREAM handlers already did so.

After the handshake, a peer can send one small MAX_STREAM_DATA frame naming a very large stream index, and `accept` then yields every stream up to that index. In `quinn`, a loop that keeps calling `accept_bi` can be handed more than 2^40 streams. Depending on the runtime, the endpoint runs out of memory, stops accepting new connections, or keeps busy indefinitely, even after the peer has gone away. Clients and servers that accept peer-initiated bidirectional streams are affected. Unidirectional streams are not.

The fix validates the stream ID in `received_max_stream_data` and adds a defensive check where streams are opened implicitly. It is in 0.11.19.

Patch / fix

  • crates.io quinn-proto 0.11.19

Is GHSA-53rm-773f-4q8c 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.11.0, <0.11.19
0.11.19

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.