All vulnerabilities
CVE-2026-107850GHSA-q6wp-fr43-gm9v

contao/core-bundle: Contao: Improper access control in the preview links module

contao contao/core-bundlecomposerLibraries & packages
CVSS
4.3Medium
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.19%Chance of exploitation activity in the next 30 days, higher than 8% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in5.7.12Fixed versionGitHub
Published9 Oct 2026Updated 13 Oct 2026CVE List

What fixes it

  • 5.7.12contao/core-bundle, composerGitHubcomposer require "contao/core-bundle:^5.7.12"
  • 5.7.12contao/core-bundle, PackagistOSVcomposer require "contao/core-bundle:^5.7.12"

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

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. tl_preview_link has no compensating SQL filter on createdBy, so any non administrator back end user whose group holds the preview_link 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 every preview link on the installation, including links created by administrators, and lifts the already signed share URLs out of the list. Following one grants front end preview of the target page with showUnpublished and with no page permission check at all, so unpublished or embargoed content becomes readable by a user who has no rights on those pages, and by anyone that user forwards the URL to.

Honesty caveat, stated because it bounds the severity. UpdateAction on a record owned by someone else was denied in our lab by DcaPermissionVoter, so we do not claim that a foreign preview link can be edited or deleted.

Text from GitHub Advisory Database

Affected versions 14

  • contao/core-bundle, composer>= 5.7.1, < 5.7.12GitHub
  • contaoaffected: >= 5.7.1, < 5.7.12CVE List
  • contao/core-bundle, Packagistfrom 5.7.1, fixed in 5.7.12OSV
  • contao/core-bundle, Packagist5.7.1OSV
  • contao/core-bundle, Packagist5.7.10OSV
  • contao/core-bundle, Packagist5.7.11OSV
  • contao/core-bundle, Packagist5.7.2OSV
  • contao/core-bundle, Packagist5.7.3OSV
  • contao/core-bundle, Packagist5.7.4OSV
  • contao/core-bundle, Packagist5.7.5OSV
  • contao/core-bundle, Packagist5.7.6OSV
  • contao/core-bundle, Packagist5.7.7OSV
  • contao/core-bundle, Packagist5.7.8OSV
  • contao/core-bundle, Packagist5.7.9OSV

References 4