CVE-2026-85008: undici vulnerable to caching and replay of unsafe HTTP method responses
undici’s interceptors.cache() documents that it caches only safe HTTP methods. However, its internal skip-list is built by subtracting the configured methods from the safe-methods set, so an unsafe method (POST, PUT, PATCH, DELETE) never lands in the skip-list and is looked up against the cache store. Combined with the storage gate (canCacheResponse) having no method check, a heuristically-cacheable response (for example a 404) with an explicit Cache-Control: max-age=... to an unsafe method is stored and replayed on a subsequent identical request. The application’s state-changing request never reaches the origin, and undici serves a fabricated response from the cache instead. This occurs with the default configuration (methods: ['GET']), which the public API does not allow widening to unsafe methods, so no application misuse is required; an untrusted origin can trigger it purely through its own response headers.
References
- cna.openjsf.org/security-advisories.html
- github.com/advisories/GHSA-8436-99hf-9mmv
- github.com/nodejs/undici/commit/2be07bf97b3022e0324142d31f99f6e019d815e3
- github.com/nodejs/undici/commit/b61d9432bac7caac51273ad209862e4c0bf935ae
- github.com/nodejs/undici/releases/tag/v7.29.1
- github.com/nodejs/undici/releases/tag/v8.10.2
- github.com/nodejs/undici/security/advisories/GHSA-8436-99hf-9mmv
- nvd.nist.gov/vuln/detail/CVE-2026-85008
Code Behaviors & Features
Detect and mitigate CVE-2026-85008 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →