{"id":"CVE-2024-46982","published":"2024-09-17T21:55:04Z","modified":"2024-09-18T13:45:21Z","title":"Cache Poisoning in next.js","vendor":"vercel","product":"next.js","tier":"core","eol":null,"affectedVersions":[{"vendor":"vercel","product":"next.js","versions":[">= 13.5.1, < 13.5.7",">= 14.0.0, < 14.2.10"]}],"description":{"text":"Next.js is a React framework for building full-stack web applications. By sending a crafted HTTP request, it is possible to poison the cache of a non-dynamic server-side rendered route in the pages router (this does not affect the app router). When this crafted request is sent it could coerce Next.js to cache a route that is meant to not be cached and send a `Cache-Control: s-maxage=1, stale-while-revalidate` header which some upstream CDNs may cache as well. To be potentially affected all of the following must apply: 1. Next.js between 13.5.1 and 14.2.9, 2. Using pages router, & 3. Using non-dynamic server-side rendered routes e.g. `pages/dashboard.tsx` not `pages/blog/[slug].tsx`. This vulnerability was resolved in Next.js v13.5.7, v14.2.10, and later. We recommend upgrading regardless of whether you can reproduce the issue or not. There are no official or recommended workarounds for this issue, we recommend that users patch to a safe version.","provenance":"source","from":"CVE.org"},"summary":{"text":"Cache poisoning in Next.js, specifically in the pages router's rendering of non-dynamic server-side rendered routes, lets a crafted HTTP request cause a route that should not be cached to be stored in the cache. An unauthenticated remote attacker can trigger this over the network without user interaction, and the poisoned response can also be cached by upstream CDNs that honour the resulting cache headers.","provenance":"ai","model":"claude-haiku-5-5","generatedAt":"2026-10-29T07:13:15Z"},"cvss":{"score":7.5,"severity":"HIGH","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","provenance":"source","from":"CVE.org CNA"},"epss":{"score":0.5918,"percentile":0.99114,"date":"2026-10-30","provenance":"source"},"kev":null,"vulncheckKev":{"dateAdded":"2025-06-08","exploitedFirstSeen":"2025-06-08","ransomware":false,"evidence":[{"url":"https://app.crowdsec.net/cti/cve-explorer/CVE-2024-46982","date":"2025-06-08"},{"url":"https://www.labs.greynoise.io/grimoire/2026-01-16-weekly-oast-report/","date":"2026-01-17"}],"evidenceTotal":2,"provenance":"source"},"exploited":true,"otx":{"pulseCount":0,"pulses":[],"provenance":"machine"},"cwes":[{"id":"CWE-639","name":"Authorization Bypass Through User-Controlled Key"}],"references":[{"url":"https://github.com/vercel/next.js/security/advisories/GHSA-gp8f-8m3g-qvj9","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/vercel/next.js/commit/7ed7f125e07ef0517a331009ed7e32691ba403d3","tags":["x_refsource_MISC"]},{"url":"https://github.com/vercel/next.js/commit/bd164d53af259c05f1ab434004bcfdd3837d7cda","tags":["x_refsource_MISC"]}],"techniques":[],"reports":[],"affected":[{"ecosystem":"npm","package":"next","vulnerableRanges":[">=13.5.1, <13.5.7",">=14.0.0, <14.2.10"],"patched":["13.5.7","14.2.10"],"from":["GHSA-gp8f-8m3g-qvj9"],"provenance":"source"}],"advisories":[{"id":"GHSA-gp8f-8m3g-qvj9","url":"https://github.com/advisories/GHSA-gp8f-8m3g-qvj9","severity":"HIGH","ecosystem":"npm","package":"next","vulnerableRanges":[">=13.5.1, <13.5.7"],"patched":["13.5.7"],"provenance":"source","from":"GHSA"},{"id":"GHSA-gp8f-8m3g-qvj9","url":"https://github.com/advisories/GHSA-gp8f-8m3g-qvj9","severity":"HIGH","ecosystem":"npm","package":"next","vulnerableRanges":[">=14.0.0, <14.2.10"],"patched":["14.2.10"],"provenance":"source","from":"GHSA"}],"euvd":{"id":"EUVD-2024-2803","url":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2024-2803","exploited":false,"exploitedSince":null,"provenance":"source"},"exploits":[],"exploitSources":{"pocGithub":{"count":4,"skipped":1,"earliest":"2024-12-14","earliestUrl":"https://github.com/CodePontiff/next_js_poisoning","repos":[{"name":"Lercas/CVE-2024-46982","url":"https://github.com/Lercas/CVE-2024-46982","stars":5,"created":"2025-01-23"},{"name":"hidesec/CVE-2025-32421","url":"https://github.com/hidesec/CVE-2025-32421","stars":1,"created":"2025-10-11"},{"name":"CodePontiff/next_js_poisoning","url":"https://github.com/CodePontiff/next_js_poisoning","stars":0,"created":"2024-12-14"},{"name":"samuel871211/CVE-2024-46982-Reproduction","url":"https://github.com/samuel871211/CVE-2024-46982-Reproduction","stars":0,"created":"2026-01-17"}]},"first":{"date":"2024-12-14","source":"PoC-in-GitHub","url":"https://github.com/CodePontiff/next_js_poisoning"},"provenance":"source"},"exploitRefs":[],"flow":[],"timeline":[{"date":"2024-09-17","kind":"published","label":"Published (CVE.org)","url":"https://www.cve.org/CVERecord?id=CVE-2024-46982","provenance":"source"},{"date":"2024-12-14","kind":"exploit-public","label":"First public exploit: PoC-in-GitHub","url":"https://github.com/CodePontiff/next_js_poisoning","provenance":"source"},{"date":"2025-06-08","kind":"exploited-reported","label":"Exploitation first reported (VulnCheck KEV evidence)","url":"https://app.crowdsec.net/cti/cve-explorer/CVE-2024-46982","provenance":"source"}],"speed":{"daysToPublicExploit":88,"firstExploitFrom":"PoC-in-GitHub","daysToKev":null},"priority":{"score":65.1,"factors":[{"name":"In a KEV catalog","points":35.0,"detail":"listed in VulnCheck KEV"},{"name":"Recent KEV listing","points":0.0,"detail":"added 510 days ago"},{"name":"Known ransomware use","points":0.0,"detail":"not known"},{"name":"EPSS percentile","points":19.82,"detail":"percentile 0.9911"},{"name":"Named in threat reports","points":0.0,"detail":"0 reports"},{"name":"Public exploit code","points":5.0,"detail":"4 PoC-in-GitHub repos"},{"name":"Mentioned in OTX pulses","points":0.0,"detail":"0 pulses"},{"name":"CVSS severity","points":5.25,"detail":"base score 7.5"},{"name":"End-of-life product","points":0.0,"detail":"supported or unknown"}]},"lineage":{"familyId":"fam-vercel-next-js-cve-2023-46298","parents":[{"from":"CVE-2023-46298","to":"CVE-2024-46982","relation":"related","confidence":"medium","kind":"lineage","evidence":[{"kind":"same-code","provenance":"machine","files":["packages/next/src/server/base-server.ts"],"commits":["https://github.com/vercel/next.js/commit/20d05958ff853e9c9e42139ffec294336881c648","https://github.com/vercel/next.js/commit/7ed7f125e07ef0517a331009ed7e32691ba403d3","https://github.com/vercel/next.js/commit/bd164d53af259c05f1ab434004bcfdd3837d7cda"],"basis":"shared function","functions":["Server"]}]}],"children":[{"from":"CVE-2024-46982","to":"CVE-2024-51479","relation":"successor","confidence":"high","kind":"lineage","evidence":[{"kind":"version-step","provenance":"source","package":"npm:next","fromFixed":"14.2.10","toFixed":"14.2.15","daysApart":91},{"kind":"same-code","provenance":"machine","files":["packages/next/src/server/base-server.ts"],"commits":["https://github.com/vercel/next.js/commit/7ed7f125e07ef0517a331009ed7e32691ba403d3","https://github.com/vercel/next.js/commit/bd164d53af259c05f1ab434004bcfdd3837d7cda","https://github.com/vercel/next.js/commit/1c8234eb20bc8afd396b89999a00f06b61d72d7b"],"basis":"shared function","functions":["Server"]}]},{"from":"CVE-2024-46982","to":"CVE-2025-49005","relation":"related","confidence":"medium","kind":"lineage","evidence":[{"kind":"same-code","provenance":"machine","files":["packages/next/src/server/base-server.ts"],"commits":["https://github.com/vercel/next.js/commit/7ed7f125e07ef0517a331009ed7e32691ba403d3","https://github.com/vercel/next.js/commit/bd164d53af259c05f1ab434004bcfdd3837d7cda","https://github.com/vercel/next.js/commit/ec202eccf05820b60c6126d6411fe16766ecc066"],"basis":"shared function","functions":["Server"]}]},{"from":"CVE-2024-46982","to":"CVE-2025-49826","relation":"related","confidence":"medium","kind":"lineage","evidence":[{"kind":"same-code","provenance":"machine","files":["packages/next/src/server/base-server.ts"],"commits":["https://github.com/vercel/next.js/commit/7ed7f125e07ef0517a331009ed7e32691ba403d3","https://github.com/vercel/next.js/commit/bd164d53af259c05f1ab434004bcfdd3837d7cda","https://github.com/vercel/next.js/commit/a15b974ed707d63ad4da5b74c1441f5b7b120e93","https://github.com/vercel/next.js/commit/16bfce64ef2157f2c1dfedcfdb7771bc63103fd2"],"basis":"shared function","functions":["Server"]}]}],"packageHistory":[{"cve":"CVE-2024-34350","published":"2024-05-09","fixed":"13.5.1","kev":false,"link":{"from":"CVE-2024-34350","to":"CVE-2024-46982","relation":"successor","confidence":"low","kind":"sequence","evidence":[{"kind":"version-step","provenance":"source","package":"npm:next","fromFixed":"13.5.1","toFixed":"13.5.7","daysApart":131}]}},{"cve":"CVE-2024-34351","published":"2024-05-09","fixed":"14.1.1","kev":false},{"cve":"CVE-2024-47831","published":"2024-10-14","fixed":"14.2.7","kev":false},{"cve":"CVE-2024-46982","published":"2024-09-17","fixed":"14.2.10","kev":false},{"cve":"CVE-2024-51479","published":"2024-12-17","fixed":"14.2.15","kev":false},{"cve":"CVE-2024-56332","published":"2025-01-03","fixed":"15.1.2","kev":false,"link":{"from":"CVE-2024-46982","to":"CVE-2024-56332","relation":"successor","confidence":"low","kind":"sequence","evidence":[{"kind":"version-step","provenance":"source","package":"npm:next","fromFixed":"13.5.7","toFixed":"13.5.8","daysApart":108}]}},{"cve":"CVE-2025-32421","published":"2025-05-14","fixed":"15.1.6","kev":false}],"package":"npm:next"}}