Skip to content

GHSA-x2rp-9qf7-2fmq CVE-2026-107842

Contao: Protected page content is disclosed to anonymous visitors after contao.search.index_protected is disabled

Medium Packagist
Severity
5.3 / 10
Medium · CVSS 3.1
Exploit chance (EPSS)
0.26%
Chance of exploitation in the next 30 days. Higher than 18.10% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-200 Exposure of Sensitive Information to an Unauthorized Actor
Fix
5.3.50
Upgrade contao/core-bundle to this version or later

Description

ModuleSearch decides whether to filter protected pages out of search results based on the current value of contao.search.index_protected, but the authorisation data lives per row in tl_search. 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 .

Affected versions

Packagist

PackageVulnerableFixed in
contao/core-bundle
>= 4.0.0, < 5.3.50
5.3.50
contao/core-bundle
>= 5.4.0-RC1, < 5.7.12
5.7.12

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

contao/core-bundle Packagist → 5.3.50

composer
composer require contao/core-bundle:^5.3.50

Severity breakdown

CVSS 3.1 5.3

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Weakness

CWE-200: Exposure of Sensitive Information to an Unauthorized Actor

The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information.

How to prevent it
  • Architecture and Design: Compartmentalize the system to have "safe" areas where trust boundaries can be unambiguously drawn. Do not allow sensitive data to go outside of the trust boundary and always be careful when interfacing with a compartment outside of the safe area. Ensure that appropriate compartmentalization is built into the system design, and the compartmentalization allows for and reinforces privilege separation functionality. Architects and designers should rely on the principle of least privilege to decide the appropriate time to use privileges and the time to drop privileges.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-9ff2-p842-45wq
Contao: Cross-site request forgery in custom backend actions
Low Also affects contao/core-bundle
GHSA-q6wp-fr43-gm9v
Contao: Improper access control in the preview links module
Medium Also affects contao/core-bundle
GHSA-5974-gfqc-wrcm
Contao: Improper access control in the table access voter
Medium Also affects contao/core-bundle
GHSA-mrvp-7wmx-5m4h
Contao: Path traversal in the images controller
Medium Also affects contao/core-bundle
GHSA-mfxh-vp55-7gc6
Contao: The registration module re-sends activation mails
Medium Also affects contao/core-bundle
GHSA-grm4-wm43-9jh5
Contao: Possible path traversal in job download URIs
Low Also affects contao/core-bundle
GHSA-87mg-5grr-rhwh
Contao: Server-Side Request Forgery (SSRF) via Unvalidated RSS Feed URL in Feed Reader Module
Low Also affects contao/core-bundle
GHSA-3mr9-p497-58f6
Contao crawler leaks auth credentials to external hosts
Low Also affects contao/core-bundle
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor