CVE-2026-12708: Unbounded HTTP/3 Datagram flow map growth in tokio-quiche
Summary
Cloudflare tokio-quiche was found to contain an uncontrolled resource consumption vulnerability in its HTTP/3 DATAGRAM handling. For every previously unseen flow identifier (quarter stream ID) received in a DATAGRAM frame, tokio-quiche creates and retains new, per-flow state. A remote peer can send DATAGRAMs with many distinct identifiers, causing the per-connection flow map and associated channel state to grow without bound.
Impact
Exploitation can exhaust process memory and cause a denial of service. The vulnerable code is used in both client and server configurations, so either role can be affected by a malicious peer. QUIC DATAGRAM support in tokio-quiche is enabled by default through QuicSettings::enabledgram; applications can disable it by setting this field to false. The vulnerable HTTP/3 path is reachable only when DATAGRAM support is negotiated with the peer. Core quiche and HTTP/3 deployments without DATAGRAM support are not affected.
Mitigation
Disable DATAGRAMs in tokio-quiche’s QuicSettings::enabledgram.
Remediation
Upgrade to tokio-quiche version 0.23.0 or later. The fixed code creates flow state only for valid DATAGRAM-capable request streams, which are bounded by QUIC’s stream limits. To tolerate packet reordering, servers retain early DATAGRAMs in a bounded, expiring buffer, while clients discard DATAGRAMs for unknown flows.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
tokio-quicheto a version that resolves this vulnerability.Fixed in 0.23.0 - Configuration
Disable QUIC DATAGRAM support by setting QuicSettings::enable_dgram to false.
tokio-quiche QuicSettings::enable_dgram = false
Event History
Frequently Asked Questions
Which deployments are exposed to this issue?
Both tokio-quiche clients and servers can be affected if they communicate with a malicious peer and HTTP/3 DATAGRAM support is negotiated. Core quiche and HTTP/3 deployments that do not support DATAGRAMs are not affected.
Is the default tokio-quiche configuration affected?
Yes. QUIC DATAGRAM support is enabled by default through QuicSettings::enable_dgram, although the vulnerable path is reachable only after DATAGRAM support has been negotiated with the peer.
What can be done before upgrading?
Disable DATAGRAM support by setting QuicSettings::enable_dgram to false. This prevents the vulnerable HTTP/3 DATAGRAM handling path from being reachable.
What version contains the fix?
Upgrade tokio-quiche to version 0.23.0 or later. The fix creates flow state only for valid DATAGRAM-capable request streams.