Server-Side Request Forgery (SSRF) in Craft CMS with Asset Uploads Mutations
Published 14 Apr 2026 · Updated 5 May 2026
Affected packages
- Affected
- >=5.0.0-RC1 <5.9.15
- Fixed in
- 5.9.15
composer require craftcms/cms:^5.9.15- Affected
- >=4.0.0-RC1 <4.17.9
- Fixed in
- 4.17.9
composer require craftcms/cms:^4.17.9Details
Required Permissions
The exploitation requires a few permissions to be enabled in the used GraphQL schema:
- "Edit assets in the <VolumeName> volume"
- "Create assets in the <VolumeName> volume"
Details
The implementation fails to restrict the URL Scheme. While the application is intended to "upload assets", there is no whitelist forcing http or https. This allows attackers to use the Gopher protocol to wrap raw TCP commands.
Impact: Combined with the DWORD bypass, an attacker can hit internal services without triggering any "127.0.0.1" string-matching filters.
Example Payload: gopher://2130706433:6379/_FLUSHALL (Targets local Redis via DWORD).
Remediation Strategy
To prevent mathematical IP obfuscation, the application must normalize the hostname before validation.
Is GHSA-3m9m-24vh-39wx in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected craftcms/cms, and gives you the command that fixes it.
References
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.