GHSA-ccg5-9c8w-xh6v

Suggest an improvement
Source
https://github.com/advisories/GHSA-ccg5-9c8w-xh6v
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-ccg5-9c8w-xh6v/GHSA-ccg5-9c8w-xh6v.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-ccg5-9c8w-xh6v
Aliases
Published
2026-09-09T18:01:56Z
Modified
2026-09-10T12:25:57Z
Severity
  • 5.3 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N CVSS Calculator
Summary
SQLAdmin: Unvalidated sortBy parameter in `ModelView` bypasses `column_sortable_list`
Details

Summary

ModelView.sort_query() uses the attacker-controlled sortBy list-view query parameter without checking it against the configured column_sortable_list allow-list. The value is resolved with getattr(model, ...) and fed into relationship joins and order_by(), so a request can sort by any column of the model — including ones hidden from column_list — and, via a dotted path, by columns of related models. Because row order then reflects the value of an unexposed column, this is an information-exposure ordering oracle.

Root cause

column_sortable_list is consulted only in the list template to decide which header links to render; the server never enforces it, so removing a column from the UI does not prevent sorting by it.

Exploitation

A single request leaks the relative ordering of an unexposed column; the ascdesc reversal confirms rows are ordered by the secret's actual value. Pairing sortBy with searchable/filterable columns and pagination can narrow the oracle toward specific values, though value recovery is conditional on having a filterable target column.

Database specific
{
    "cwe_ids": [
        "CWE-20",
        "CWE-200",
        "CWE-248",
        "CWE-639"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-09-09T18:01:56Z",
    "nvd_published_at": null,
    "severity": "MODERATE"
}
References

Affected packages

PyPI / sqladmin

Package

Affected ranges

Type
ECOSYSTEM
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
0.27.1

Affected versions

0.*
0.0.0
0.1.0
0.1.1
0.1.2
0.1.3
0.1.4
0.1.5
0.1.6
0.1.7
0.1.8
0.1.9
0.1.10
0.1.11
0.1.12
0.2.0
0.2.1
0.3.0
0.4.0
0.5.0
0.6.0
0.6.1
0.7.0
0.8.0
0.9.0
0.10.0
0.10.1
0.10.2
0.10.3
0.11.0
0.12.0
0.13.0
0.14.0
0.14.1
0.15.0
0.15.1
0.15.2
0.16.0
0.16.1
0.17.0
0.18.0
0.19.0
0.20.0
0.20.1
0.21.0
0.22.0
0.23.0
0.24.0
0.25.0
0.25.1
0.26.0
0.27.0

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-ccg5-9c8w-xh6v/GHSA-ccg5-9c8w-xh6v.json"