GO-2026-4958
Uncontrolled resource consumption when parsing SPDY frames in github.com/moby/spdystream
At a glance
- Published
- Updated
- CVE
- CVE-2026-35469
- Aliases
- GHSA-pc3f-x583-g7j2
Description
The SPDY/3 frame parser in spdystream does not validate attacker-controlled counts and lengths before allocating memory. A remote peer that can send SPDY frames to a service using spdystream can cause the process to allocate gigabytes of memory with a small number of malformed control frames, leading to an out-of-memory crash. Three allocation paths in the receive side are affected: 1. SETTINGS entry count: The SETTINGS frame reader reads a 32-bit numSettings from the payload and allocates a slice of that size without checking it against the declared frame length. 2. Header count: parseHeaderValueBlock reads a 32-bit numHeaders from the decompressed header block and allocates an http.Header map of that size with no upper bound. 3. Header field size: Individual header name and value lengths are read as 32-bit integers and used directly as allocation sizes with no validation. Because SPDY header blocks are zlib-compressed, a small on-the-wire payload can decompress into attacker-controlled bytes that the parser interprets as 32-bit counts and lengths. A single crafted frame is enough to exhaust process memory.
Affected packages
| Package | Versions |
|---|---|
| Go · github.com/moby/spdystream | introduced 0, fixed 0.5.1 |
References
- https://github.com/moby/spdystream/security/advisories/GHSA-pc3f-x583-g7j2 ADVISORY
- https://github.com/moby/spdystream/commit/ef6121f62c730110bf5ae604a865a8613bfb787f FIX
- https://github.com/moby/spdystream/releases/tag/v0.5.1 WEB
Sources
| Source | Licence |
|---|---|
| OSV.dev | CC-BY 4.0 — Go Vulnerability Database |