<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 29 Sep 2026 15:08:24 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-62998</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-62998</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-62998</guid>
    </item>
    <item>
      <title>GHSA-4f5f-j737-pm58 — REDAXO: Unwhitelisted ORDER BY Column in rex_list Allows Authenticated Column Enumeration</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-4f5f-j737-pm58</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: redaxo/source&lt;/p&gt;
&lt;p&gt;### 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&amp;#39;s FROM tables, including unselected sensitive columns such as `password` from the `rex_user` table, and perform error-based column enumeration.&lt;/p&gt;
&lt;p&gt;### 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(&amp;#39;list&amp;#39;, &amp;#39;string&amp;#39;) == $this-&amp;gt;getName()) {
        return rex_request(&amp;#39;sort&amp;#39;, &amp;#39;string&amp;#39;, $default);  // NO validation against sortable columns
    }
    return $default;
}
```&lt;/p&gt;
&lt;p&gt;**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-&amp;gt;getSortColumn();
    if (&amp;#39;&amp;#39; != $sortColumn) {
        $sql = rex_sql::factory($this-&amp;gt;db);
        $sortColumn = $sql-&amp;gt;escapeIdentifier($sortColumn);  // backtick-wraps, but no whitelist
        if ($defaultSort || false === stripos($query, &amp;#39; ORDER BY &amp;#39;)) {
            $query .= &amp;#39; ORDER BY &amp;#39; . $sortColumn . &amp;#39; &amp;#39; . $sortType;
        }
    }
```&lt;/p&gt;
&lt;p&gt;The users list queries…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Packagist: redaxo/source&lt;/p&gt;
&lt;p&gt;### 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&amp;#39;s FROM tables, including unselected sensitive columns such as `password` from the `rex_user` table, and perform error-based column enumeration.&lt;/p&gt;
&lt;p&gt;### 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(&amp;#39;list&amp;#39;, &amp;#39;string&amp;#39;) == $this-&amp;gt;getName()) {
        return rex_request(&amp;#39;sort&amp;#39;, &amp;#39;string&amp;#39;, $default);  // NO validation against sortable columns
    }
    return $default;
}
```&lt;/p&gt;
&lt;p&gt;**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-&amp;gt;getSortColumn();
    if (&amp;#39;&amp;#39; != $sortColumn) {
        $sql = rex_sql::factory($this-&amp;gt;db);
        $sortColumn = $sql-&amp;gt;escapeIdentifier($sortColumn);  // backtick-wraps, but no whitelist
        if ($defaultSort || false === stripos($query, &amp;#39; ORDER BY &amp;#39;)) {
            $query .= &amp;#39; ORDER BY &amp;#39; . $sortColumn . &amp;#39; &amp;#39; . $sortType;
        }
    }
```&lt;/p&gt;
&lt;p&gt;The users list queries…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-4f5f-j737-pm58</guid>
    </item>
  </channel>
</rss>
