CVE-2026-26198
CriticalSummary
Ormar to asynchroniczny mini ORM dla Pythona. W wersjach od 0.9.9 do 0.22.0, podczas wykonywania zapytań agregacyjnych, Ormar ORM wprowadza nazwy kolumn dostarczone przez użytkownika bez walidacji lub sanitizacji, co umożliwia atakującym wstrzykiwanie złośliwego kodu SQL.
Risk Assessment
Podatność ta pozwala nieautoryzowanym użytkownikom na odczytanie całej zawartości bazy danych, w tym tabel niezwiązanych z zapytanym modelem, co stanowi poważne zagrożenie dla bezpieczeństwa danych organizacji.
Recommendation
Zaleca się aktualizację do wersji 0.23.0, która zawiera poprawkę eliminującą tę podatność oraz wprowadzenie dodatkowych mechanizmów walidacji danych wejściowych.
Original NVD description (English source)
Ormar is a async mini ORM for Python. In versions 0.9.9 through 0.22.0, when performing aggregate queries, Ormar ORM constructs SQL expressions by passing user-supplied column names directly into `sqlalchemy.text()` without any validation or sanitization. The `min()` and `max()` methods in the `QuerySet` class accept arbitrary string input as the column parameter. While `sum()` and `avg()` are partially protected by an `is_numeric` type check that rejects non-existent fields, `min()` and `max()` skip this validation entirely. As a result, an attacker-controlled string is embedded as raw SQL inside the aggregate function call. Any unauthorized user can exploit this vulnerability to read the entire database contents, including tables unrelated to the queried model, by injecting a subquery as the column parameter. Version 0.23.0 contains a patch.

