{"id":"CVE-2026-100409","summary":"OpenNext Cloudflare: Cache interception can bypass middleware protection for encoded paths","details":"OpenNext Cloudflare is an open Next.js adapter for Cloudflare. From 0.3.0 until 1.20.2, applications that enable enableCacheInterception, rely on middleware for access control, and have a matching cached protected route process encoded pathnames inconsistently between middleware matching and cache lookup. An unauthenticated attacker can use a percent-encoded pathname that does not match authorization middleware but decodes to the cache key of a protected route, causing cached content to be returned without authorization. Malformed encodings can also be partially decoded, allowing cache lookup to continue with a pathname that middleware did not evaluate consistently. This issue is fixed in version 1.20.2.","aliases":["GHSA-2vc4-c4r6-p6v6"],"modified":"2026-10-16T02:47:28.022451225Z","published":"2026-10-15T16:57:50.999Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/100xxx/CVE-2026-100409.json","cna_assigner":"GitHub_M","cwe_ids":["CWE-177","CWE-180"]},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/100xxx/CVE-2026-100409.json"},{"type":"FIX","url":"https://github.com/opennextjs/opennextjs-aws/pull/1199"},{"type":"FIX","url":"https://github.com/opennextjs/opennextjs-aws/pull/1200"},{"type":"FIX","url":"https://github.com/opennextjs/opennextjs-cloudflare/commit/38ea40b669be272ddf09a7df7e70c69d0b57404b"},{"type":"WEB","url":"https://github.com/opennextjs/opennextjs-cloudflare/releases/tag/@opennextjs/cloudflare@1.20.2"},{"type":"ADVISORY","url":"https://github.com/opennextjs/opennextjs-cloudflare/security/advisories/GHSA-2vc4-c4r6-p6v6"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-100409"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/opennextjs/opennextjs-cloudflare","events":[{"introduced":"bbba0a8f2e6c911bd73f3245bb7ca893024d07c9"},{"fixed":"da4b7fc8c89441a6f96205635fa70e329d1f0df7"}],"database_specific":{"source":"AFFECTED_FIELD","extracted_events":[{"introduced":"0.3.0"},{"fixed":"1.20.2"}]}}],"versions":["@opennextjs/cloudflare@1.20.1","@opennextjs/cloudflare@1.20.0","@opennextjs/cloudflare@1.19.11","@opennextjs/cloudflare@1.19.10","@opennextjs/cloudflare@1.19.9","@opennextjs/cloudflare@1.19.8","@opennextjs/cloudflare@1.19.7","@opennextjs/cloudflare@1.19.6","@opennextjs/cloudflare@1.19.5","@opennextjs/cloudflare@1.19.4","@opennextjs/cloudflare@1.19.3","@opennextjs/cloudflare@1.19.2","@opennextjs/cloudflare@1.19.1","@opennextjs/cloudflare@1.19.0","@opennextjs/cloudflare@1.18.1","@opennextjs/cloudflare@1.18.0","@opennextjs/cloudflare@1.17.3","@opennextjs/cloudflare@1.17.2","@opennextjs/cloudflare@1.17.1","@opennextjs/cloudflare@1.17.0","@opennextjs/cloudflare@1.16.6","@opennextjs/cloudflare@1.16.5","@opennextjs/cloudflare@1.16.4","@opennextjs/cloudflare@1.16.3","@opennextjs/cloudflare@1.16.2","@opennextjs/cloudflare@1.16.1","@opennextjs/cloudflare@1.16.0","@opennextjs/cloudflare@1.15.1","@opennextjs/cloudflare@1.15.0","@opennextjs/cloudflare@1.14.10","@opennextjs/cloudflare@1.14.9","@opennextjs/cloudflare@1.14.8","@opennextjs/cloudflare@1.14.7","@opennextjs/cloudflare@1.14.6","@opennextjs/cloudflare@1.14.5","@opennextjs/cloudflare@1.14.4","@opennextjs/cloudflare@1.14.3","@opennextjs/cloudflare@1.14.2","@opennextjs/cloudflare@1.14.1","@opennextjs/cloudflare@1.14.0","@opennextjs/cloudflare@1.13.1","@opennextjs/cloudflare@1.13.0","@opennextjs/cloudflare@1.12.0","@opennextjs/cloudflare@1.11.1","@opennextjs/cloudflare@1.11.0","@opennextjs/cloudflare@1.10.1","@opennextjs/cloudflare@1.10.0","@opennextjs/cloudflare@1.9.2","@opennextjs/cloudflare@1.9.1","@opennextjs/cloudflare@1.9.0","@opennextjs/cloudflare@1.8.5","@opennextjs/cloudflare@1.8.4","@opennextjs/cloudflare@1.8.3","@opennextjs/cloudflare@1.8.2","@opennextjs/cloudflare@1.8.1","@opennextjs/cloudflare@1.8.0","@opennextjs/cloudflare@1.7.1","@opennextjs/cloudflare@1.7.0","@opennextjs/cloudflare@1.6.5","@opennextjs/cloudflare@1.6.4","@opennextjs/cloudflare@1.6.3","@opennextjs/cloudflare@1.6.2","@opennextjs/cloudflare@1.6.1","@opennextjs/cloudflare@1.6.0","@opennextjs/cloudflare@1.5.3","@opennextjs/cloudflare@1.5.2","@opennextjs/cloudflare@1.5.1","@opennextjs/cloudflare@1.5.0","@opennextjs/cloudflare@1.4.0","@opennextjs/cloudflare@1.3.1","@opennextjs/cloudflare@1.3.0","@opennextjs/cloudflare@1.2.1","@opennextjs/cloudflare@1.2.0","@opennextjs/cloudflare@1.1.0","@opennextjs/cloudflare@1.0.4","@opennextjs/cloudflare@1.0.3","@opennextjs/cloudflare@1.0.2","@opennextjs/cloudflare@1.0.1","@opennextjs/cloudflare@1.0.0","@opennextjs/cloudflare@1.0.0-beta.4","@opennextjs/cloudflare@1.0.0-beta.3","@opennextjs/cloudflare@1.0.0-beta.2","@opennextjs/cloudflare@1.0.0-beta.1","@opennextjs/cloudflare@1.0.0-beta.0","@opennextjs/cloudflare@0.6.6","@opennextjs/cloudflare@0.6.5","@opennextjs/cloudflare@0.6.4","@opennextjs/cloudflare@0.6.3","@opennextjs/cloudflare@0.6.2","@opennextjs/cloudflare@0.6.1","@opennextjs/cloudflare@0.6.0","@opennextjs/cloudflare@0.5.12","@opennextjs/cloudflare@0.5.11","@opennextjs/cloudflare@0.5.10","@opennextjs/cloudflare@0.5.9","@opennextjs/cloudflare@0.5.8","@opennextjs/cloudflare@0.5.7","@opennextjs/cloudflare@0.5.6","@opennextjs/cloudflare@0.5.5","@opennextjs/cloudflare@0.5.4","@opennextjs/cloudflare@0.5.3","@opennextjs/cloudflare@0.5.2","@opennextjs/cloudflare@0.5.1","@opennextjs/cloudflare@0.5.0","@opennextjs/cloudflare@0.4.8","@opennextjs/cloudflare@0.4.7","@opennextjs/cloudflare@0.4.6","@opennextjs/cloudflare@0.4.5","@opennextjs/cloudflare@0.4.4","@opennextjs/cloudflare@0.4.3","@opennextjs/cloudflare@0.4.2","@opennextjs/cloudflare@0.4.1","@opennextjs/cloudflare@0.4.0","@opennextjs/cloudflare@0.3.10","@opennextjs/cloudflare@0.3.9","@opennextjs/cloudflare@0.3.8","@opennextjs/cloudflare@0.3.7","@opennextjs/cloudflare@0.3.6","@opennextjs/cloudflare@0.3.5","@opennextjs/cloudflare@0.3.4","@opennextjs/cloudflare@0.3.3","@opennextjs/cloudflare@0.3.2","@opennextjs/cloudflare@0.3.1","@opennextjs/cloudflare@0.3.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-100409.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"}]}