Skip to main content
VulnerabilityPublished Updated

CVE-2026-56394: `assets/icon`, allowing local `.svg` file read · Craft CMS Has Authenticated Path Traversal

Affects craftcms/cmsSource GCVE Database

0

Mentioned vulnerabilities

CVSS 2.0 Low : upgrade to 4.17.7 when convenient.

Data as of 7 Aug 2026, 05:56 UTC

CVSS 4.0 base score
2.0Low
How severe the flaw is on the 0–10 CVSS scale.
Patch
Available – fixed in 4.17.7, 5.9.13
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

What to do

Upgrade craftcms/cms to 4.17.7; craftcms/cms to 5.9.13.

Affected software

ProductAffectedFixed in
Packagistcraftcms/cmsAffected
  • >=4.0.0-RC1 <4.17.7
Fixed in
  • 4.17.7
Packagistcraftcms/cmsAffected
  • >=5.0.0-RC1 <5.9.13
Fixed in
  • 5.9.13

Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.

AI-suggested

If you cannot patch yet, restrict access to the affected endpoint to trusted users only and monitor for suspicious activity related to file access. Avoid exposing sensitive SVG files on the server.

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

References

Community reviews

Loading reviews…