CVE-2026-81316
NiskieCVSS 2.1Streszczenie
Podatność w ash_sql pozwala wywołującemu na otrzymanie wartości agregatu obliczonego nad wierszami, które powinny być wykluczone przez bardziej restrykcyjny filtr, ujawniając liczby, sumy lub listy poza granicami autoryzacji lub tenancyjnymi. Dzieje się tak, ponieważ dwa zapytania agregujące są uznawane za identyczne, gdy różnią się tylko filtrem, a nie sortowaniem.
Ocena ryzyka
Może to prowadzić do ujawnienia wrażliwych danych, takich jak liczba rekordów lub sumy, osobom nieuprawnionym, naruszając poufność i kontrolę dostępu.
Rekomendacja
Zaleca się aktualizację ash_sql do wersji 0.7.1 lub nowszej oraz unikanie używania agregatów o tej samej nazwie z różnymi filtrami w tym samym kontekście.
Inne podatności w ash_sql
Zobacz wszystkie- CVE-2026-81318Niskie
Podatność w ash_sql pozwala wywołującemu w aplikacji wielotenantowej opartej na schematach na otrzymanie wartości agregatów obliczonych z wierszy innego tenanta. Dzieje się tak, gdy agregat jest liczony nad zapytaniem distinct, a zapytanie zewnętrzne jest odbudowywane bez prefiksu schematu, co prowadzi do odczytu z domyślnego schematu zamiast schematu tenanta.
- CVE-2026-80227Niskie
Podatność w ash_sql pozwala użytkownikowi na dodanie do pola tekstowego znaków tabulacji, nowej linii, powrotu karetki lub wysunięcia strony, aby przejść test unikalności lub równości w bazie danych, który w pamięci by się nie powiódł (lub odwrotnie). Dzieje się tak, ponieważ funkcja string_trim/1 w SQL usuwa tylko spacje, a nie wszystkie białe znaki, co powoduje różnice w zachowaniu między SQL a pamięcią.
- CVE-2026-78691Niskie
Podatność w ash_sql pozwala użytkownikowi, który dostarcza termin wyszukiwania do funkcji contains/2, string_starts_with/2 lub string_ends_with/2, na wstrzyknięcie dzikich kart LIKE do zapytania SQL, zamieniając dosłowne wyszukiwanie podciągu na wzorzec kontrolowany przez atakującego. Dzieje się tak, ponieważ funkcje pomocnicze nie escapują backslashy, co pozwala na obejście escapowania i aktywację dzikich kart.
- CVE-2026-77454Średnie
Podatność w ash_sql pozwala wywołującemu na ominięcie filtra autoryzacji lub zakresowania wyrażonego jako exists/2 nad relacją z limitem lub filtrem odwołującym się do parent(...). W pewnych przypadkach limit i predykat są pomijane, co powoduje, że sprawdzenie dopasowuje dowolny rekord z dowolnym powiązanym wierszem.
Oryginalny opis (angielski, źródło NVD)
Incorrect Authorization vulnerability in ash-project ash_sql allows a caller to receive an aggregate value computed over rows a more restrictive filter should have excluded, disclosing counts, sums, or lists across an authorization or tenancy boundary. AshSql.Aggregate.different_queries?/2 reports two aggregate queries as different only when their filter and their sort both differ. Aggregate queries rarely carry a sort, so two aggregates that share a name but carry entirely different filters compare as identical. The colliding aggregate keeps its name and is treated as already computed, and select_aggregates returns the first-registered variant's value. The same name reaches the builder twice with different filters when actor or tenant context is stamped into each aggregate's query, so a narrowly filtered aggregate can be served the value of a previously registered broad one. This issue affects ash_sql: from 0.1.0 before 0.7.1.

