---
id: "CVE-2026-109869"
kind: "vulnerability"
aliases: ["CVE-2026-109869", "GHSA-xjj6-f33q-929c"]
title: "undici vulnerable to Denial of Service via unhandled error on excessive content-encodings"
severity: "high"
cvss: 7.5
epss: 0.00343
exploited: false
status: "open"
category: "package"
products: [{"name": "undici", "fixed": ["6.29.1"], "affected": ">= 6.23.0, < 6.29.1", "ecosystem": "npm"}, {"name": "undici", "fixed": ["7.30.1"], "affected": ">= 7.18.0, < 7.30.1", "ecosystem": "npm"}, {"name": "undici", "fixed": ["8.12.2"], "affected": ">= 8.0.0, < 8.12.2", "ecosystem": "npm"}, {"name": "nodejs undici", "fixed": ["6.29.1"], "affected": ">= 6.23.0, < 6.29.1", "ecosystem": "vendor"}, {"name": "nodejs undici", "fixed": ["7.30.1"], "affected": ">= 7.18.0, < 7.30.1", "ecosystem": "vendor"}, {"name": "nodejs undici", "fixed": ["8.12.2"], "affected": ">= 8.0.0, < 8.12.2", "ecosystem": "vendor"}]
ecosystems: ["npm", "vendor"]
tags: ["cwe-248", "cwe-459", "fetch", "node.js", "npm", "package", "server-side", "undici"]
not_affected_if: ["only-trusted-upstreams", "version-outside-affected-range"]
published_at: "2026-10-15T19:17:21+00:00"
first_seen_at: "2026-10-23T22:15:56+00:00"
updated_at: "2026-10-25T03:25:24+00:00"
sources: [{"source": "ghsa", "url": "https://github.com/advisories/GHSA-xjj6-f33q-929c", "first_seen_at": "2026-10-23T22:15:56+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-109869", "first_seen_at": "2026-10-23T23:44:52+00:00"}]
---

# undici vulnerable to Denial of Service via unhandled error on excessive content-encodings

undici's fetch() crashes the Node.js process when a remote server sends a response with more than five content codings and closes the connection before the body. An attacker who controls or can impersonate an HTTP server the application fetches from can take the process down with one response.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- npm:undici affected >= 6.23.0, < 6.29.1 fixed 6.29.1
- npm:undici affected >= 7.18.0, < 7.30.1 fixed 7.30.1
- npm:undici affected >= 8.0.0, < 8.12.2 fixed 8.12.2
- vendor:nodejs undici affected >= 6.23.0, < 6.29.1 fixed 6.29.1
- vendor:nodejs undici affected >= 7.18.0, < 7.30.1 fixed 7.30.1
- vendor:nodejs undici affected >= 8.0.0, < 8.12.2 fixed 8.12.2

## How to check

- Run `npm ls undici` in the project and check whether the resolved version falls in 6.23.0 to below 6.29.1, 7.18.0 to below 7.30.1, or 8.0.0 to below 8.12.2.
- Check the Node.js bundled undici version with `node -p process.versions.undici` if the application relies on global fetch.

## Fix

- Upgrade the undici package to `6.29.1`, `7.30.1`, or `8.12.2` matching the major line in use.
- Upgrade Node.js to a release that bundles a fixed undici if global fetch is used without a direct undici dependency.

## Timeline

- 2026-10-23T22:15:56+00:00 ghsa https://github.com/advisories/GHSA-xjj6-f33q-929c
- 2026-10-23T23:44:52+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-109869

## From the sources

### Impact

undici's `fetch()` crashes the Node.js process when a malicious server returns a response with more than five content codings and closes the connection before sending the body. undici rejects such responses (a content-encoding limit), but it created the internal response stream before that check and returned without attaching an error listener or aborting the request. The early close then surfaces a content-length mismatch on that orphaned internal stream, which Node.js treats as an unhandled `error` and terminates the process. A remote, unauthenticated server can trigger this with a single response, even when the application correctly catches the `fetch()` rejection. undici 6.x, 7.x, and 8.x are affected.

### Patches

Upgrade to `6.29.1`, `7.30.1`, or `8.12.2`. undici now validates the content-encoding chain before creating the internal body stream and aborts the response when the limit is exceeded, so no error can surface on an orphaned stream.

### Workarounds

None.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
