Skip to content
Heist/ feed
Back to feed
Medium

Craft CMS 5.0.0-RC1 before 5.10.6 SSRF via GraphQL asset mutation

Type: advisorySources: OSV

Craft CMS versions >= 5.0.0-RC1 before 5.10.6 and >= 4.0.0-RC1 before 4.18.2 contain a server-side request forgery vulnerability in the GraphQL saveAsset mutation, which fetches an attacker-supplied URL server-side. The anti-SSRF validation is incomplete: validateIp() does not cover CGNAT (100.64.0.0/10) or NAT64 (64:ff9b::/96) ranges, and the only IP check runs after the request has already been issued. An attacker holding a GraphQL token scoped only to asset-creation permissions can disclose internal HTTP content from CGNAT/NAT64 targets, force outbound GET requests to internal hosts (including RFC1918, loopback, and metadata endpoints), and enumerate internal services.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-72784
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 17:40 UTC · Revision 1

Source evidence

Craft CMS 5.0.0-RC1 before 5.10.6 SSRF via GraphQL asset mutation

core-osv · Original source

Published 11 Aug 2026, 12:17 UTC

Craft CMS versions >= 5.0.0-RC1 before 5.10.6 and >= 4.0.0-RC1 before 4.18.2 contain a server-side request forgery vulnerability in the GraphQL saveAsset mutation, which fetches an attacker-supplied URL server-side. The anti-SSRF validation is incomplete: validateIp() does not cover CGNAT (100.64.0.0/10) or NAT64 (64:ff9b::/96) ranges, and the only IP check runs after the request has already been issued. An attacker holding a GraphQL token scoped only to asset-creation permissions can disclose internal HTTP content from CGNAT/NAT64 targets, force outbound GET requests to internal hosts (including RFC1918, loopback, and metadata endpoints), and enumerate internal services.

osv:CVE-2026-72784
Complete source record
{
  "id": "9b9782bbdb8a9ad238813071c1723afedb3edff5a53916691ad80e27a0e8a571",
  "url": "https://osv.dev/vulnerability/CVE-2026-72784",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Craft CMS 5.0.0-RC1 before 5.10.6 SSRF via GraphQL asset mutation",
    "summary": "Craft CMS versions >= 5.0.0-RC1 before 5.10.6 and >= 4.0.0-RC1 before 4.18.2 contain a server-side request forgery vulnerability in the GraphQL saveAsset mutation, which fetches an attacker-supplied URL server-side. The anti-SSRF validation is incomplete: validateIp() does not cover CGNAT (100.64.0.0/10) or NAT64 (64:ff9b::/96) ranges, and the only IP check runs after the request has already been issued. An attacker holding a GraphQL token scoped only to asset-creation permissions can disclose internal HTTP content from CGNAT/NAT64 targets, force outbound GET requests to internal hosts (including RFC1918, loopback, and metadata endpoints), and enumerate internal services.",
    "evidence": "osv:CVE-2026-72784",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-72784",
      "aliases": [
        "CVE-2026-72784",
        "GHSA-2mx8-9ww7-p27x"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:L/SI:L/SA:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/craftcms/cms",
              "type": "GIT",
              "events": [
                {
                  "introduced": "04755d93f86d07cc183db47db8a0eee106892e30"
                },
                {
                  "fixed": "5c055703a13ba3a52bf013d7ba6c0223d6f62ef8"
                },
                {
                  "introduced": "daac7c1da2f701f2e9ddee1da1457ce61660b581"
                },
                {
                  "fixed": "c7ea105e1d2cf043e76e7847d84e5732071a26b4"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "5.0.0-RC1"
                      },
                      {
                        "fixed": "5.10.6"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  },
                  {
                    "range": [
                      {
                        "introduced": "4.0.0-RC1"
                      },
                      {
                        "fixed": "4.18.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  }
                ]
              }
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72784.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:37.951621151Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72784.json",
        "https://github.com/craftcms/cms/security/advisories/GHSA-2mx8-9ww7-p27x",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-72784",
        "https://www.vulncheck.com/advisories/craft-cms-rc1-before-ssrf-via-graphql-asset-mutation"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-918"
        ],
        "cna_assigner": "VulnCheck",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72784.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-72784",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 505400,
  "published_at": "2026-08-11T12:17:18.509+00:00"
}