GitHub Advisoryadvisory · Packagist
GHSA-c43v-4cr8-6mvp Craft CMS has authenticated path traversal in `assets/icon`, allowing local `.svg` file read
LOW
Official page ↗
- Aliases
- CVE-2026-56394
- Ecosystem
- Packagist
- Packages
- craftcms/cms
- Severity
- Low
- CVSS vector
- CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
- Weaknesses
- CWE-22
- Reviewed
- 2026-07-09
Affected packages
• Packagist craftcms/cms: >= 4.0.0-RC1, < 4.17.7 → fixed in 4.17.7
• Packagist craftcms/cms: >= 5.0.0-RC1, < 5.9.13 → fixed in 5.9.13
Description
Summary
An authenticated path traversal in `assets/icon` allows local SVG file read by passing traversal sequences in the `extension` parameter. The issue is caused by file existence checks happening before extension validation.
Details
The endpoint:
• `src/controllers/AssetsController.php:1115-1123`
• `actionIcon(string $extension)` calls `Assets::iconPath($extension)` and returns `sendFile($path, ...)`.
In `Assets::iconPath()`:
• Path is built from user-controlled `extension`:
• `src/helpers/Assets.php:906-909`
• If `file_exists($path)` is true, path is returned immediately:
• `src/helpers/Assets.php:910-912`
Validation exists in `Assets::iconSvg()`:
• `preg_match('/^\w+$/', $extension)`
• `src/helpers/Assets.php:927-931`
However, that validation is only reached if `iconPath()` does not find a file.
So traversal payloads that resolve to existing `.svg` files bypass validation and are served by `sendFile()`.
Impact
• Authenticated users can read local .svg files accessible to the application process.
References
• https://github.com/craftcms/cms/commit/30f5f1a8d6edf0f3a00be72c42c78d9dc7d72d5c
Related
Alias · CVE (1)
- CVE-2026-56394 Craft CMS from 4.0.0-RC1 contains an authenticated path traversal vulnerability in the assets/icon endpoint where the extension parameter… vulnerability
Weakness · CWE (1)
- CWE-22 Improper Limitation of a Pathname to a Restricted Directory weakness
References
- https://github.com/craftcms/cms/security/advisories/GHSA-c43v-4cr8-6mvp web
- https://nvd.nist.gov/vuln/detail/CVE-2026-56394 advisory
- https://github.com/craftcms/cms/commit/30f5f1a8d6edf0f3a00be72c42c78d9dc7d72d5c web
- https://github.com/craftcms/cms package
- https://www.vulncheck.com/advisories/craft-cms-authenticated-path-traversal-in-assets-icon-extension-parameter web