Summary
CVE-2026-86250 is a Denial-of-Service (DoS) vulnerability in h3, the minimal HTTP framework maintained by the h3js project that underpins Nitro and the Nuxt ecosystem. The flaw resides in the chunked-cookie handling logic (setChunkedCookie() / deleteChunkedCookie()), which fails to validate the chunk count parsed from a user-supplied cookie value, allowing a single unauthenticated request to trigger an expensive O(n²) cleanup loop that can hang the Node.js event loop. The issue is rated HIGH severity (CVSS 8.7).
Technical details
- Root cause: h3 supports "chunked cookies," where oversized cookie values are split across multiple cookies and tracked via a sentinel value (e.g.,
__chunked__N) indicating the total chunk count. The function that extracts this integer suffix does not enforce an upper bound onN. - Trigger conditions: An attacker sends a single HTTP request containing a crafted
Cookieheader (e.g.,Cookie: h3=__chunked__999999) to any endpoint that uses h3’s session/chunked-cookie cleanup functionality. - Attack vector: Network-based, unauthenticated, and requires no user interaction — a single ~27-byte forged cookie payload is sufficient to trigger the condition.
- Impact: When
setChunkedCookie()ordeleteChunkedCookie()perform cleanup, they iterate through the attacker-claimed chunk count without validation, resulting in an O(n²) loop that consumes excessive CPU and blocks the Node.js event loop, causing the server process to hang — a denial of service for the affected application.
Affected software
- Product: h3 (npm package
h3), maintained by h3js - Affected versions:
2.0.0-beta.4up to (but not including)2.0.1-rc.18 - Fixed version:
2.0.1-rc.18and later
Severity
- CVSS Score: 8.7 (High)
- CVSS v4.0 Vector:
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness classification: CWE-400 (Uncontrolled Resource Consumption)
Mitigation and recommended actions
- Immediate: Upgrade the
h3package to version2.0.1-rc.18or later, which introduces validation and a bounded maximum on the chunked-cookie count before it is used in cleanup loops. - If immediate patching is not possible:
- Deploy a reverse proxy or WAF rule that rejects or strips
Cookieheaders containing suspicious__chunked__<large-number>patterns. - Monitor for and rate-limit requests carrying abnormally structured cookie headers.
- Restart/monitor affected Node.js processes with process supervisors configured to auto-recover from event-loop hangs as a stopgap until the patched version is deployed.
- Deploy a reverse proxy or WAF rule that rejects or strips

