$ the-wire · showcase
Node.js security patches land, permission audit mode fixes, and stream EOF optimization
By RepoJournal · Filed · About Node.js
Five undici security fixes address WebSocket, cache, and connection handling vulnerabilities, while Node.js core fixes permission audit mode and stream overhead.
The undici project shipped five security fixes addressing CVEs in WebSocket handling and cache behavior. One fix destroys the permessage-deflate inflater after decompression limit to prevent a late zlib error from becoming an uncaught exception (CVE-2026-85024) [1]. Another propagates connection-close failures through the retained writable stream controller, preventing an unobserved rejected promise from terminating the process (CVE-2026-85014) [2]. Cache fixes isolate interceptor state by dispatcher origin, deriving identities from the authoritative origin rather than caller-controlled metadata (CVE-2026-85152) [3], and reject caching of responses to unsafe methods like POST or DELETE, preventing replay (CVE-2026-85008) [4]. A fifth fix preserves BalancedPool connection options, which were dropped by a JSON-based deep clone, losing function-valued options like TLS certificate validation callbacks (CVE-2026-84961) [5].
Action items
- → Upgrade undici to a patched release covering CVE-2026-85024, CVE-2026-85014, CVE-2026-85152, CVE-2026-85008, CVE-2026-84961 before next deploy nodejs/undici [immediate]
- → Review --permission-audit users: fs.lstat*, fs.symlink*, and process.dlopen still throw under audit mode nodejs/node [plan]
- → Benchmark HTTP request-heavy workloads after the stream EOF fix lands nodejs/node [monitor]
References
- [1] fix(websocket): destroy inflater after decompression limit ↗ nodejs/undici
- [2] fix(websocket): error locked writable on unclean close ↗ nodejs/undici
- [3] fix(cache): isolate interceptor state by dispatcher origin ↗ nodejs/undici
- [4] fix(cache): reject unsafe method response caching ↗ nodejs/undici
- [5] fix: preserve BalancedPool connection options ↗ nodejs/undici
- [6] permission: do not enforce fs and addons in audit mode ↗ nodejs/node
- [7] stream: skip unobserved 'readable' emission at EOF ↗ nodejs/node
- [8] vfs: load native addons from a mounted file system ↗ nodejs/node