CVE-2026-16729: undici vulnerable to cookie attribute injection via unsanitized domain and unparsed setCookie fields
Impact
The setCookie function has two attribute injection paths. validateCookieDomain does not reject semicolons (validateCookiePath already does at 0x3B), so a domain value like example.com; SameSite=None lands verbatim as Domain=example.com; SameSite=None. The unparsed array's loop only checks each entry contains = and does not sanitize values, so an entry like X-Custom=val; HttpOnly lands unchanged, injecting HttpOnly without the caller setting cookie.httpOnly = true.
Applications that pass user-controlled input to these fields, typically multi-tenant or reverse-proxy servers that scope session cookies to a tenant-supplied domain, can have SameSite CSRF protections bypassed, Secure or HttpOnly forced or stripped, or the intended SameSite tier overridden.
Patches
Patched in undici v6.28.0, v7.29.0, and v8.9.0.
Workarounds
- Sanitize domain values against the RFC 1034 letter-digit-hyphen set before passing to setCookie. - Do not pass user-controlled data to the unparsed field.
Other sources
undici's setCookie function does not fully sanitize cookie attributes. In undici before 6.28.0, from 7.0.0 up to before 7.29.0, and from 8.0.0 up to before 8.9.0, a domain value is not checked for semicolons and entries in the unparsed array are not sanitized, so attacker-influenced input can inject additional cookie attributes. For example, a domain value containing a semicolon can append attributes such as SameSite, and an unparsed entry can inject attributes such as HttpOnly, without the caller setting them. Applications that pass user-controlled input to these fields, such as multi-tenant or reverse-proxy servers that scope session cookies to a tenant-supplied domain, can have SameSite CSRF protections bypassed, or the Secure, HttpOnly, and SameSite attributes forced, stripped, or overridden. The issue is fixed in undici 6.28.0, 7.29.0, and 8.9.0.
— NVD
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/undicito a version that resolves this vulnerability.Fixed in 8.9.0 - Upgrade
Upgrade
npm/undicito a version that resolves this vulnerability.Fixed in 7.29.0 - Upgrade
Upgrade
npm/undicito a version that resolves this vulnerability.Fixed in 6.28.0 - Upgrade
Upgrade
undicito a version that resolves this vulnerability.Fixed in 6.28.0 - Upgrade
Upgrade
undicito a version that resolves this vulnerability.Fixed in 7.29.0 - Upgrade
Upgrade
undicito a version that resolves this vulnerability.Fixed in 8.9.0 - Configuration
Ensure the `unparsed` array entries passed to `setCookie` are not influenced by user-controlled input, since entries are not sanitized and can inject attributes (e.g., `X-Custom=val; HttpOnly`).
undici (setCookie) unparsed = Do not pass user-controlled data to the `unparsed` field - Configuration
Before passing a tenant-supplied `domain` value into `setCookie`, sanitize/validate it so it contains only RFC 1034 letter-digit-hyphen characters (mitigates semicolon injection such as `example.com; SameSite=None`).
undici (setCookie) domain = Sanitize against RFC 1034 letter-digit-hyphen set before calling setCookie
Event History
Frequently Asked Questions
What is the severity of CVE-2026-16729?
CVE-2026-16729 has a medium severity rating of 4.8.
How do I fix CVE-2026-16729?
To fix CVE-2026-16729, upgrade undici to version 6.28.0 or later, or to a specific version after 7.29.0 and after 8.9.0.
What impact does CVE-2026-16729 have on my application?
CVE-2026-16729 can allow attackers to inject malicious cookie attributes due to insufficient sanitization.
What versions of undici are affected by CVE-2026-16729?
CVE-2026-16729 affects undici versions prior to 6.28.0, from 7.0.0 up to before 7.29.0, and from 8.0.0 up to before 8.9.0.
What does the CVE-2026-16729 vulnerability exploit?
CVE-2026-16729 exploits the lack of sanitization in the setCookie function, specifically targeting the domain value and unparsed cookie fields.