Description
Cacti's sanitize_sql_column() (lib/functions.php) sanitizes user-supplied ORDER BY column names using the regex `preg_replace('/[^a-zA-Z0-9_().]/', '', $column)`. Because this allowlist retains letters, digits, underscore, parentheses, and dot (intended to support expressions like COUNT(id) and table.column), a payload such as `SLEEP(5)` passes through completely unmodified. The sanitized value is concatenated directly into raw SQL ORDER BY clauses (which cannot be parameterized) driven by a `sort_column` GET parameter in at least user_log.php, utilities.php, user_domains.php, and user_group_admin.php, allowing any authenticated Cacti user, regardless of privilege level, to perform time-based blind SQL injection against the Cacti database.
Published: 2026-08-05
Score: 8.8 High
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Users can supply a value for the sort_column GET parameter that bypasses the server side filter and ends up being concatenated into a raw ORDER BY clause. The sanitizer permits letters, digits, underscore, parentheses and dots, which allows payloads such as SLEEP(5) to survive unchanged. Because ORDER BY clauses cannot be parameterized, an attacker can trigger prolonged responses that indicate whether a condition is true, enabling time‑based blind SQL injection. This flaw can be used to extract data from the Cacti database and could potentially support further attacks if the database contains sensitive configuration or user credentials.

Affected Systems

The vulnerability exists in the Cacti application, specifically in the function sanitize_sql_column defined in lib/functions.php. Pages that process the sort_column parameter, such as user_log.php, utilities.php, user_domains.php, and user_group_admin.php, are affected. All versions of Cacti that use the current implementation of this function are vulnerable; version or patch information was not provided in the source data.

Risk and Exploitability

With a CVSS score of 8.8, the flaw is considered high severity. No EPSS score is available, and the vulnerability is not listed in the CISA KEV catalog, indicating that despite its severity it may not yet be actively exploited. The most likely attack vector is an authenticated user—any user with access to Cacti—submitting a crafted sort_column value to a vulnerable endpoint. The exploitation does not require special network access; it can occur over the web interface used by legitimate users.

Generated by OpenCVE AI on August 5, 2026 at 15:10 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Cacti to the latest release that removes the insecure regex in sanitize_sql_column, ensuring that only safe column names are permitted.
  • If an immediate upgrade is not an option, deploy a web application firewall rule that blocks requests to the affected pages when the sort_column parameter contains likely SQL time‑delay functions such as SLEEP, BENCHMARK, or other SQL function calls.
  • Restrict or remove the ORDER BY functionality from the affected PHP files for users who do not require it, and enforce stricter server‑side validation to allow only known column names or fully qualified identifiers.

Generated by OpenCVE AI on August 5, 2026 at 15:10 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 05 Aug 2026 16:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Wed, 05 Aug 2026 15:15:00 +0000

Type Values Removed Values Added
First Time appeared Cacti
Cacti cacti
Vendors & Products Cacti
Cacti cacti

Wed, 05 Aug 2026 13:15:00 +0000

Type Values Removed Values Added
Description Cacti's sanitize_sql_column() (lib/functions.php) sanitizes user-supplied ORDER BY column names using the regex `preg_replace('/[^a-zA-Z0-9_().]/', '', $column)`. Because this allowlist retains letters, digits, underscore, parentheses, and dot (intended to support expressions like COUNT(id) and table.column), a payload such as `SLEEP(5)` passes through completely unmodified. The sanitized value is concatenated directly into raw SQL ORDER BY clauses (which cannot be parameterized) driven by a `sort_column` GET parameter in at least user_log.php, utilities.php, user_domains.php, and user_group_admin.php, allowing any authenticated Cacti user, regardless of privilege level, to perform time-based blind SQL injection against the Cacti database.
Title Cacti sanitize_sql_column() Regex Allowlist Permits SQL Time-Delay Functions Leading to Blind SQL Injection
Weaknesses CWE-89
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}


cve-icon MITRE

Status: PUBLISHED

Assigner: TuranSec

Published:

Updated: 2026-08-05T15:48:50.888Z

Reserved: 2026-08-05T12:23:34.968Z

Link: CVE-2026-71287

cve-icon Vulnrichment

Updated: 2026-08-05T15:48:46.844Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-05T15:15:05Z

Weaknesses
  • CWE-89

    Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')