CVE-2026-55825: Contao: Possible path traversal in job download URIs
An authenticated backend user who can access one job can request an attachment identifier containing ../ segments and make the job attachment download endpoint read a file from another job directory inside var/job-attachments.
The controller authorizes only the jobUuid route parameter. The later attachment lookup joins that authorized job UUID with the attacker-controlled identifier, then passes the combined path to the virtual filesystem. VirtualFilesystem::resolve() canonicalizes the whole path and only rejects paths that escape the filesystem mount, so authorized-job/../victim-job/debug_log.csv becomes victim-job/debug_log.csv.
This is a cross-job authorization bypass for known job attachment paths. It is not a practical brute-force against unknown jobs because job directories are UUID v4 values.
References
- contao.org/en/security-advisories/path-traversal-in-the-jobs-module
- github.com/FriendsOfPHP/security-advisories/blob/master/contao/contao/CVE-2026-55825.yaml
- github.com/FriendsOfPHP/security-advisories/blob/master/contao/core-bundle/CVE-2026-55825.yaml
- github.com/advisories/GHSA-grm4-wm43-9jh5
- github.com/contao/contao/security/advisories/GHSA-grm4-wm43-9jh5
- nvd.nist.gov/vuln/detail/CVE-2026-55825
Code Behaviors & Features
Detect and mitigate CVE-2026-55825 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →