CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-107842

CVE-2026-107842: Information Disclosure via Stale Indexing in Contao Search Module

Amit Schendel
Amit Schendel
Senior Security Researcher

Oct 10, 2026·4 min read·6 visits

Executive Summary (TL;DR)

Contao's ModuleSearch failed to filter out stale protected page index entries from database table tl_search when contao.search.index_protected configuration was set to false, resulting in sensitive content disclosure in search results.

An information disclosure vulnerability in Contao CMS allows unauthenticated site visitors to view protected page titles, URLs, and text excerpts through search queries when protected page indexing is disabled after previously being enabled.

Vulnerability Overview

Contao is an open-source Content Management System (CMS) built on the Symfony PHP framework. The framework provides indexed full-text search capabilities through ModuleSearch and the underlying database table tl_search. When pages are indexed, metadata including protection status and permitted user groups are recorded alongside textual excerpts.

CVE-2026-107842 represents an information disclosure flaw (CWE-200) located within the ModuleSearch component. The flaw occurs when system administrators toggle the global parameter contao.search.index_protected from true to false. When disabled, the search execution engine stops filtering out previously indexed records that belong to protected pages.

While direct HTTP access control to protected target URLs remains enforced by Contao's access control layer, unauthenticated remote attackers can query the public search endpoint to expose protected page titles, canonical URLs, and indexed content snippets.

Root Cause Analysis

Contao's full-text search engine indexes web pages into the tl_search table. Each row in tl_search stores indexed body text alongside metadata columns, specifically protected (a boolean flag indicating if the page requires authentication) and groups (a serialized array of allowed member group IDs).

When contao.search.index_protected is set to true, Contao allows protected pages to be indexed. During search execution, ModuleSearch::compile() queries tl_search and executes an inline filtering callback. This callback evaluates whether the current user possesses authorization for each returned row via ContaoCorePermissions::MEMBER_IN_GROUPS checks.

Prior to the patch, the filtering callback was wrapped in an if condition checking whether contao.search.index_protected was active. If an administrator set contao.search.index_protected to false, no else block existed. Consequently, existing database records in tl_search marked with protected = true were returned directly to unauthenticated visitors without filtering.

Code & Patch Analysis

The vulnerability was resolved in commit 572686a113bca60f92cf2d0496cf3a74d0b6b457 on August 25, 2026. The patch modifies core-bundle/contao/modules/ModuleSearch.php by introducing an explicit fallback filter when contao.search.index_protected evaluates to false.

// Prior to patch:
if (System::getContainer()->getParameter('contao.search.index_protected')) {
    $objResult->applyFilter(static function ($v) {
        return empty($v['protected']) || System::getContainer()->get('security.helper')->isGranted(ContaoCorePermissions::MEMBER_IN_GROUPS, StringUtil::deserialize($v['groups'] ?? null, true));
    });
}
 
// Patched logic in core-bundle/contao/modules/ModuleSearch.php:
if (System::getContainer()->getParameter('contao.search.index_protected')) {
    $objResult->applyFilter(static function ($v) {
        return empty($v['protected']) || System::getContainer()->get('security.helper')->isGranted(ContaoCorePermissions::MEMBER_IN_GROUPS, StringUtil::deserialize($v['groups'] ?? null, true));
    });
}
else
{
    $objResult->applyFilter(static function ($v) {
        return empty($v['protected']);
    });
}

The added else block enforces strict filtering on search results. When contao.search.index_protected is disabled, the system filters out any result where $v['protected'] is non-empty, preventing historical protected index records from leaking to unauthenticated clients.

Exploitation Methodology

Exploitation does not require authentication, specialized tools, or complex payload construction. An attacker submits standard search queries to the target Contao website's search form endpoint (typically /search or pages containing ModuleSearch).

If the website previously indexed protected pages while contao.search.index_protected was enabled, those entries persist in tl_search. Upon querying relevant terms, the search results page renders title links, full target URLs, and contextual excerpts of restricted pages.

Impact Assessment

The vulnerability is assigned a CVSS v3.1 base score of 5.3 (Medium) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N. Direct exposure is limited to search metadata and indexed body text snippets rather than full underlying database records or administrative session access.

Impact severity depends on the nature of information contained within protected pages. If member-only areas contain sensitive technical documentation, draft publications, internal contact lists, or personal identifying information (PII), unauthenticated extraction via targeted search terms represents a partial confidentiality breach.

No integrity loss or system availability disruption occurs as a result of this flaw. Furthermore, direct requests to the exposed target page URLs remain blocked by Contao's page-level security controls.

Remediation & Patch Guidance

Software updates have been issued in Contao maintenance releases 5.3.50 and 5.7.12. Administrators operating affected releases should update their dependencies using Composer.

composer update contao/contao --with-dependencies

For environments where immediate framework upgrades cannot be applied, administrators who disabled contao.search.index_protected must navigate to the Contao Maintenance backend panel and initiate a complete purge and rebuild of the search index. Rebuilding the search index purges existing entries in tl_search, eliminating stale protected index entries.

Official Patches

ContaoFix commit for Contao ModuleSearch protected index filtering
ContaoContao Advisory GHSA-x2rp-9qf7-2fmq

Fix Analysis (1)

Technical Appendix

CVSS Score
5.3/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
EPSS Probability
0.26%
Top 83% most exploited

Affected Systems

Contao CMS 4.0.0 before 5.3.50Contao CMS 5.4.0-RC1 before 5.7.12

Affected Versions Detail

Product
Affected Versions
Fixed Version
contao/contao
Contao
>= 4.0.0, < 5.3.505.3.50
contao/contao
Contao
>= 5.4.0-RC1, < 5.7.125.7.12
AttributeDetail
CWE IDCWE-200
Attack VectorNetwork (AV:N)
CVSS v3.1 Score5.3 (Medium)
EPSS Score0.00262 (16.62th percentile)
ImpactPartial Information Disclosure
Exploit StatusUnproven / No Public Exploits
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1005Data from Local System
Collection
T1552Unsecured Credentials
Credential Access
CWE-200
Exposure of Sensitive Information to an Unauthorized Actor

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

Vulnerability Timeline

Patch committed to contao/contao
2026-08-25
CVE-2026-107842 and GHSA-x2rp-9qf7-2fmq published
2026-10-09

References & Sources

  • [1]GitHub Security Advisory GHSA-x2rp-9qf7-2fmq
  • [2]Contao Patch Commit 572686a113bca60f92cf2d0496cf3a74d0b6b457
  • [3]Contao Release Tag 5.3.50
  • [4]Contao Release Tag 5.7.12
  • [5]NVD Detail CVE-2026-107842
  • [6]CVE Record CVE-2026-107842

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•19 minutes ago•CVE-2026-107843
5.3

CVE-2026-107843: Unthrottled Activation Email Resend and Account Enumeration in Contao CMS

Contao CMS versions 4.1.0 through 5.3.49 and 5.4.0-RC1 through 5.7.11 fail to validate form submission tokens and enforce rate limiting when processing activation email resend requests via HTTP POST, enabling resource exhaustion and account state enumeration.

Amit Schendel
Amit Schendel
2 views•4 min read
•about 2 hours ago•GHSA-G38J-7V97-X298
6.5

GHSA-G38J-7V97-X298: Missing Authorization Check in Vikunja CalDAV Task Relation Creation

In Vikunja prior to version 2.6.0, relation creation via the CalDAV endpoint fails to invoke the TaskRelation.CanCreate authorization check. This missing access control allows an authenticated user to establish unauthorized relationships and perform write operations against any task, provided its unique identifier (UID) is known.

Alon Barad
Alon Barad
8 views•5 min read
•about 3 hours ago•GHSA-3HC7-R24J-RPWC
6.8

GHSA-3hc7-r24j-rpwc: Cross-Project Task Disclosure via Subtask Expansion in Vikunja

A cross-project information disclosure vulnerability in Vikunja allows authenticated users with read access to one project to view private task details from unauthorized projects via subtask expansion parameters.

Alon Barad
Alon Barad
8 views•5 min read
•about 4 hours ago•GHSA-8WVG-R2J4-3737
4.3

GHSA-8wvg-r2j4-3737: Email Address Exposure in Vikunja Task Assignees API

An information disclosure vulnerability in Vikunja allows authenticated users with read access to a task to expose private email addresses of assigned users through the API task assignees endpoint due to an unmasked database query.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 5 hours ago•GHSA-W2CH-4XGR-22WW
5.3

GHSA-W2CH-4XGR-22WW: Missing Authorization in Vikunja Task Relation Deletion

An authorization bypass vulnerability in Vikunja versions prior to v2.6.0 permits authenticated users to delete relationships between tasks across project boundaries without requiring read or write authorization for the target related task.

Alon Barad
Alon Barad
7 views•5 min read
•about 6 hours ago•CVE-2026-108258
6.9

CVE-2026-108258: Path Traversal in Shiny for Python Bookmark Restoration

A path traversal vulnerability in Shiny for Python (posit-dev/py-shiny) versions 1.4.0 through 1.6.3 allows unauthenticated remote attackers to read arbitrary files and traverse directories via crafted _state_id_ query parameters.

Alon Barad
Alon Barad
7 views•4 min read