Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Remote, unauthenticated, no interaction against default HTTP/3 config (AV:N/AC:L/PR:N/UI:N); pure memory-exhaustion DoS gives A:H with no confidentiality or integrity impact.
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
6DescriptionNVD
Summary
An attacker can cause excessive memory allocation in quic-go's HTTP/3 client and server implementations by sending a QPACK-encoded HEADERS frame that decodes into a large trailer field section with many unique field names and/or large values. The implementation builds an http.Header for the corresponding http.Request or http.Response, while only enforcing limits on the size of the QPACK-compressed HEADERS frame, not on the decoded field section. This can lead to memory exhaustion.
This is very similar to CVE-2025-64702. The difference is that this issue uses HTTP trailers, rather than HTTP headers, as the attack vector.
Impact
A misbehaving or malicious peer can cause a denial-of-service (DoS) attack against quic-go's HTTP/3 servers or clients by triggering excessive memory allocation, potentially leading to crashes or resource exhaustion. This affects both servers and clients due to symmetric header construction.
Details
In HTTP/3, field sections are compressed using QPACK (RFC 9204). Field sections are used for both HTTP headers and trailers. quic-go's HTTP/3 server and client decode the QPACK-encoded HEADERS frame into header fields, then construct an http.Request or http.Response.
http3.Server.MaxHeaderBytes and http3.Transport.MaxResponseHeaderBytes limit the encoded HEADERS frame size, with defaults of 1 MB for servers and 10 MB for clients. However, they did not limit the decoded field section size. A maliciously crafted HEADERS frame carrying trailers can expand to about 50x the encoded size using QPACK static table entries with long names and/or values.
RFC 9114 requires endpoints to enforce decoded field section size limits via SETTINGS, which quic-go did not do for trailers.
The Fix
quic-go now enforces RFC 9114 decoded field section size limits for trailers as well. It incrementally decodes QPACK entries and checks the field section size after each entry, aborting the stream if an entry causes the limit to be exceeded.
AnalysisAI
Denial-of-service in quic-go's HTTP/3 client and server implementations (versions prior to 0.59.1) allows a remote peer to exhaust memory by sending a QPACK-encoded HEADERS frame carrying HTTP trailers that decode into a very large field section. Because quic-go capped only the compressed frame size (1 MB server / 10 MB client) and not the decoded trailer field section, a crafted frame can expand roughly 50x using QPACK static-table entries, forcing large http.Header allocations. Both peers are affected due to symmetric header construction; there is no public exploit identified at time of analysis and EPSS risk is low (0.04%), but the flaw is assessed automatable per CISA SSVC.
Technical ContextAI
The vulnerability lives in quic-go's HTTP/3 stack (Go package github.com/quic-go/quic-go), specifically the trailer-parsing path in http3/headers.go. HTTP/3 (RFC 9114) compresses field sections with QPACK (RFC 9204), and field sections carry both headers and trailers. When a HEADERS frame containing trailers is received, quic-go invokes the QPACK decoder and constructs an http.Header for the resulting http.Request or http.Response. This is a classic CWE-770 (Allocation of Resources Without Limits or Throttling) issue: RFC 9114 requires endpoints to advertise and enforce a maximum decoded field section size via SETTINGS, but quic-go enforced that bound only on regular headers, leaving the trailer path unbounded on the decoded size. QPACK's static table lets a small compressed input reference long canonical names/values, yielding an amplification factor of about 50x from encoded to decoded bytes.
RemediationAI
Vendor-released patch: upgrade quic-go to 0.59.1, which enforces the RFC 9114 decoded field section size limit for trailers by incrementally decoding QPACK entries and aborting the stream once the running size (name + value + 32 bytes per field) exceeds the configured limit. The release is available at https://github.com/quic-go/quic-go/releases/tag/v0.59.1 and the code change in PR https://github.com/quic-go/quic-go/pull/5642 (commit c56e8c79d1627cc1ed6005b421b4b0adadd83665); full details in advisory https://github.com/quic-go/quic-go/security/advisories/GHSA-vvgj-x9jq-8cj9. If immediate upgrade is not possible, reduce exposure by lowering http3.Server.MaxHeaderBytes / http3.Transport.MaxResponseHeaderBytes to shrink the accepted compressed frame size (this reduces but does not eliminate the ~50x amplification and may reject legitimate large-header requests), constraining process memory via container/cgroup limits so a single connection cannot exhaust host memory (trade-off: the affected connection/process may still be killed), and - for clients - restricting HTTP/3 connections to trusted servers. These are stopgaps; only 0.59.1 fully removes the unbounded trailer allocation.
Same technique Denial Of Service
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Affected |
| SUSE Linux Enterprise Server 16.0 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.0 | Affected |
| SUSE Manager Client Tools 15 | Affected |
| SUSE Manager Client Tools for SLE 15 | Affected |
| SUSE Multi-Linux Manager Client Tools for SLE 15 | Affected |
| openSUSE Leap 16.0 | Affected |
| SUSE Manager Proxy LTS 4.3 | Affected |
| SUSE Manager Proxy Module 4.3 | Affected |
| SUSE Enterprise Storage 6 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Affected |
| SUSE Manager Proxy Module 4.1 | Affected |
| SUSE Manager Proxy Module 4.2 | Affected |
| openSUSE Leap 15.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
| SUSE Multi Linux Manager Tools SLE-15 | Affected |
| ses/7.1/ceph/prometheus-server ses/7/ceph/prometheus-server suse/multi-linux-manager/5.2/x86_64/monitoring-prometheus | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-34312
GHSA-vvgj-x9jq-8cj9