⚠️ Security fixes
High severity
- GHSA-4cwx-7wf7-3272: malformed qualified
privateCache-Control directives could cause cross-user information disclosure in shared caches or a parse-time crash. The cache parser now treats empty qualified directives conservatively and safely handles mixed qualified and unqualified directives. Fixed by 4fe5bc5f with regression coverage in 9f09b49a.
Medium severity
- GHSA-m8rv-5g2x-5cg5: a malicious
typeproperty on a duck-typed blob-like HTTP/1.1 request body could inject CRLF sequences into the generatedcontent-typeheader. Undici now coerces and validates the value before adding it to the request. Fixed by 7d3cf924. - GHSA-jr45-8vmc-qm54: optional whitespace around
=in qualifiedno-cacheandprivatedirectives could bypass shared-cache restrictions and disclose authenticated data across users. Cache-Control parsing now normalizes these forms and applies conservative cache decisions. Fixed by c601fff1. - GHSA-8xcm-r25x-g524: the retry interceptor could expose a stale
Content-Lengthafter resuming a partial response, potentially causing downstream response desynchronization, hangs, or corruption. Undici now rejects partial responses whoseContent-Lengthis inconsistent withContent-Range. Fixed by e11a68ed, with corrected fixtures in 2b3f7493. - GHSA-v3r7-h72x-cjcm: unsanitized
domainandunparsedvalues passed tosetCookie()could inject cookie attributes. Undici now validates cookie domains, paths, and unparsed attributes more strictly. Fixed by 10d93fc3.
Additional hardening
Undici now validates non-string header values after coercion, including array elements, preventing crafted toString() or Symbol.toPrimitive implementations from introducing CRLF sequences. This defense-in-depth change was made in 354a151f.
What's Changed
- fix(decompress): preserve response trailers by @Ram-blip in #5572
- build(deps-dev): bump ws from 8.21.0 to 8.21.1 by @dependabot[bot] in #5576
- fix: validate coerced header values for CRLF by @mcollina in #5579
- fix: handle frozen globalThis in setGlobalDispatcher by @mhayk in #5574
- Ignore auto-generated .npmrc on Windows by @tsctx in #5583
New Contributors
Full Changelog: v8.8.0...v8.9.0