{"schema":"threatline.record/2","record":{"id":"CVE-2026-107844","aliases":["GHSA-mrvp-7wmx-5m4h"],"summary":"Contao: Path traversal in the images controller","details":"`ImagesController` joins the user controlled `{path}` onto the configured image target directory with `Path::join()`, which canonicalises `..` segments, and never calls `Path::isBasePath()` to confirm the result stayed inside that directory. An unauthenticated GET with percent encoded dot segments therefore escapes the directory and the file is returned by `BinaryFileResponse`. Reads are bounded to the extensions in `contao.image.valid_extensions`, and paths below the upload directory fail for an unrelated reason, so this is reported as a missing boundary check rather than as a general arbitrary file read. Both Apache with the shipped `public/.htaccess` and nginx with the documented configuration are affected.\n\n### Impact\n\nAny unauthenticated visitor can read files that are deliberately kept outside the document root, anywhere under the project directory, as long as the name ends in one of `contao.image.valid_extensions` (`jpg`, `jpeg`, `gif`, `png`, `tif`, `tiff`, `bmp`, `svg`, `svgz`, `webp`). The route also acts as an existence oracle for arbitrary paths, and on a debug enabled instance the 404 message discloses the absolute filesystem path.\n\n**Honesty caveat, stated because it lowers the severity.** The reporter could not use this to read protected member folders: every path below the upload directory returns 500 for the reason given under Details, so the practically reachable set is image typed files outside `files/`.","categories":["Libraries & packages"],"product":"contao/core-bundle","vendor":"contao","ecosystem":"composer","affected_ranges":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-mrvp-7wmx-5m4h","source_modified_at":"2026-10-09T20:53:57Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"composer","name":"contao/core-bundle"},"range":">= 4.1.0, < 5.3.50"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-mrvp-7wmx-5m4h","source_modified_at":"2026-10-09T20:53:57Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"composer","name":"contao/core-bundle"},"range":">= 5.4.0-RC1, < 5.7.12"},{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2026-107844","source_modified_at":"2026-10-14T02:10:01.161Z","fetched_at":"2026-10-23T18:45:31.882637Z","product":"contao","vendor":"contao","versions":[{"version":">= 5.0.0, < 5.3.50","status":"affected"},{"version":">= 5.4.0-RC1, < 5.7.12","status":"affected"}],"defaultStatus":null},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-mrvp-7wmx-5m4h","source_modified_at":"2026-10-09T21:00:10.323754314Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"contao/core-bundle","ecosystem":"Packagist","purl":"pkg:composer/contao/core-bundle"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"4.1.0"},{"fixed":"5.3.50"}]}],"versions":["4.1.0","4.1.1","4.1.2","4.1.3","4.10.0","4.10.0-RC1","4.10.0-RC2","4.10.0-RC3","4.10.0-RC4","4.10.1","4.10.2","4.10.3","4.10.4","4.10.5","4.10.6","4.10.7","4.11.0","4.11.0-RC1","4.11.0-RC2","4.11.1","4.11.2","4.11.3","4.11.4","4.11.5","4.11.6","4.11.7","4.11.8","4.11.9","4.12.0","4.12.0-RC1","4.12.0-RC2","4.12.0-RC3","4.12.1","4.12.2","4.12.3","4.12.4","4.12.5","4.12.6","4.12.7","4.13.0","4.13.0-RC1","4.13.0-RC2","4.13.0-RC3","4.13.1","4.13.10","4.13.11","4.13.12","4.13.13","4.13.14","4.13.15"]},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-mrvp-7wmx-5m4h","source_modified_at":"2026-10-09T21:00:10.323754314Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"contao/core-bundle","ecosystem":"Packagist","purl":"pkg:composer/contao/core-bundle"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"5.4.0-RC1"},{"fixed":"5.7.12"}]}],"versions":["5.4.0","5.4.0-RC1","5.4.0-RC2","5.4.0-RC3","5.4.0-RC4","5.4.1","5.4.10","5.4.11","5.4.12","5.4.13","5.4.14","5.4.2","5.4.3","5.4.4","5.4.5","5.4.6","5.4.7","5.4.8","5.4.9","5.5.0","5.5.0-RC1","5.5.0-RC2","5.5.0-RC3","5.5.0-RC4","5.5.1","5.5.10","5.5.11","5.5.12","5.5.13","5.5.14","5.5.15","5.5.16","5.5.2","5.5.3","5.5.4","5.5.5","5.5.6","5.5.7","5.5.8","5.5.9","5.6.0","5.6.0-RC1","5.6.0-RC2","5.6.0-RC3","5.6.1","5.6.10","5.6.11","5.6.2","5.6.3","5.6.4"]}],"fixed_versions":[{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-mrvp-7wmx-5m4h","source_modified_at":"2026-10-09T20:53:57Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"composer","name":"contao/core-bundle"},"version":"5.3.50"},{"source":"GitHub Advisory Database","source_url":"https://github.com/advisories/GHSA-mrvp-7wmx-5m4h","source_modified_at":"2026-10-09T20:53:57Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"ecosystem":"composer","name":"contao/core-bundle"},"version":"5.7.12"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-mrvp-7wmx-5m4h","source_modified_at":"2026-10-09T21:00:10.323754314Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"contao/core-bundle","ecosystem":"Packagist","purl":"pkg:composer/contao/core-bundle"},"version":"5.3.50"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-mrvp-7wmx-5m4h","source_modified_at":"2026-10-09T21:00:10.323754314Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"contao/core-bundle","ecosystem":"Packagist","purl":"pkg:composer/contao/core-bundle"},"version":"5.7.12"}],"cvss":5.3,"severity":"Medium","kev":{"listed":false},"epss":{"probability":0.00312,"percentile":0.22896,"score_date":"2026-10-23"},"published_at":"2026-10-09T19:24:02.625Z","modified_at":"2026-10-14T02:10:01.161Z","provenance":[{"source":"GitHub Advisory Database","url":"https://github.com/advisories/GHSA-mrvp-7wmx-5m4h","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-09T20:53:57Z"},{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2026-107844","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-10-14T02:10:01.161Z"},{"source":"OSV","url":"https://osv.dev/vulnerability/GHSA-mrvp-7wmx-5m4h","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2026-10-09T21:00:10.323754314Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-107844","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["GitHub Advisory Database","CVE List","OSV","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/contao/contao/security/advisories/GHSA-mrvp-7wmx-5m4h","tags":["x_refsource_CONFIRM"]},{"source":"CVE List","url":"https://github.com/contao/contao/commit/867c055122fdf12220f973f862082037b695b9bd","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/contao/contao/releases/tag/5.3.50","tags":["x_refsource_MISC"]},{"source":"CVE List","url":"https://github.com/contao/contao/releases/tag/5.7.12","tags":["x_refsource_MISC"]},{"url":"https://github.com/advisories/GHSA-mrvp-7wmx-5m4h","source":"GitHub Advisory Database"}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","ssvc":{"exploitation":"none","automatable":"yes","technical_impact":"partial","assessed_at":"2026-10-14T02:09:50.721997Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"ecosystem","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-14T02:10:01.161Z","content_hash":"9464c059bc30039171417e6ffb53f3f0abdd50cc46d81e765683f60378ce9bab"}}
