Headline
CVE-2023-50247: QUIC state exhaustion DoS
h2o is an HTTP server with support for HTTP/1.x, HTTP/2 and HTTP/3. The QUIC stack (quicly), as used by H2O up to commit 43f86e5 (in version 2.3.0-beta and prior), is susceptible to a state exhaustion attack. When H2O is serving HTTP/3, a remote attacker can exploit this vulnerability to progressively increase the memory retained by the QUIC stack. This can eventually cause H2O to abort due to memory exhaustion. The vulnerability has been resolved in commit d67e81d03be12a9d53dc8271af6530f40164cd35. HTTP/1 and HTTP/2 are not affected by this vulnerability as they do not use QUIC. Administrators looking to mitigate this issue without upgrading can disable HTTP/3 support.
Impact
The QUIC stack (quicly), as used by H2O up to commit 3576054, is susceptible to a state exhaustion attack.
When H2O is serving HTTP/3, a remote attacker can exploit this vulnerability to progressively increase the memory retained by the QUIC stack. This can eventually cause H2O to abort due to memory exhaustion.
Patches
The vulnerability has been resolved in commit d67e81d.
It is recommended for H2O instances running with HTTP/3 support to be updated to commit d67e81d or a later version.
Workarounds
HTTP/1 and HTTP/2 are not affected by this vulnerability as they do not use QUIC. Administrators looking to mitigate this issue without upgrading can disable HTTP/3 support. For guidance on this, see HTTP/3 configuration directives.
References
This vulnerability is an instance of a missspecification (or an oversight) of the QUIC version 1 protocol, which was reported by @marten-seemann.
See also: corresponding quicly advisory.