SSRF vulnerability in opennextjs-cloudflare via /cdn-cgi/ path normalization bypass
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- None
- Impact type
- —
- Confidentiality · integrity · availability
- Low · Low · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub.
Summary
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| opennextjs | @opennextjs/cloudflare | before 1.17.1 | 1.17.1 | Patch available | CNA |
| — | @opennextjs/cloudflare (npm) | before 1.17.1 | 1.17.1 | Patch available | GHSA-c7mq-gh6q-6q7c |
- @opennextjs/cloudflare Vendoropennextjs Affected before 1.17.1 Fixed in 1.17.1 Patch available CNA
- @opennextjs/cloudflare (npm) Vendor— Affected before 1.17.1 Fixed in 1.17.1 Patch available GHSA-c7mq-gh6q-6q7c
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:opennextjs:opennext_for_cloudflare:*:*:*:*:*:node.js:*:* | before 1.17.1 | Vulnerable | opennextjs |
- cpe:2.3:a:opennextjs:opennext_for_cloudflare:*:*:*:*:*:node.js:*:* Versions before 1.17.1 Vulnerable ·opennextjs
Remediation
- Fix · CNA @opennextjs/cloudflare (opennextjs) Fixed in 1.17.1
- Fix · GHSA-c7mq-gh6q-6q7c @opennextjs/cloudflare (npm) Fixed in 1.17.1 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-3125
- 2026-10-03 Alias added: GHSA-c7mq-gh6q-6q7c
References
Advisory 3
Other 4
- https://www.npmjs.com/package/@opennextjs/cloudflare/v/1.17.1
- https://github.com/opennextjs/opennextjs-cloudflare/security/advisories/GHSA-c7mq-gh6q-6q7c
- https://github.com/opennextjs/opennextjs-cloudflare/commit/f5bd138fd3c77e02f2aa4b9c76d55681e59e98b4
- https://github.com/opennextjs/opennextjs-cloudflare
More opennextjs Opennext For Cloudflare vulnerabilities
- TI-2025-05497 SSRF vulnerability in opennextjs-cloudflare via /_next/image endpoint CVSS 4.0HIGH 7.8
Sources
- CVE-2026-3125 · CVE Program
- CVE-2026-3125 · NVD
- FIRST EPSS
- GHSA-c7mq-gh6q-6q7c · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences