CVE-2026-80227
NiskieCVSS 2.1Streszczenie
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ą.
Ocena ryzyka
Może to umożliwić tworzenie duplikatów danych lub obejście walidacji, co prowadzi do naruszenia integralności danych i potencjalnie do nieautoryzowanych operacji.
Rekomendacja
Zaleca się aktualizację ash_sql do wersji 0.7.1 lub nowszej oraz unikanie polegania na string_trim/1 w krytycznych walidacjach bez testów spójności.
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-81316Niskie
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.
- 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 Comparison vulnerability in ash-project ash_sql allows a user to pad a string field with tab, newline, carriage-return, or form-feed characters and pass a trimmed uniqueness or equality check in the database that the same expression would fail in memory (or the reverse). string_trim/1 compiles to REGEXP_REPLACE patterns built from an Elixir string in which \s is the escape for a single space (codepoint 32), not a regex whitespace class. The generated SQL therefore removes only literal spaces and leaves tabs, newlines, carriage returns, and form feeds in place, whereas String.trim/1 in Elixir removes them all. Any Ash filter, validation, or identity that relies on string_trim/1 then behaves differently depending on whether Ash pushes the expression down to SQL or evaluates it in memory, so padded input can register a near-duplicate value or slip past a trimmed comparison. This issue affects ash_sql: from 0.1.0 before 0.7.1.

