Skip to content
Heist/ feed
Back to feed
MediumFix available

Next.js: Pending `use cache` fill can leak Draft Mode content into regular responses and persisted pages

Type: advisorySources: OSV

Pending `use cache` fills are shared across requests for the same key without distinguishing Draft Mode requests from regular requests. When two such requests overlap, the second request receives the first request's fill: - A regular request that overlaps an editor's Draft Mode request receives unpublished content, without any authentication. - A Draft Mode request that overlaps a regular request receives published content instead of the draft. If the overlapping regular request prerenders a page — for example an on-demand prerender of a route that was not prerendered at build time — the unpublished content can be persisted into the generated page and served to all later visitors of that route until the page is revalidated. Since cached functions can be shared across routes, the poisoned page does not need to be the page the editor is previewing. Sites are affected if they enable Cache Components (or `experimental.useCache`) and serve Draft Mode previews whose cached functions return draft-dependent content.

Products
next
Affected versions
Not specified
Fixed versions
16.3.8
CVEs
CVE-2026-94544
Confirmed fixed CVEs
Not specified
Updated in this feed
28 Oct 2026, 08:48 UTC · Revision 1

Source evidence

Next.js: Pending `use cache` fill can leak Draft Mode content into regular responses and persisted pages

core-osv · Original source

Published 7 Oct 2026, 20:32 UTC

Pending `use cache` fills are shared across requests for the same key without distinguishing Draft Mode requests from regular requests. When two such requests overlap, the second request receives the first request's fill: - A regular request that overlaps an editor's Draft Mode request receives unpublished content, without any authentication. - A Draft Mode request that overlaps a regular request receives published content instead of the draft. If the overlapping regular request prerenders a page — for example an on-demand prerender of a route that was not prerendered at build time — the unpublished content can be persisted into the generated page and served to all later visitors of that route until the page is revalidated. Since cached functions can be shared across routes, the poisoned page does not need to be the page the editor is previewing. Sites are affected if they enable Cache Components (or `experimental.useCache`) and serve Draft Mode previews whose cached functions return draft-dependent content.

osv:GHSA-3w37-wq28-93x7

next

Fixed versions: 16.3.8

Complete source record
{
  "id": "fde446f0024ee3790333df5e87531ea70ff48a300f4d1806ebec53483de70249",
  "url": "https://osv.dev/vulnerability/GHSA-3w37-wq28-93x7",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Next.js: Pending `use cache` fill can leak Draft Mode content into regular responses and persisted pages",
    "summary": "Pending `use cache` fills are shared across requests for the same key without distinguishing Draft Mode requests from regular requests. When two such requests overlap, the second request receives the first request's fill: - A regular request that overlaps an editor's Draft Mode request receives unpublished content, without any authentication. - A Draft Mode request that overlaps a regular request receives published content instead of the draft. If the overlapping regular request prerenders a page — for example an on-demand prerender of a route that was not prerendered at build time — the unpublished content can be persisted into the generated page and served to all later visitors of that route until the page is revalidated. Since cached functions can be shared across routes, the poisoned page does not need to be the page the editor is previewing. Sites are affected if they enable Cache Components (or `experimental.useCache`) and serve Draft Mode previews whose cached functions return draft-dependent content.",
    "evidence": "osv:GHSA-3w37-wq28-93x7",
    "products": [
      {
        "name": {
          "value": "next",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "16.3.8",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "medium",
    "structured": {
      "id": "GHSA-3w37-wq28-93x7",
      "aliases": [
        "CVE-2026-94544",
        "GHSA-3w37-wq28-93x7"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N"
        },
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "16.3.0"
                },
                {
                  "fixed": "16.3.8"
                }
              ]
            }
          ],
          "package": {
            "name": "next",
            "purl": "pkg:npm/next",
            "ecosystem": "npm"
          },
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-3w37-wq28-93x7/GHSA-3w37-wq28-93x7.json"
          }
        }
      ],
      "modified": "2026-10-07T20:45:06.346844328Z",
      "provider": "osv",
      "references": [
        "https://github.com/vercel/next.js/security/advisories/GHSA-3w37-wq28-93x7",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-94544",
        "https://github.com/vercel/next.js/commit/bd9214f9a32854a011bf5fe58e481dffe1bbf598",
        "https://github.com/vercel/next.js",
        "https://github.com/vercel/next.js/releases/tag/v16.3.8"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-524"
        ],
        "severity": "MODERATE",
        "github_reviewed": true,
        "nvd_published_at": "2026-10-02T16:16:52Z",
        "github_reviewed_at": "2026-10-07T20:32:13Z"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-94544",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/1/score"
  },
  "source_id": "core-osv",
  "document_id": 97272,
  "published_at": "2026-10-07T20:32:13+00:00"
}