Answer in brief
CVE-2026-54529 records a Medium severity (CVSS 5.3) vulnerability in SQLAdmin: Unvalidated sortBy parameter in `ModelView` bypasses `column_sortable_list`. The current sources do not mark it as known exploited. The current feed maps sqladmin (pip), sqladmin (pypi). Check affected ranges and fixed versions before updating.
Analysis pending evidence review
HOL Guard separates source facts from reviewed analysis. See the methodology.
CVSS is 5.3. The current sources do not mark it as known exploited. Treat this as a source-backed prioritization signal, not a statement about your environment.
Analysis status
Analysis pending evidence review
Factual feed record only; HOL analysis is not approved for indexing. Read the methodology.
The current feed maps sqladmin (pip), sqladmin (pypi). Check affected ranges and fixed versions before updating.
| Package | Affected range | Fixed version |
|---|---|---|
| sqladminpip | <0.27.1 | 0.27.1 |
| sqladminpypi | >=0 <0.27.1 | 0.27.1 |
Published upstream
Sep 9, 2026
Evidence: source:ghsa:source_dates:source-dates:recordSource modified
Sep 9, 2026
Evidence: source:ghsa:source_dates:source-dates:recordFirst seen by HOL
Sep 9, 2026
## 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 `asc`↔`desc` 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.
Quoted source text, attributed separately from HOL analysis.