{"id":"CVE-2026-100660","title":"Netty's HTTP/3 codec (io.netty:netty-codec-http3) from 4.2.0.Final through 4.2.17.Final retains unbounded per-stream QPACK encoder state","summary":"Netty's HTTP/3 codec (io.netty:netty-codec-http3) from 4.2.0.Final through 4.2.17.Final retains unbounded per-stream QPACK encoder state. QpackEncoder stores a queue and a dynamic-table index tracker for every encoded field section that …","severity":"high","cvss":7.5,"cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","cwe":["CWE-770"],"vendor":"netty","product":"netty","affected":["netty < 4.2.18.Final"],"published":"2026-09-26","updated":"2026-09-28","sourceUpdated":"2026-09-28T17:17:44.247","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-100660","references":[{"url":"https://github.com/netty/netty/security/advisories/GHSA-495p-pchh-r4mc","label":"disclosure@vulncheck.com"},{"url":"https://www.vulncheck.com/advisories/netty-before-4.2.18-final-qpackencoder-unbounded-memory-retention","label":"disclosure@vulncheck.com"},{"url":"https://github.com/netty/netty/security/advisories/GHSA-495p-pchh-r4mc","label":"134c704f-9b21-4f2e-91b3-4a467353bcc0"},{"url":"https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-100660.json"},{"url":"https://access.redhat.com/security/cve/CVE-2026-100660"},{"url":"https://bugzilla.redhat.com/show_bug.cgi?id=2541808"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-100660"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-100660"}],"tags":["nvd","cve.org","csaf","vex","red-hat","exploit-available"],"exploitAvailable":true,"ssvc":{"exploitation":"poc","automatable":"yes","technicalImpact":"partial","timestamp":"2026-09-28T16:45:17.094549Z"},"ingestedAt":"2026-09-26T13:33:20.914Z","epss":0.00454,"epssPercentile":0.39243,"slug":"CVE-2026-100660","body":"## Overview\n\nNetty's HTTP/3 codec (io.netty:netty-codec-http3) from 4.2.0.Final through 4.2.17.Final retains unbounded per-stream QPACK encoder state. QpackEncoder stores a queue and a dynamic-table index tracker for every encoded field section that references the QPACK dynamic table, keyed by the peer-controlled QUIC stream ID, and these entries are released only when the remote decoder sends a Section Acknowledgment or Stream Cancellation instruction — not when the HTTP/3 stream completes. There is no limit on the number of tracked streams, field sections, or retained bytes. A remote, unauthenticated HTTP/3 client can advertise a non-zero QPACK dynamic-table capacity, acknowledge the table insertion so the server reuses a dynamically indexed response header, and then omit all mandatory Section Acknowledgments while issuing sequential requests over a single QUIC connection, bypassing concurrent-stream limits and causing unbounded heap growth until the server exhausts memory (denial of service). Fixed in 4.2.18.Final.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.\n\n## Vendor advisories\n\n- **Red Hat VEX** · Important · affected: Red Hat OpenShift Dev Spaces · no fix planned: Red Hat OpenShift Dev Spaces · updated 2026-09-29 · [vex](https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-100660.json)","depth":"midnight","depthScore":53,"depthScoreParts":{"impact":41.3,"likelihood":0.1,"exploitation":12,"ransomware":0},"changes":[{"seq":212046,"id":"CVE-2026-100660","ts":1790615859128,"field":"exploit_available","old":"false","new":"true"}]}