Skip to main content
Vulnerability Database/CVE-2026-18120

CVE-2026-18120: Concrete CMS Information Disclosure Flaw

CVE-2026-18120 is an information disclosure vulnerability in Concrete CMS that allows unauthenticated attackers to access restricted Express entity data. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-18120 Overview

CVE-2026-18120 is a missing authorization vulnerability [CWE-862] in Concrete CMS versions before 9.5.3. A legacy Express entry search endpoint returned entry result JSON without invoking the canViewExpressEntries() permission check that the normal dashboard and CSV Export flow enforce.

An unauthenticated visitor who knows or discovers an Express entity identifier can enumerate that entity's entry search results. The response discloses attribute values intended for privileged users. For Express entities that do not support entry-specific permissions, EntryList::ignorePermissions() additionally disables per-entry permission filtering, widening the exposure.

Critical Impact

Unauthenticated attackers can read attribute data from Express entities that should be restricted, resulting in confidentiality loss without any user interaction.

Affected Products

  • Concrete CMS versions prior to 9.5.3
  • Concrete CMS 9.x branch legacy Express entry search endpoint
  • Express entities where supportsEntrySpecificPermissions() returns false are especially exposed

Discovery Timeline

  • Vulnerability reported by Daniel Powell to the Concrete CMS security team
  • 2026-09-16 - CVE-2026-18120 published to NVD
  • 2026-09-16 - Last updated in NVD database

Technical Details for CVE-2026-18120

Vulnerability Analysis

The flaw resides in a legacy Express entry search endpoint in Concrete CMS. Standard dashboard workflows and the CSV Export path gate access with canViewExpressEntries(), ensuring only authorized users retrieve entry data. The legacy endpoint bypasses this gate and returns entry result JSON to any caller.

Because the endpoint accepts an Express entity identifier as input, an attacker only needs to know or guess that identifier to receive attribute values from the corresponding entity. The response reveals data that the application otherwise restricts to privileged operators.

A secondary weakness compounds the issue. When an Express entity's supportsEntrySpecificPermissions() method returns false, the code path invokes EntryList::ignorePermissions(). This disables per-entry filtering entirely, so all matching entries return to the unauthenticated caller.

Root Cause

The root cause is missing authorization on a legacy code path. The developers added canViewExpressEntries() to newer flows but did not retrofit the check onto the legacy search endpoint. The design assumption that entity identifiers are secret does not hold in practice, and the ignorePermissions() shortcut removes the remaining defense-in-depth layer.

Attack Vector

Exploitation occurs over the network with no authentication or user interaction. The attacker discovers or enumerates an Express entity identifier, then issues an HTTP request to the legacy Express entry search endpoint referencing that identifier. The server returns JSON containing attribute values from matching entries.

Refer to the ConcreteCMS Version 9.5.3 Release Notes for the vendor's technical description of the fix.

Detection Methods for CVE-2026-18120

Indicators of Compromise

  • Unauthenticated HTTP requests to the legacy Express entry search endpoint returning HTTP 200 with JSON payloads containing Express attribute data
  • Sequential or high-volume requests iterating Express entity identifiers from a single client
  • Requests from anonymous sessions accessing Express search parameters that normally originate from the authenticated dashboard

Detection Strategies

  • Inspect web server and application logs for calls to the legacy Express entry search route without an authenticated session cookie
  • Alert on JSON responses containing Express entry attribute fields returned to unauthenticated user agents
  • Deploy WAF rules that require an authenticated dashboard session for any Express entry search request

Monitoring Recommendations

  • Baseline normal Express search traffic and flag deviations in request volume, source IPs, or entity identifier ranges
  • Forward Concrete CMS access logs to a centralized analytics platform for correlation across sessions and endpoints
  • Track anomalous data egress volumes tied to the Express search endpoint

How to Mitigate CVE-2026-18120

Immediate Actions Required

  • Upgrade all Concrete CMS installations to version 9.5.3 or later
  • Audit web server logs for prior unauthenticated access to the legacy Express entry search endpoint
  • Rotate or review Express entity identifiers considered sensitive and assess data exposure

Patch Information

Concrete CMS 9.5.3 adds the canViewExpressEntries() permission check to the legacy Express entry search endpoint, aligning it with the dashboard and CSV Export flow. Administrators should apply the update following the ConcreteCMS Version 9.5.3 Release Notes.

Workarounds

  • Restrict access to the legacy Express entry search endpoint at the reverse proxy or WAF until the patch is applied
  • Require authentication on all /ccm/system/search/express_entries style routes via web server rules
  • Remove or disable Express entities that expose sensitive attribute data if patching is not immediately feasible

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.