An unauthenticated user can call assets/generate-transform with a private assetId, receive a valid transform URL, and fetch transformed image bytes.
The endpoint is anonymous and does not enforce per-asset authorization before returning the transform URL.
Root cause:
- Anonymous endpoint accepts user-controlled asset reference.
- It creates and returns a transform URL for that asset without checking access rights.
- If the transform output is reachable, guest users can read content derived from private assets.
Who is impacted:
Security consequence:
https://github.com/craftcms/cms/commit/7290d91639e
| Score | Percentile |
|---|---|
| 0.04% | 12.84% |
| Base score | Version | Severity | Vector |
|---|---|---|---|
| 2.7 | 4.0 | — |
|
| Type | Value |
|---|---|
| GHSA | GHSA-5pgf-h923-m958 ↗ |
| CVE | CVE-2026-33160 ↗ |
Vulnerable version ranges and first patched releases as published by GitHub.
| Ecosystem | Package | Vulnerable range | First patched | Vulnerable functions |
|---|---|---|---|---|
| composer | craftcms/cms | >= 5.0.0-RC1, <= 5.9.13 | 5.9.14 | — |
| composer | craftcms/cms | >= 4.0.0-RC1, <= 4.17.7 | 4.17.8 | — |