Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-72784

CVE-2026-72784: Craft CMS GraphQL SSRF Vulnerability

CVE-2026-72784 is a server-side request forgery flaw in Craft CMS GraphQL mutations that allows attackers to access internal networks and disclose sensitive data. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-72784 Overview

CVE-2026-72784 is a server-side request forgery (SSRF) vulnerability [CWE-918] affecting Craft CMS versions >= 5.0.0-RC1 before 5.10.6 and >= 4.0.0-RC1 before 4.18.2. The flaw resides in the GraphQL save<Volume>Asset mutation, which fetches attacker-supplied URLs from the server. Craft CMS's anti-SSRF validation omits Carrier-Grade NAT (CGNAT) 100.64.0.0/10 and NAT64 64:ff9b::/96 ranges, and the IP check runs after the outbound request has already been issued. An attacker with a GraphQL token limited to asset-creation permissions can enumerate internal services and disclose HTTP content from internal hosts.

Critical Impact

A low-privileged GraphQL token can force the Craft CMS server to issue GET requests to RFC1918 addresses, loopback interfaces, cloud metadata endpoints, and CGNAT/NAT64 ranges, exposing internal HTTP content.

Affected Products

  • Craft CMS versions >= 5.0.0-RC1 before 5.10.6
  • Craft CMS versions >= 4.0.0-RC1 before 4.18.2
  • Deployments exposing the GraphQL endpoint with asset-creation scoped tokens

Discovery Timeline

  • 2026-08-11 - CVE-2026-72784 published to NVD
  • 2026-08-11 - Last updated in NVD database

Technical Details for CVE-2026-72784

Vulnerability Analysis

Craft CMS exposes a GraphQL mutation for creating volume assets that accepts a URL parameter. The server fetches the supplied URL to store its contents as an asset. The validateIp() helper is intended to block requests to private address space, but its allowlist and blocklist are incomplete. It fails to cover CGNAT (100.64.0.0/10) and NAT64 (64:ff9b::/96) address ranges.

The more consequential design flaw is ordering. The HTTP request is issued before the resolved IP is validated. Even if the destination is later flagged, the outbound connection, request headers, and response body have already been produced. This makes the check ineffective for preventing content disclosure or blind SSRF probing.

An attacker only needs a GraphQL token scoped to asset creation. This is a common permission for integrations and headless deployments, lowering the barrier to abuse significantly.

Root Cause

The root cause is twofold: incomplete IP range validation in validateIp() and a time-of-check-to-time-of-use ordering defect where validation occurs after the outbound HTTP request completes. Together these produce a classic SSRF pattern classified under [CWE-918].

Attack Vector

Exploitation is performed over the network by submitting a crafted GraphQL mutation containing a URL pointing at an internal resource. Targets include loopback services on 127.0.0.1, RFC1918 internal hosts, cloud instance metadata services such as 169.254.169.254, and CGNAT or NAT64 endpoints that bypass validation entirely. The attacker receives fetched HTTP content back through the asset creation response, enabling internal service enumeration and content disclosure. See the GitHub Security Advisory and the VulnCheck Advisory on SSRF for advisory details.

Detection Methods for CVE-2026-72784

Indicators of Compromise

  • GraphQL requests invoking save<Volume>Asset mutations that include external or unusual URL parameters in application logs.
  • Outbound HTTP requests from the Craft CMS server to RFC1918, loopback, link-local (169.254.0.0/16), CGNAT (100.64.0.0/10), or NAT64 (64:ff9b::/96) addresses.
  • Unexpected asset records created by tokens scoped only to asset-creation permissions.

Detection Strategies

  • Inspect web server and application logs for GraphQL mutation calls that specify URLs resolving to internal address space.
  • Correlate GraphQL API requests with outbound network flows from the Craft CMS host to identify SSRF probing patterns.
  • Alert on any egress from the CMS server to cloud metadata endpoints such as 169.254.169.254 or metadata.google.internal.

Monitoring Recommendations

  • Enable verbose GraphQL request logging to capture mutation names, token identifiers, and URL parameters.
  • Deploy network egress filtering and log denied outbound connections from application servers to internal ranges.
  • Review issued GraphQL tokens and monitor for anomalous asset-creation activity from previously idle tokens.

How to Mitigate CVE-2026-72784

Immediate Actions Required

  • Upgrade Craft CMS to version 5.10.6 or later on the 5.x branch, or 4.18.2 or later on the 4.x branch.
  • Audit all existing GraphQL tokens and revoke any that are not strictly required for production integrations.
  • Restrict outbound network access from the Craft CMS server to only the destinations required for normal operation.

Patch Information

Craft CMS resolved the issue in versions 5.10.6 and 4.18.2. Refer to the GitHub Security Advisory GHSA-2mx8-9ww7-p27x for release notes and upgrade guidance.

Workarounds

  • Block the GraphQL endpoint at the edge for untrusted networks until patching is complete.
  • Enforce egress firewall rules that deny traffic from the CMS server to RFC1918, loopback, link-local, CGNAT, and NAT64 ranges.
  • Require IMDSv2 on AWS instances to prevent unauthenticated metadata retrieval via SSRF.
bash
# Example egress restriction using iptables to block internal targets
iptables -A OUTPUT -m owner --uid-owner www-data -d 127.0.0.0/8 -j REJECT
iptables -A OUTPUT -m owner --uid-owner www-data -d 10.0.0.0/8 -j REJECT
iptables -A OUTPUT -m owner --uid-owner www-data -d 172.16.0.0/12 -j REJECT
iptables -A OUTPUT -m owner --uid-owner www-data -d 192.168.0.0/16 -j REJECT
iptables -A OUTPUT -m owner --uid-owner www-data -d 100.64.0.0/10 -j REJECT
iptables -A OUTPUT -m owner --uid-owner www-data -d 169.254.0.0/16 -j REJECT

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.