CVE-2026-62998

mediumPriorität · verfolgen · 0EPSS 0.004 · 33. PerzentilUS
grimoire priorityP3 · Track
Exploitable?
—
no known exploitation
Likely / severe?
0.39% (33rd) EPSS
CVSS 4.3 · medium
Is it mine?
2 products
Prüfe deine Angriffsfläche
Who says so?
2 sources
nvd · osv

EPSS · bewertet 2026-10-29

REDAXO is a PHP-based content management system. Prior to 5.21.2, rex_list::getSortColumn() in redaxo/src/core/lib/list.php accepts the sort request parameter without checking whether setColumnSortable() registered the requested column. An authenticated backend user can make prepareQuery() add an escaped but unauthorized ORDER BY identifier, allowing error-based enumeration of columns in joined tables and ordering by unselected sensitive fields such as rex_user.password. This issue is fixed in version 5.21.2.

01

cvss

Technischer Schweregrad, 0–10. Eine Zeile je Quelle.

4.3
010

Basiswert 0–10 · höher = schwerwiegender · Vektor überfahren zum Auflösen

v3.14.3mediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:Nsecondary · security-advisories@github.comAusnutzbarkeit 2.8 · Auswirkung 1.4
v3.14.3mediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:Nsecondary · OSV
v3.14mediumCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N/E:Usecondary · CVSS-BT (t0sche)
02

SSVC

Eine Handlungsentscheidung — aus Ausnutzung und Auswirkung.

Exploitation: poc · Automatable: no · Technical Impact: partialcoordinatorcisa_ssvcUS
03

schwächen

Die CWE-Schwächeklassen, zu denen dies gehört.

04

betroffene Produkte (2)

Betroffene Produkte und Versionsbereiche.

05

Advisories (1)

Hersteller- und Ökosystem-Meldungen dazu.

  • GHSA-4f5f-j737-pm58REDAXO: Unwhitelisted ORDER BY Column in rex_list Allows Authenticated Column Enumeration2026-09-24ghsa · osvUS

    ### Summary The `rex_list` component reads the SQL sort column directly from the `sort` GET parameter without validating it against the set of columns declared sortable via `setColumnSortable()`. Although the value is wrapped in backticks via `escapeIdentifier()` (preventing classical SQL injection), this still allows any authenticated backend user to ORDER BY any column in the query's FROM tables, including unselected sensitive columns such as `password` from the `rex_user` table, and perform error-based column enumeration. ### Details **File:** `redaxo/src/core/lib/list.php:976-982` — `getSortColumn()` returns the raw request parameter without whitelist check: ```php public function getSortColumn($default = null) { if (rex_request('list', 'string') == $this->getName()) { return rex_request('sort', 'string', $default); // NO validation against sortable columns } return $default; } ``` **File:** `redaxo/src/core/lib/list.php:899-911` — `prepareQuery()` uses it directly in the ORDER BY clause: ```php protected function prepareQuery($query, array $defaultSort = []) { $sortColumn = $this->getSortColumn(); if ('' != $sortColumn) { $sql = rex_sql::factory($this->db); $sortColumn = $sql->escapeIdentifier($sortColumn); // backtick-wraps, but no whitelist if ($defaultSort || false === stripos($query, ' ORDER BY ')) { $query .= ' ORDER BY ' . $sortColumn . ' ' . $sortType; } } ``` The users list queries `rex_user` which contains `password`, `previous_passwords`, `password_change_required` — not in the SELECT. Specifying a non-existent column name produces a MySQL `Unknown column` exception whose message is propagated to the user, confirming or denying column existence. ### PoC **Column enumeration (error-based):** ``` GET /redaxo/index.php?page=users&list=<list_name>&sort=nonexistent_col&sorttype=asc ``` Response will contain: `Unknown column 'nonexistent_col' in 'order clause'` **Sort by password hash (data ordering leak):** ``` GET /redaxo/index.php?page=users&list=<list_name>&sort=password&sorttype=asc ``` Users are silently reordered by their Argon2 password hash. ### Impact Authenticated backend users (non-admin) can enumerate database column names of internal tables via error messages and manipulate query ordering to include sensitive unselected columns. While this does not allow arbitrary SQL execution due to backtick escaping, it constitutes an information disclosure vulnerability enabling targeted further attacks. ### Fix Validate the `sort` request parameter against the whitelist of columns registered with `setColumnSortable()` before use in the query: ```php public function getSortColumn($default = null) { if (rex_request('list', 'string') == $this->getName()) { $requested = rex_request('sort', 'string', $default); if ($requested !== null && $this->hasColumnOption($requested, REX_LIST_OPT_SORT)) { return $requested; } } return $default; } ```

06

quellen

Welche Quellen diesen Datensatz belegen und wann.

veröffentlicht 2026-09-23geändert 2026-10-19
07

Referenzen (4) nvd

Externe Belege — Patches, Meldungen, Analysen.

scry

Angreifer nutzen Schwachstellen wie diese gegen im Internet exponierte Dienste aus. Sehen Sie mit einem kostenlosen Passiv-Scan, was exponiert ist.

Kostenloser Scan