{ "canonical_id": "undici--CVE-2026-22036", "system_id": "undici", "display_name": "Undici", "category": "frameworks", "advisory_mode": "core", "title": "Undici has an unbounded decompression chain in HTTP responses on Node.js Fetch API via Content-Encoding leads to resource exhaustion", "summary": "### Impact\n\nThe `fetch()` API supports chained HTTP encoding algorithms for response content according to RFC 9110 (e.g., Content-Encoding: gzip, br). This is also supported by the undici decompress interceptor.\n\nHowever, the number of links in the decompression chain is unbounded and the default maxHeaderSize allows a malicious server to insert thousands compression steps leading to high CPU usage and excessive memory allocation.\n\n### Patches\n\nUpgrade to 7.18.2 or 6.23.0.\n\n### Workarounds\n\nIt is possible to apply an undici interceptor and filter long `Content-Encoding` sequences manually.\n\n### References\n\n* https://hackerone.com/reports/3456148\n* https://github.com/advisories/GHSA-gm62-xv2j-4w53\n* https://curl.se/docs/CVE-2022-32206.html", "published_at": "2026-01-14T21:06:08Z", "updated_at": "2026-02-04T02:56:17.456091Z", "severity": "low", "cvss_score": 3.1, "exploit_status": "unknown", "source_confidence": "official", "official_source_url": "https://github.com/nodejs/undici/security/advisories/GHSA-g9mf-h72j-4rw9", "secondary_source_urls": [ "https://nvd.nist.gov/vuln/detail/CVE-2026-22036", "https://github.com/nodejs/undici/commit/b04e3cbb569c1596f86c108e9b52c79d8475dcb3", "https://github.com/nodejs/undici" ], "aliases": [ "CVE-2026-22036", "GHSA-g9mf-h72j-4rw9" ], "cve_ids": [ "CVE-2026-22036" ], "ghsa_ids": [ "GHSA-g9mf-h72j-4rw9" ], "osv_ids": [ "GHSA-g9mf-h72j-4rw9" ], "affected_versions": [ "introduced=7.0.0, fixed<7.18.2", "introduced=0, fixed<6.23.0" ], "fixed_versions": [ "7.18.2", "6.23.0" ], "package_name": "undici", "render_markdown": true, "case_path": "07-framework-security/frameworks/undici/cases/undici-cve-2026-22036.md", "secure_code_topics": [ "ssrf-url-validation", "proxy-trust-boundary" ], "status": "generated", "triage_reasons": [], "metadata": { "source_names": [ "OSV Undici" ], "source_kinds": [ "osv-batch" ], "candidate_count": 1 } }