Vulnerability Details CVE-2026-33686
Sharp is a content management framework built for Laravel as a package. Versions prior to 9.20.0 have a path traversal vulnerability in the FileUtil class. The application fails to sanitize file extensions properly, allowing path separators to be passed into the storage layer. In `src/Utils/FileUtil.php`, the `FileUtil::explodeExtension()` function extracts a file's extension by splitting the filename at the last dot. This issue has been patched in version 9.20.0 by properly sanitizing the extension using `pathinfo(PATHINFO_EXTENSION)` instead of `strrpos()`, alongside applying strict regex replacements to both the base name and the extension.
Exploit prediction scoring system (EPSS) score
EPSS Score 0.0
EPSS Ranking 7.5%
CVSS Severity
CVSS v3 Score 8.8
Products affected by CVE-2026-33686
-
cpe:2.3:a:code16:sharp:4.0.0
-
cpe:2.3:a:code16:sharp:4.0.1
-
cpe:2.3:a:code16:sharp:4.0.10
-
cpe:2.3:a:code16:sharp:4.0.11
-
cpe:2.3:a:code16:sharp:4.0.12
-
cpe:2.3:a:code16:sharp:4.0.13
-
cpe:2.3:a:code16:sharp:4.0.14
-
cpe:2.3:a:code16:sharp:4.0.15
-
cpe:2.3:a:code16:sharp:4.0.16
-
cpe:2.3:a:code16:sharp:4.0.17
-
cpe:2.3:a:code16:sharp:4.0.18
-
cpe:2.3:a:code16:sharp:4.0.19
-
cpe:2.3:a:code16:sharp:4.0.2
-
cpe:2.3:a:code16:sharp:4.0.20
-
cpe:2.3:a:code16:sharp:4.0.21
-
cpe:2.3:a:code16:sharp:4.0.3
-
cpe:2.3:a:code16:sharp:4.0.4
-
cpe:2.3:a:code16:sharp:4.0.5
-
cpe:2.3:a:code16:sharp:4.0.6
-
cpe:2.3:a:code16:sharp:4.0.7
-
cpe:2.3:a:code16:sharp:4.0.8
-
cpe:2.3:a:code16:sharp:4.0.9
-
cpe:2.3:a:code16:sharp:4.1.0
-
cpe:2.3:a:code16:sharp:4.1.1
-
cpe:2.3:a:code16:sharp:4.1.10
-
cpe:2.3:a:code16:sharp:4.1.11
-
cpe:2.3:a:code16:sharp:4.1.12
-
cpe:2.3:a:code16:sharp:4.1.13
-
cpe:2.3:a:code16:sharp:4.1.14
-
cpe:2.3:a:code16:sharp:4.1.15
-
cpe:2.3:a:code16:sharp:4.1.16
-
cpe:2.3:a:code16:sharp:4.1.17
-
cpe:2.3:a:code16:sharp:4.1.18
-
cpe:2.3:a:code16:sharp:4.1.19
-
cpe:2.3:a:code16:sharp:4.1.2
-
cpe:2.3:a:code16:sharp:4.1.20
-
cpe:2.3:a:code16:sharp:4.1.21
-
cpe:2.3:a:code16:sharp:4.1.22
-
cpe:2.3:a:code16:sharp:4.1.23
-
cpe:2.3:a:code16:sharp:4.1.24
-
cpe:2.3:a:code16:sharp:4.1.25
-
cpe:2.3:a:code16:sharp:4.1.3
-
cpe:2.3:a:code16:sharp:4.1.4
-
cpe:2.3:a:code16:sharp:4.1.5
-
cpe:2.3:a:code16:sharp:4.1.6
-
cpe:2.3:a:code16:sharp:4.1.7
-
cpe:2.3:a:code16:sharp:4.1.8
-
cpe:2.3:a:code16:sharp:4.1.9
-
cpe:2.3:a:code16:sharp:4.2.0
-
cpe:2.3:a:code16:sharp:4.2.1
-
cpe:2.3:a:code16:sharp:4.2.2
-
cpe:2.3:a:code16:sharp:4.2.3
-
cpe:2.3:a:code16:sharp:4.2.4
-
cpe:2.3:a:code16:sharp:4.2.5
-
cpe:2.3:a:code16:sharp:4.2.6
-
cpe:2.3:a:code16:sharp:5.0.0
-
cpe:2.3:a:code16:sharp:5.0.1
-
cpe:2.3:a:code16:sharp:5.1.0
-
cpe:2.3:a:code16:sharp:5.1.1
-
cpe:2.3:a:code16:sharp:5.1.2
-
cpe:2.3:a:code16:sharp:5.2.0
-
cpe:2.3:a:code16:sharp:5.3.0
-
cpe:2.3:a:code16:sharp:5.3.1
-
cpe:2.3:a:code16:sharp:5.3.2
-
cpe:2.3:a:code16:sharp:5.3.3
-
cpe:2.3:a:code16:sharp:5.3.4
-
cpe:2.3:a:code16:sharp:5.3.5
-
cpe:2.3:a:code16:sharp:5.4.0
-
cpe:2.3:a:code16:sharp:5.4.1
-
cpe:2.3:a:code16:sharp:5.4.2
-
cpe:2.3:a:code16:sharp:5.4.3
-
cpe:2.3:a:code16:sharp:5.4.4
-
cpe:2.3:a:code16:sharp:5.4.5
-
cpe:2.3:a:code16:sharp:5.4.6
-
cpe:2.3:a:code16:sharp:6.0.0
-
cpe:2.3:a:code16:sharp:6.0.1
-
cpe:2.3:a:code16:sharp:6.1.0
-
cpe:2.3:a:code16:sharp:6.1.1
-
cpe:2.3:a:code16:sharp:6.1.2
-
cpe:2.3:a:code16:sharp:6.1.3
-
cpe:2.3:a:code16:sharp:6.1.4
-
cpe:2.3:a:code16:sharp:6.1.5
-
cpe:2.3:a:code16:sharp:6.2.0
-
cpe:2.3:a:code16:sharp:6.3.0
-
cpe:2.3:a:code16:sharp:6.3.1
-
cpe:2.3:a:code16:sharp:6.3.2
-
cpe:2.3:a:code16:sharp:6.3.3
-
cpe:2.3:a:code16:sharp:6.4.0
-
cpe:2.3:a:code16:sharp:6.4.1
-
cpe:2.3:a:code16:sharp:6.5.0
-
cpe:2.3:a:code16:sharp:6.5.1
-
cpe:2.3:a:code16:sharp:6.5.2
-
cpe:2.3:a:code16:sharp:6.5.3
-
cpe:2.3:a:code16:sharp:6.5.4
-
cpe:2.3:a:code16:sharp:6.5.5
-
cpe:2.3:a:code16:sharp:7.0.0
-
cpe:2.3:a:code16:sharp:7.0.1
-
cpe:2.3:a:code16:sharp:7.0.2
-
cpe:2.3:a:code16:sharp:7.1.0
-
cpe:2.3:a:code16:sharp:7.10.0
-
cpe:2.3:a:code16:sharp:7.11.0
-
cpe:2.3:a:code16:sharp:7.12.0
-
cpe:2.3:a:code16:sharp:7.13.0
-
cpe:2.3:a:code16:sharp:7.14.0
-
cpe:2.3:a:code16:sharp:7.15.0
-
cpe:2.3:a:code16:sharp:7.16.0
-
cpe:2.3:a:code16:sharp:7.17.0
-
cpe:2.3:a:code16:sharp:7.17.1
-
cpe:2.3:a:code16:sharp:7.17.2
-
cpe:2.3:a:code16:sharp:7.17.3
-
cpe:2.3:a:code16:sharp:7.18.0
-
cpe:2.3:a:code16:sharp:7.19.0
-
cpe:2.3:a:code16:sharp:7.19.1
-
cpe:2.3:a:code16:sharp:7.2.0
-
cpe:2.3:a:code16:sharp:7.2.1
-
cpe:2.3:a:code16:sharp:7.2.2
-
cpe:2.3:a:code16:sharp:7.2.3
-
cpe:2.3:a:code16:sharp:7.2.4
-
cpe:2.3:a:code16:sharp:7.2.5
-
cpe:2.3:a:code16:sharp:7.20.0
-
cpe:2.3:a:code16:sharp:7.21.0
-
cpe:2.3:a:code16:sharp:7.22.0
-
cpe:2.3:a:code16:sharp:7.23.0
-
cpe:2.3:a:code16:sharp:7.23.1
-
cpe:2.3:a:code16:sharp:7.23.2
-
cpe:2.3:a:code16:sharp:7.24.0
-
cpe:2.3:a:code16:sharp:7.24.1
-
cpe:2.3:a:code16:sharp:7.25.0
-
cpe:2.3:a:code16:sharp:7.25.1
-
cpe:2.3:a:code16:sharp:7.25.2
-
cpe:2.3:a:code16:sharp:7.26.0
-
cpe:2.3:a:code16:sharp:7.26.1
-
cpe:2.3:a:code16:sharp:7.26.2
-
cpe:2.3:a:code16:sharp:7.27.0
-
cpe:2.3:a:code16:sharp:7.27.1
-
cpe:2.3:a:code16:sharp:7.28.0
-
cpe:2.3:a:code16:sharp:7.29.0
-
cpe:2.3:a:code16:sharp:7.29.1
-
cpe:2.3:a:code16:sharp:7.29.2
-
cpe:2.3:a:code16:sharp:7.29.3
-
cpe:2.3:a:code16:sharp:7.29.4
-
cpe:2.3:a:code16:sharp:7.29.5
-
cpe:2.3:a:code16:sharp:7.29.6
-
cpe:2.3:a:code16:sharp:7.29.7
-
cpe:2.3:a:code16:sharp:7.3.0
-
cpe:2.3:a:code16:sharp:7.30.0
-
cpe:2.3:a:code16:sharp:7.4.0
-
cpe:2.3:a:code16:sharp:7.5.0
-
cpe:2.3:a:code16:sharp:7.5.1
-
cpe:2.3:a:code16:sharp:7.5.2
-
cpe:2.3:a:code16:sharp:7.6.0
-
cpe:2.3:a:code16:sharp:7.7.0
-
cpe:2.3:a:code16:sharp:7.7.1
-
cpe:2.3:a:code16:sharp:7.8.0
-
cpe:2.3:a:code16:sharp:7.9.0
-
cpe:2.3:a:code16:sharp:8.0.0
-
cpe:2.3:a:code16:sharp:8.0.1
-
cpe:2.3:a:code16:sharp:8.0.2
-
cpe:2.3:a:code16:sharp:8.0.3
-
cpe:2.3:a:code16:sharp:8.0.4
-
cpe:2.3:a:code16:sharp:8.0.5
-
cpe:2.3:a:code16:sharp:8.0.6
-
cpe:2.3:a:code16:sharp:8.0.7
-
cpe:2.3:a:code16:sharp:8.1.0
-
cpe:2.3:a:code16:sharp:8.1.1
-
cpe:2.3:a:code16:sharp:8.1.2
-
cpe:2.3:a:code16:sharp:8.2.0
-
cpe:2.3:a:code16:sharp:8.2.1
-
cpe:2.3:a:code16:sharp:8.3.0
-
cpe:2.3:a:code16:sharp:8.3.1
-
cpe:2.3:a:code16:sharp:8.3.2
-
cpe:2.3:a:code16:sharp:8.3.3
-
cpe:2.3:a:code16:sharp:8.3.4
-
cpe:2.3:a:code16:sharp:8.3.5
-
cpe:2.3:a:code16:sharp:8.3.6
-
cpe:2.3:a:code16:sharp:8.3.7
-
cpe:2.3:a:code16:sharp:8.4.0
-
cpe:2.3:a:code16:sharp:8.4.1
-
cpe:2.3:a:code16:sharp:8.4.2
-
cpe:2.3:a:code16:sharp:8.4.3
-
cpe:2.3:a:code16:sharp:8.4.4
-
cpe:2.3:a:code16:sharp:8.5.0
-
cpe:2.3:a:code16:sharp:8.6.0
-
cpe:2.3:a:code16:sharp:8.6.1
-
cpe:2.3:a:code16:sharp:9.0.0
-
cpe:2.3:a:code16:sharp:9.0.1
-
cpe:2.3:a:code16:sharp:9.0.2
-
cpe:2.3:a:code16:sharp:9.0.3
-
cpe:2.3:a:code16:sharp:9.0.4
-
cpe:2.3:a:code16:sharp:9.0.5
-
cpe:2.3:a:code16:sharp:9.0.6
-
cpe:2.3:a:code16:sharp:9.0.7
-
cpe:2.3:a:code16:sharp:9.0.8
-
cpe:2.3:a:code16:sharp:9.0.9
-
cpe:2.3:a:code16:sharp:9.1.0
-
cpe:2.3:a:code16:sharp:9.1.1
-
cpe:2.3:a:code16:sharp:9.1.2
-
cpe:2.3:a:code16:sharp:9.10.0
-
cpe:2.3:a:code16:sharp:9.10.1
-
cpe:2.3:a:code16:sharp:9.10.2
-
cpe:2.3:a:code16:sharp:9.11.0
-
cpe:2.3:a:code16:sharp:9.11.1
-
cpe:2.3:a:code16:sharp:9.12.0
-
cpe:2.3:a:code16:sharp:9.13.0
-
cpe:2.3:a:code16:sharp:9.13.1
-
cpe:2.3:a:code16:sharp:9.14.0
-
cpe:2.3:a:code16:sharp:9.14.1
-
cpe:2.3:a:code16:sharp:9.14.2
-
cpe:2.3:a:code16:sharp:9.14.3
-
cpe:2.3:a:code16:sharp:9.14.4
-
cpe:2.3:a:code16:sharp:9.15.0
-
cpe:2.3:a:code16:sharp:9.15.1
-
cpe:2.3:a:code16:sharp:9.16.0
-
cpe:2.3:a:code16:sharp:9.16.1
-
cpe:2.3:a:code16:sharp:9.17.0
-
cpe:2.3:a:code16:sharp:9.17.1
-
cpe:2.3:a:code16:sharp:9.18.0
-
cpe:2.3:a:code16:sharp:9.19.0
-
cpe:2.3:a:code16:sharp:9.19.1
-
cpe:2.3:a:code16:sharp:9.19.2
-
cpe:2.3:a:code16:sharp:9.19.3
-
cpe:2.3:a:code16:sharp:9.2.0
-
cpe:2.3:a:code16:sharp:9.2.1
-
cpe:2.3:a:code16:sharp:9.2.2
-
cpe:2.3:a:code16:sharp:9.2.3
-
cpe:2.3:a:code16:sharp:9.2.4
-
cpe:2.3:a:code16:sharp:9.2.5
-
cpe:2.3:a:code16:sharp:9.2.6
-
cpe:2.3:a:code16:sharp:9.2.7
-
cpe:2.3:a:code16:sharp:9.2.8
-
cpe:2.3:a:code16:sharp:9.3.0
-
cpe:2.3:a:code16:sharp:9.3.1
-
cpe:2.3:a:code16:sharp:9.3.2
-
cpe:2.3:a:code16:sharp:9.3.3
-
cpe:2.3:a:code16:sharp:9.3.4
-
cpe:2.3:a:code16:sharp:9.3.5
-
cpe:2.3:a:code16:sharp:9.3.6
-
cpe:2.3:a:code16:sharp:9.3.7
-
cpe:2.3:a:code16:sharp:9.4.0
-
cpe:2.3:a:code16:sharp:9.4.1
-
cpe:2.3:a:code16:sharp:9.5.0
-
cpe:2.3:a:code16:sharp:9.5.1
-
cpe:2.3:a:code16:sharp:9.5.2
-
cpe:2.3:a:code16:sharp:9.6.0
-
cpe:2.3:a:code16:sharp:9.6.1
-
cpe:2.3:a:code16:sharp:9.6.2
-
cpe:2.3:a:code16:sharp:9.6.3
-
cpe:2.3:a:code16:sharp:9.6.4
-
cpe:2.3:a:code16:sharp:9.6.5
-
cpe:2.3:a:code16:sharp:9.6.6
-
cpe:2.3:a:code16:sharp:9.7.0
-
cpe:2.3:a:code16:sharp:9.7.1
-
cpe:2.3:a:code16:sharp:9.7.2
-
cpe:2.3:a:code16:sharp:9.7.3
-
cpe:2.3:a:code16:sharp:9.8.0
-
cpe:2.3:a:code16:sharp:9.8.1
-
cpe:2.3:a:code16:sharp:9.9.0