Open actionable advisories and recorded vendor fixes. This public package view has no inventory attached and cannot establish whether your deployment is affected. A vendor fix never resolves your finding; verify your installed version and the source guidance.
Open advisories
40 actionable advisories, newest first. Withdrawn advisories and news are excluded. Coverage is partial.
ModuleSearch decides whether to filter protected pages out of search results based on the current value of contao.search.indexprotected, but the authorisation data lives per row in tlsearch. Turning the setting off removes the filter without removing the rows, so protected pages that were indexed while it was on are returned to unauthenticated visitors such as title, URL and context snippet, even though the pages themselves still answer 401. Impact Disclosure of member-only page titles, URLs and indexed text to unauthenticated visitors through the site search. The pages themselves remain access-controlled, so this is not a page-access bypass. Credits This security vulnerability was found by @iRevivalx .
Recommended action: Upgrade to 5.7.12 or 5.3.50 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
ModuleRegistration::compile() reaches its follow-up registration branch on any POST to a page carrying the module. That branch checks neither FORMSUBMIT nor the captcha result computed immediately above it, and resendActivationMail() leads to OptInToken::send(), which has no rate limit at all. Impact Anyone on the internet can make a Contao installation send unlimited mail to an address of their choosing, from the site's own sender and reputation, at one outbound message per HTTP request. That is both a nuisance for the recipient and a deliverability risk for the site operator. The same request is a reliable account oracle for "this address has a pending registration on this site", which is exactly the sort of membership fact a public site is usually expected not to disclose. Honest bound. The target must have an unconfirmed registration, that is tlmember.disable = 1 together with an unconfirmed reg- opt-in token. An attacker can create that state for an arbitrary address, since…
Recommended action: Upgrade to 5.7.12 or 5.3.50 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
RequestTokenListener is the only generic REQUESTTOKEN validator in Contao and it only runs on POST. On the GET side the guard is local and declarative, and it only fires when an act parameter is present. Every back end action dispatched through a different parameter therefore has no CSRF protection at all. This is a family rather than a single bug. Impact An attacker who gets a logged in back end user to load a URL performs back end actions as that user, with no token and no confirmation. Because the exposure follows from the dispatch mechanism rather than from one callback, every present and future key= action inherits it. Honest bound. The victim must be authenticated in the back end and must load the URL, and the reachable actions are limited to the modules that user can access. We have not found a key= action that grants privileges; the ones we verified are destructive or state changing rather than escalating.
Recommended action: Upgrade to 5.7.12 or 5.3.50 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
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.validextensions, 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. Impact Any 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.validextensions (jpg, jpeg, gif, png, tif, tiff, bmp, svg, svgz, webp). The route also acts as an…
Recommended action: Upgrade to 5.7.12 or 5.3.50 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
core-bundle/config/services.yaml registers the preview access voter with the class Contao\CoreBundle\Security\Voter\DataContainer\PreviewAccessVoter, but the class shipped on disk is named PreviewVoter. Symfony resolves the class with getReflectionClass($class, false), gets null, silently skips the interface based autoconfiguration that would have tagged it as a voter, and the now untagged private service is removed when the container is compiled. The application boots without a warning, and the ownership rule in PreviewVoter::hasAccess() is never executed. tlpreviewlink has no compensating SQL filter on createdBy, so any non administrator back end user whose group holds the previewlink module reads every preview link on the installation and lifts the already signed share URLs straight out of the list. Following one grants front end preview of the target page, with showUnpublished and with no page permission check, to anyone at all. Impact A non administrator back end user reads…
Recommended action: Upgrade to 5.7.12 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Due to a caching defect in the security voter that governs table-level access to Contao's Data Container (DCA) backend, a low-privileged, non-admin backend user can obtain unauthorized read, create, update, and delete access to database tables outside their assigned module permissions. This includes tables containing sensitive personal data, such as frontend member records and newsletter subscriber e-mail addresses. Vulnerability Details In plain terms: Contao's backend is organized into modules (e.g. "News", "Members"). Every backend user is assigned to a group, and that group decides which modules, and therefore which database tables, they are allowed to work with. Before Contao lets a user touch a table, it is supposed to check: "does this user's group actually include this table?" To avoid doing that check over and over, Contao remembers the answer for the rest of the request. The problem is that it remembers the answer under the wrong label. Instead of remembering "is this user…
Recommended action: Upgrade to 5.7.12 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
The Feed Reader front-end module passes RSS feed URLs from its configuration directly to $this-feedIo-read($url) without any scheme validation or private-IP blocklist. A backend user with module-edit permissions can configure an arbitrary URL pointing to internal network services, cloud-provider metadata endpoints, or loopback addresses, causing the server to fetch those resources unconditionally. Confirmed live: the server successfully reaches the internal MySQL database container and its own loopback Apache instance. --- Details In core-bundle/src/Controller/FrontendModule/FeedReaderController.php, the getResponse() function iterates over the configured feed URLs and passes each one directly to the HTTP client with no validation: The DCA field definition for rssfeed in tlmodule.php carries no URL scheme or host validation: The HTTP client is wired as @psr18.httpclient (Symfony HttpClient) with no SSRF protection configured (NoPrivateNetworkHttpClient is not used). ---…
Recommended action: Upgrade to 5.7.9 or 5.3.48 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
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/debuglog.csv becomes victim-job/debuglog.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. Root Cause JobsController::downloadJobAttachment() checks access to the route jobUuid before loading the attachment: Jobs::getAttachment() then resolves a path built from the…
Recommended action: Upgrade to 5.7.7 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Contao's crawler tries to prevent confidential HTTP client options from being sent to external domains by creating a scoped client: full options for root page origins, cleaned options for everything else. The cleaner removes Cookie and Authorization headers, but it removes the non-Symfony option names basicauth and bearerauth instead of Symfony HttpClient's real authbasic and authbearer options. When contao.crawl.defaulthttpclientoptions contains Basic or Bearer authentication for a protected staging/production site, those credentials remain in the "clean" client used for external links or configured additional URIs. An attacker who can get an external URL crawled, for example through a link on a crawled page while the broken-link checker is enabled, can receive the crawler credentials. Technical Detail Root Cause Symfony HttpClient authentication options are authbasic and authbearer; Contao's own manual documents authbasic for crawler Basic Authentication. Because the…
Recommended action: Upgrade to 5.7.7 or 5.3.47 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact It is possible to inject code into the template output that will be executed in the browser in the front end and back end. Patches Update to Contao 4.13.57, 5.3.42 or 5.6.5. Workarounds Do not use the affected templates or patch them manually. Refsources https://contao.org/en/security-advisories/cross-site-scripting-in-templates
Recommended action: Upgrade to 5.6.5, 5.3.42 or 4.13.57 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact Backend users with precise control over the contents of template closures can execute arbitrary PHP functions that do not have required parameters. Patches Update to Contao 4.13.57, 5.3.42 or 5.6.5 Workarounds Manually patch the Contao\Template::once() method. Resources https://contao.org/en/security-advisories/remote-code-execution-in-template-closures
Recommended action: Upgrade to 5.6.5, 5.3.42 or 4.13.57 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact Under certain conditions, back end users may be able to edit fields of pages and articles without having the necessary permissions. Patches Update to Contao 5.3.38 or 5.6.1. Workarounds None. For more information If you have any questions or comments about this advisory, open an issue in contao/contao.
Recommended action: Upgrade to 5.6.1 or 5.3.38 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact If a news feed contains protected news archives, their news items are not filtered and become publicly available in the RSS feed. Patches Update to Contao 5.3.38 or 5.6.1. Workarounds Do not add protected news archives to the news feed page. For more information If you have any questions or comments about this advisory, open an issue in contao/contao.
Recommended action: Upgrade to 5.6.1 or 5.3.38 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact Protected content elements that are rendered as fragments are indexed and become publicly available in the front end search. Patches Update to Contao 4.13.56, 5.3.38 or 5.6.1. Workarounds Disable the front end search. For more information If you have any questions or comments about this advisory, open an issue in contao/contao.
Recommended action: Upgrade to 5.6.1, 5.3.38 or 4.13.56 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact The table access voter in the back end doesn't check if a user is allowed to access the corresponding module. Patches Update to Contao 5.3.38 or 5.6.1. Workarounds Do not rely solely on the voter and additionally check USERCANACCESSMODULE. For more information If you have any questions or comments about this advisory, open an issue in contao/contao.
Recommended action: Upgrade to 5.6.1 or 5.3.38 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact Users can upload SVG files with malicious code, which is then executed in the back end and/or front end. Patches Update to Contao 4.13.54, 5.3.30 or 5.5.6. Workarounds Remove svg,svgz from the allowed upload file types in the system settings and from contao.editablefiles in the config.yaml. References https://contao.org/en/security-advisories/cross-site-scripting-through-svg-uploads For more information If you have any questions or comments about this advisory, open an issue in contao/contao.
Recommended action: Upgrade to 5.5.6, 5.3.30 or 4.13.54 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact It is possible to inject insert tags in canonical URLs which will be replaced when the page is rendered. Patches Update to Contao 4.13.49, 5.3.15 or 5.4.3. Workarounds Disable canonical tags in the settings of the website root page. References https://contao.org/en/security-advisories/insert-tag-injection-via-canonical-urls For more information If you have any questions or comments about this advisory, open an issue in contao/contao.
Recommended action: Upgrade to 5.4.3, 5.3.15 or 4.13.49 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact Back end users can list files outside their file mounts or the document root in the FileSelector widget. Patches Update to Contao 4.13.49. Workarounds None. References https://contao.org/en/security-advisories/directory-traversal-in-the-fileselector-widget For more information If you have any questions or comments about this advisory, open an issue in contao/contao. Credits Thanks to Jakob Steeg from usd AG for reporting this vulnerability.
Recommended action: Upgrade to 4.13.49 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact Back end users with access to the file manager can upload malicious files and execute them on the server. Patches Update to Contao 4.13.49, 5.3.15 or 5.4.3. Workarounds Configure your web server so it does not execute PHP files and other scripts in the Contao file upload directory. References https://contao.org/en/security-advisories/remote-command-execution-through-file-uploads For more information If you have any questions or comments about this advisory, open an issue in contao/contao. Credits Thanks to Jakob Steeg from usd AG for reporting this vulnerability.
Recommended action: Upgrade to 5.4.3, 5.3.15 or 4.13.49 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact It is possible to inject insert tags via the form generator if the submitted form data is output on the page in a specific way. Patches Update to Contao 4.13.40 or 5.3.4. Workarounds Do not output the submitted form data on the website. References https://contao.org/en/security-advisories/insert-tag-injection-via-the-form-generator For more information If you have any questions or comments about this advisory, open an issue in contao/contao.
Recommended action: Upgrade to 5.3.4 or 4.13.40 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact Users can insert malicious code into file names when uploading files, which is then executed in tooltips and popups in the backend. Patches Update to Contao 4.13.40 or Contao 5.3.4. Workarounds Disable uploads for untrusted users. References https://contao.org/en/security-advisories/cross-site-scripting-in-the-file-manager For more information If you have any questions or comments about this advisory, open an issue in contao/contao. Credits Thanks to Alexander Wuttke for reporting this vulnerability.
Recommended action: Upgrade to 5.3.4 or 4.13.40 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact When a front end member changes their password, the corresponding remember-me tokens are not removed. Patches Update to Contao 4.13.40. Workarounds Disable "Allow auto login" in the login module. References https://contao.org/en/security-advisories/remember-me-tokens-are-not-cleared-after-a-password-change For more information If you have any questions or comments about this advisory, open an issue in contao/contao.
Recommended action: Upgrade to 4.13.40 or later, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact If the crawler is set to crawl protected pages, it sends the cookie header to externals URLs. Patches Update to Contao 4.13.40 or 5.3.4. Workarounds Disable crawling protected pages. References https://contao.org/en/security-advisories/session-cookie-disclosure-in-the-crawler For more information If you have any questions or comments about this advisory, open an issue in contao/contao.
Recommended action: Upgrade to 5.3.4 or 4.13.40 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
Impact Authenticated users can inject malicious code in widgets with units, which is then executed both in the element preview (back end) and on the website (front end). Patches Update to Contao 4.9.42, 4.13.28 or 5.1.10. Workarounds Disable login for all untrusted back end users. References https://contao.org/en/security-advisories/cross-site-scripting-in-widgets-with-units For more information If you have any questions or comments about this advisory, open an issue in contao/contao. Credits Thanks to Christian Pöschl and Fabian Brenner from usd AG for reporting this vulnerability.
Recommended action: Upgrade to 5.1.10, 4.13.28 or 4.9.42 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.
David Wind, penetration tester with A1 Digital, has discovered that the SQL injection vulnerability originally published under CVE-2017-16558 can still be exploited in the file manager in Contao 4.
Recommended action: Upgrade to 4.7.5 or 4.4.39 by release line, then redeploy and verify.A vendor fix does not resolve your finding until you verify it in your own systems.