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

CVE-2026-81895: Concrete CMS Document Library SQLI Vulnerability

CVE-2026-81895 is a stored SQL injection vulnerability in Concrete CMS that allows authenticated users to execute arbitrary SQL through Document Library blocks. This article covers technical details, affected versions, and mitigation strategies.

Published:

CVE-2026-81895 Overview

CVE-2026-81895 is a stored, time-based blind SQL injection vulnerability in Concrete CMS versions prior to 9.5.3. The flaw exists in the Document Library block, which accepts file-set identifiers submitted through the fsID[] parameter without validating them as integers. When the block is configured with setMode set to any, each stored identifier is concatenated directly into the file-set filter query rather than cast or bound as a parameter. An authenticated user with permission to add or edit the block can persist SQL syntax in the block configuration (btDocumentLibrary.setIds), and that expression executes every time a page containing the block is rendered.

Critical Impact

Authenticated attackers with editing privileges can persist arbitrary SQL that executes on every page render, exposing full database confidentiality, integrity, and availability [CWE-89].

Affected Products

  • Concrete CMS versions prior to 9.5.3
  • Document Library block component (btDocumentLibrary)
  • Installations exposing block editing rights to authenticated users

Discovery Timeline

  • 2026-09-15 - CVE-2026-81895 published to the National Vulnerability Database (NVD)
  • 2026-09-16 - Last updated in NVD database
  • Vulnerability reported to the Concrete CMS security team by Habib Allah

Technical Details for CVE-2026-81895

Vulnerability Analysis

The Document Library block persists file-set identifiers supplied via fsID[] into the btDocumentLibrary.setIds column without input validation. Concrete CMS treats the stored value as trusted content during page rendering. When setMode equals any, the block builder concatenates each stored identifier directly into the SQL filter clause used to select documents. No integer cast or parameterized binding is applied at either write time or read time.

An authenticated editor can therefore submit a crafted fsID[] value containing SQL syntax. That expression is stored once and re-executed on every subsequent render of the published page. The resulting injection is stored and blind, and time-based payloads such as SLEEP() allow inference of database contents through response latency.

Root Cause

The root cause is missing input validation combined with unsafe query construction [CWE-89]. The block handler neither enforces an integer type on fsID[] entries nor uses parameter binding when composing the filter query. Persisting untrusted input into btDocumentLibrary.setIds converts a single authenticated write into repeated server-side query execution.

Attack Vector

Exploitation requires an authenticated account with permission to add or edit a Document Library block, and requires user interaction to publish or view the affected page. The attacker configures the block with setMode set to any and injects SQL payloads through the fsID[] submission. Once the page is rendered, the injected SQL runs under the database credentials used by Concrete CMS.

See the ConcreteCMS Version 9.5.3 Release Notes for vendor details.

Detection Methods for CVE-2026-81895

Indicators of Compromise

  • Non-integer or SQL-syntax content in the btDocumentLibrary.setIds column of the Concrete CMS database
  • Unusually long request-processing times when rendering pages that contain Document Library blocks
  • Audit-log entries showing edits to Document Library blocks by low-privilege editor accounts
  • Database query logs containing SLEEP, BENCHMARK, or UNION tokens originating from document-library filter queries

Detection Strategies

  • Query the btDocumentLibrary table and flag rows where setIds contains characters outside the set [0-9,]
  • Enable MySQL or MariaDB slow query logging and correlate long-running queries with page render events
  • Compare block-edit events against the roles permitted to modify Document Library blocks and alert on unexpected editors

Monitoring Recommendations

  • Forward web-server, application, and database logs to a centralized analytics platform for correlation
  • Baseline normal render latency for pages containing Document Library blocks and alert on statistical deviations
  • Monitor authentication events for editor accounts and flag privilege changes granting block-edit rights

How to Mitigate CVE-2026-81895

Immediate Actions Required

  • Upgrade Concrete CMS to version 9.5.3 or later without delay
  • Audit the btDocumentLibrary.setIds column for any non-integer content and remediate affected rows
  • Review recent edits to Document Library blocks and identify accounts that made suspicious changes
  • Rotate database credentials if injection activity is confirmed

Patch Information

Concrete CMS addressed the issue in version 9.5.3. The fix validates fsID[] submissions as integers and applies safe query construction when building the file-set filter. Administrators should follow the upgrade instructions in the ConcreteCMS Version 9.5.3 Release Notes.

Workarounds

  • Restrict permissions on the Document Library block so only trusted administrators can add or edit it
  • Avoid using the block with setMode configured to any until the upgrade is complete
  • Apply web-application firewall rules that reject non-numeric values in fsID[] submissions
  • Enforce least-privilege database accounts so injected queries cannot alter schema or read unrelated tables

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.