Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend request to images route with ../ in path
-
ExploitPath::join escapes target directory unchecked
-
ExecutionBinaryFileResponse returns out-of-directory file
-
ImpactDisclose project file contents or path existence
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires reaching the Contao ImagesController route (the image-serving endpoint) on an affected version (5.0.0 through pre-5.3.50 / pre-5.7.12) and supplying a {path} value with parent-directory segments; no authentication, privileges, or user interaction are needed (PR:N/UI:N). Key LIMITING factors sharply narrow real-world impact: the returned file MUST carry an extension listed in the contao.image.valid_extensions configuration, and per the advisory files below the upload directory were NOT demonstrated to be readable, so this is extension-restricted disclosure of project-directory files plus path-existence probing - not arbitrary file read. Absolute filesystem path disclosure additionally depends on debug responses being enabled. |
| Impact | This is a limited-impact information disclosure vulnerability (CWE-22 path traversal) that the signals consistently rate as moderate rather than critical. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N, base 5.3) agrees with the description: network-reachable, low-complexity, unauthenticated (PR:N), with only low confidentiality impact and no integrity or availability impact. The impact ceiling is genuinely constrained - the flaw only exposes files whose extension is in contao.image.valid_extensions and, per the advisory, files below the upload directory were NOT shown to be readable, so this is not a general arbitrary-file-read. No EPSS score, CISA KEV listing, POC, or SSVC decision data was provided in the input; therefore this is 'no public exploit identified at time of analysis' and there is no evidence of active exploitation. Net assessment: a real but low-to-moderate priority issue - easy to trigger and unauthenticated, but with limited data exfiltration value (extension-restricted reads plus path-existence/absolute-path disclosure via debug responses). Patch on a normal cadence rather than treating as an emergency. |
| Exploit ScenarioDerived | An unauthenticated attacker sends an HTTP request to the Contao images route with a {path} parameter containing encoded parent-directory segments (e.g. ../) so the joined path escapes the configured image target directory. Because the pre-patch code used Path::join() without Path::isBasePath() validation, the canonical path outside the target is served via BinaryFileResponse, letting the attacker read project files that carry an allowed image extension or probe whether arbitrary paths exist. No public POC was provided, but the low attack complexity (AC:L) and lack of required privileges or user interaction make exploitation straightforward. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Unauthenticated path traversal in the Contao CMS ImagesController lets remote attackers read files from the project directory by supplying encoded parent-directory segments in the image route's {path} parameter. Affected versions are Contao 5.0.0 through 5.3.49 and 5.7.11 (fixed in 5.3.50 and 5.7.12), with impact constrained by the fact that a returned file must carry an extension listed in contao.image.valid_extensions and files below the upload directory were not demonstrated to be readable, making this extension-restricted disclosure plus path-existence probing rather than arbitrary file read. The CVSS 3.1 score is 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N), no public exploit code or confirmed active exploitation has been identified at time of analysis, and the independent assessment rates the issue as moderate rather than critical.
RemediationAI
Upgrade to a fixed release - vendor-released patches are Contao 5.3.50 and Contao 5.7.12, which add a Path::isBasePath() check in ImagesController that rejects any resolved path escaping the configured image target directory (see https://github.com/contao/contao/releases/tag/5.3.50 and https://github.com/contao/contao/releases/tag/5.7.12, advisory https://github.com/contao/contao/security/advisories/GHSA-mrvp-7wmx-5m4h, fix commit 867c055122fdf12220f973f862082037b695b9bd). Where immediate upgrade is not possible, reduce exposure by tightening the contao.image.valid_extensions configuration so that only extensions necessary for legitimate imaging (for example raster formats) can ever be returned, accepting the trade-off that unusual or legacy formats used by the site will stop being served; additionally restrict access to the image-serving route at the reverse proxy or WAF layer to trusted clients, noting this can break public image delivery for anonymous visitors. Because debug responses can disclose absolute filesystem paths even when file contents are not returned, ensure debug mode is disabled in production (APP_DEBUG=false / Symfony prod environment), accepting that diagnostic detail for unrelated incidents will be reduced. Note that no vendor-released workaround short of the patched controller fully restores the missing canonical-path containment check, so patching remains the primary action.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in composer, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Contao is an open-source PHP content management system built on the Symfony framework, and the affected component is the core-bundle ImagesController that serves generated/resized images. The controller takes the user-controlled {path} routing parameter and concatenates it onto the configured image target directory using the Path helper's join() method, but in vulnerable versions it never calls Path::isBasePath() to verify that the canonicalized result still resides inside that base directory - the classic CWE-22 improper limitation of a pathname to a restricted directory. Because encoded parent-directory (../) segments survive into the joined path, the resulting path escapes the target directory and is handed to the image factory and ultimately returned via a Symfony BinaryFileResponse. The code-level evidence is unambiguous: the fix commit 867c055122fdf12220f973f862082037b695b9bd refactors the controller so that the joined path is validated with Path::isBasePath($this->targetDir, $path) and a NotFoundHttpException is thrown on failure, and the accompanying test testReturns404IfImageIsOutsidePath asserts that '../dummy.jpg' never reaches the image factory. The public CPE string cpe:2.3:a:contao:contao:*:*:*:*:*:*:*:* reflects a wildcard version match across the vulnerable Contao release lines. Two constraints materially bound the root cause's exploitability: the served file must match an extension permitted by the contao.image.valid_extensions setting, and the advisory notes that files beneath the upload directory were not shown to be reachable.
Know when Contao gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Unauthenticated network request with no interaction (AV:N/AC:L/PR:N/UI:N); only C:L because reads are restricted to allowed image extensions and the upload directory, with no integrity or availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Contao is an Open Source CMS. From version 5.0.0 until 5.3.50 and 5.7.12, ImagesController joins the user-controlled {path} parameter to the configured image target directory with Path::join() but does not use Path::isBasePath() to verify that the canonical path remains inside that directory. An unauthenticated request containing encoded parent-directory segments can therefore return files under the project directory through BinaryFileResponse when their names use an extension allowed by contao.image.valid_extensions. The route can also reveal whether arbitrary paths exist, and debug responses can disclose absolute filesystem paths, but paths below the upload directory were not shown to be readable. This issue is fixed in versions 5.3.50 and 5.7.12.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Contao Managed Edition v1.5.0 was discovered to contain a remote command execution (RCE) vulnerability via the component
Multiple cross-site request forgery (CSRF) vulnerabilities in main.php in Contao (formerly TYPOlight) 2.11.0 and earlier
Contao is a powerful open source CMS that allows you to create professional websites and scalable web applications. Rate
Contao 4.x allows SQL Injection. Rated critical severity (CVSS 9.8), this vulnerability is remotely exploitable, no auth
Contao 4.7 allows Use of a Key Past its Expiration Date. Rated critical severity (CVSS 9.8), this vulnerability is remot
Contao before 3.5.39 and 4.x before 4.7.3 has a Weak Password Recovery Mechanism for a Forgotten Password. Rated critica
Contao before 5.5.6 allows XSS via an SVG document. Rated medium severity (CVSS 5.4), this vulnerability is remotely exp
Contao is an open source content management system. Rated medium severity (CVSS 5.4), this vulnerability is remotely exp
Stored cross-site scripting in the Contao CMS comments bundle lets an unauthenticated visitor submit a comment whose ema
Information disclosure in Contao CMS allows unauthenticated front-end visitors to read the titles, URLs, and indexed tex
Unauthenticated email-flooding and user-enumeration in Contao CMS: a POST to any page containing the registration module
Contao before 3.5.28 and 4.x before 4.4.1 allows remote attackers to include and execute arbitrary local PHP files via a
EUVD-2026-95974
GHSA-mrvp-7wmx-5m4h
NVD
CVE.org
EPSS
VulDB
Exploit-DB