Description
Cacti's sanitize_sql_column (lib/functions.php) sanitizes user-supplied ORDER BY column names using the regex . Because this allowlist retains letters, digits, underscore, parentheses, and dot (intended to support expressions like COUNT(id) and table.column), a payload such as passes through completely unmodified.
Published: 2026-08-05
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Sanitize_sql_column() in Cacti's lib/functions.php attempts to filter user-supplied ORDER BY column names using a regular expression that permits letters, digits, underscores, parentheses, and dots; this syntax is intended to support expressions such as COUNT(id) and table.column, but the permissive allowlist also accommodates function calls like SLEEP(5) or BENCHMARK(20). When a GET parameter named sort_column is supplied, the unsanitized value is concatenated directly into an ORDER BY clause that cannot be parameterized, giving an attacker a potential time-based blind SQL injection vector that can be used to infer data from the database.

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. An EPSS score of < 1% indicates a very low probability of exploitation, and the vulnerability is not listed in the CISA KEV catalog, suggesting 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 10, 2026 at 20:57 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 10, 2026 at 20:57 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 14 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
References
Metrics threat_severity

None

threat_severity

Important


Mon, 10 Aug 2026 12:00: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. Cacti's sanitize_sql_column (lib/functions.php) sanitizes user-supplied ORDER BY column names using the regex . Because this allowlist retains letters, digits, underscore, parentheses, and dot (intended to support expressions like COUNT(id) and table.column), a payload such as passes through completely unmodified.
Title Cacti - sanitize_sql_column() Regex Allowlist Permits SQL Time-Delay Functions Leading to Blind SQL Injection Cacti sanitize_sql_column() Regex Allowlist Permits SQL Time-Delay Functions Leading to Blind SQL Injection

Mon, 10 Aug 2026 11:45:00 +0000

Type Values Removed Values Added
Title Cacti sanitize_sql_column() Regex Allowlist Permits SQL Time-Delay Functions Leading to Blind SQL Injection Cacti - sanitize_sql_column() Regex Allowlist Permits SQL Time-Delay Functions Leading to Blind SQL Injection

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-10T11:47:16.912Z

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

Link: CVE-2026-71287

cve-icon Vulnrichment

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

cve-icon NVD

Status : Received

Published: 2026-08-05T13:24:53.453

Modified: 2026-08-10T12:17:31.367

Link: CVE-2026-71287

cve-icon Redhat

Severity : Important

Publid Date: 2026-08-05T12:26:33Z

Links: CVE-2026-71287 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-10T21:00:04Z

Weaknesses
  • CWE-89

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