
Cloud Vulnerability DB
A community-led vulnerabilities database
CVE-2025-68437 is a Server-Side Request Forgery (SSRF) vulnerability in Craft CMS affecting the GraphQL save_<VolumeName>_Asset mutation. It was published on January 3, 2026, and affects Craft CMS versions 3.5.0 through 4.16.16 and 5.0.0-RC1 through 5.8.20. The vulnerability was discovered by researcher mHe4am and disclosed via GitHub Security Advisory GHSA-x27p-wfqw-hfcc. It carries a CVSS v3.1 base score of 6.8 (Medium) and a CVSS v4.0 base score of 5.0 (Medium) (Github Advisory, Craft CMS Advisory).
The root cause is CWE-918 (Server-Side Request Forgery), arising from insufficient validation of the url parameter within the _file input of the GraphQL save_<VolumeName>_Asset mutation, implemented in src/gql/resolvers/mutations/Asset.php (Craft CMS Advisory). When a URL is supplied, the server fetches the remote content and saves it as an asset without validating whether the hostname resolves to an internal IP address or restricted endpoint. The patch (commit 013db63) addresses this by adding hostname validation that rejects IP addresses and non-alphanumeric hostnames using PHP's filter_var with FILTER_VALIDATE_DOMAIN and FILTER_VALIDATE_IP (Patch Commit). Exploitation requires the attacker to hold GraphQL schema permissions for "Edit assets" and "Create assets" in the targeted volume (Github Advisory).
Successful exploitation allows an authenticated attacker with GraphQL asset management permissions to force the Craft CMS server to make HTTP requests to arbitrary internal or external URLs, with the fetched content saved as an accessible asset (Craft CMS Advisory). In cloud-hosted environments (AWS, GCP, Azure), this can enable theft of sensitive credentials such as IAM role tokens and service account keys from instance metadata endpoints (e.g., http://169.254.169.254/), potentially leading to full infrastructure compromise. The vulnerability also enables internal network reconnaissance, bypassing firewall rules to probe services not exposed to the internet, and exfiltration of sensitive data from internal systems (Github Advisory).
A proof-of-concept exploit is publicly documented in the GitHub Security Advisory, demonstrating the attack via a GraphQL mutation targeting http://127.0.0.1:80/index.php (Craft CMS Advisory). There is no evidence of active in-the-wild exploitation at this time, and no threat actor attribution has been reported (Github Advisory). The EPSS score is approximately 0.016% (4th percentile), indicating a low near-term exploitation probability. The vulnerability is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog. Exploitation is constrained by the requirement for high privileges (GraphQL asset management permissions), limiting the attacker pool.
<VolumeName> for the mutation.http://craft.local/admin/graphiql) or send requests directly to the GraphQL API endpoint using the authenticated session or token.mutation {
save_<VolumeName>_Asset(_file: {
url: "http://169.254.169.254/latest/meta-data/iam/security-credentials/"
filename: "metadata.txt"
}) {
id
}
}10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) or cloud metadata endpoints (169.254.169.254, fd00:ec2::254); unexpected outbound connections to internal services not normally accessed by the web application.save_<VolumeName>_Asset mutations with url parameters containing IP addresses, localhost, or 127.0.0.1; Craft CMS application logs recording asset creation events with unusual source URLs.poc.txt, metadata.txt, or other unexpected filenames containing internal service responses or cloud credential data.url fields pointing to internal addresses or metadata endpoints; assets with content inconsistent with expected media types (e.g., text files containing JSON credential data) (Craft CMS Advisory).Update Craft CMS to the patched versions: 5.8.21 or later for the 5.x branch, and 4.16.17 or later for the 4.x branch (users on 3.5.0+ should upgrade to 4.16.17 or 5.8.21) (Github Advisory, Patch Commit). As a configuration-level workaround, restrict GraphQL schema permissions for asset management to only fully trusted users, and consider disabling the save_<VolumeName>_Asset mutation if it is not required for operations. Additionally, implement network-level egress controls on the application server to block outbound requests to internal IP ranges and cloud metadata endpoints (e.g., 169.254.169.254).
Source: This report was generated using AI
Free Vulnerability Assessment
Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.
Get a personalized demo
"Best User Experience I have ever seen, provides full visibility to cloud workloads."
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
"We know that if Wiz identifies something as critical, it actually is."