Podatności ash
7 znanych podatności CVE w ash, przetłumaczonych i ocenionych.
- CVE-2026-67579Wysokie
Podatność na deserializację niezaufanych danych w ash-project ash pozwala nieuwierzytelnionemu atakującemu wstrzyknąć wyrażenie filtru przez sfałszowany kursor paginacji keyset, co może prowadzić do wstrzyknięcia SQL lub wykonania kodu w zależności od warstwy danych. Akcje odczytu z paginacją keyset dekodują kursor dostarczony przez klienta w decode_values/2 w lib/ash/page/keyset.ex przy użyciu non_executable_binary_to_term/2 z [:safe], co blokuje nowe atomy, funy i porty, ale nie struktury zbudowane z atomów już zainternowanych w działającej aplikacji Ash, więc zdekodowane wyrażenie %Ash.Query.Call{} przetrwa i jest wstawiane do filtra keyset jako wartość porównania w do_filters/4 i oceniane. Ponieważ kursor omija makro Ash.Expr, środowisko wykonawcze nigdy nie stosuje bramki private?/public?, która mogłaby je odrzucić. Na AshPostgres wstrzyknięty fragment jest wstawiany do zapytania SQL; na warstwach danych ETS i Simple jest oceniany w procesie jako dowolne wywołanie funkcji. Problem dotyczy ash od 1.17.0 przed 3.31.3.
- CVE-2026-70395Niskie
Podatność nieprawidłowej neutralizacji specjalnych elementów w logice zapytań danych w ash-project ash pozwala atakującemu sfałszować relację do rekordu, którego nie zna, oraz odzyskać sekretną wartość używaną do jego wyszukania. Gdy manage_relationship jest używane z on_lookup: :relate na relacji belongs_to, wartość lookup dostarczona przez klienta jest przekazywana do Ash.Query.filter/2 bez rzutowania na typ atrybutu. Zagnieżdżona mapa przesłana tam, gdzie oczekiwany jest skalar, jest interpretowana jako predykat filtra, a nie literał, więc wyszukiwanie konkretnego rekordu staje się zapytaniem o dowolny rekord spełniający warunek. Ta sama ścieżka pomija Ash.Query.limit(1), pozostawiając Ash.read_one/2 zdolnym do rozróżnienia braku dopasowania od jednego dopasowania od kilku, co zamienia predykaty porównawcze w wyrocznię dla wartości lookup. Autoryzacja nie jest naruszona; polityka odczytu docelowego nadal obowiązuje.
- CVE-2026-69659Średnie
Podatność niekontrolowanego zużycia zasobów w ash-project ash pozwala atakującemu wyczerpać pamięć węzła poprzez spreparowany kursor paginacji keyset. Czytanie akcji z paginacją keyset deserializuje dostarczony przez klienta kursor page[:after] lub page[:before] w decode_values/2 w lib/ash/page/keyset.ex, który dekoduje wartość base64 i przekazuje do :erlang.binary_to_term/2 bez ograniczania rozmiaru. Format terminu zewnętrznego Erlanga obsługuje skompresowane payloady zlib, które dekompresor rozszerza transparentnie, więc kursor o rozmiarze kilku kilobajtów może zaalokować dziesiątki megabajtów pamięci w jednym wywołaniu. Ash sam koduje kursory nieskompresowane, więc dekoder akceptuje kształt terminu, którego enkoder nigdy nie produkuje. Równoczesne żądania agregują te alokacje i mogą zakończyć węzeł.
- CVE-2026-55736Średnie
Podatność w bibliotece Ash umożliwia atakującemu ustawienie wartości prywatnego argumentu akcji, który powinien być kontrolowany tylko przez zaufany kod serwera. Filtrowanie prywatnych argumentów jest niekompletne zarówno w ścieżce regularnej (dla kluczy binarnych), jak i w ścieżce atomowej (w ogóle nie filtruje).
- CVE-2025-48044Wysokie
W projekcie ash występuje podatność nieprawidłowej autoryzacji, która umożliwia ominięcie uwierzytelniania. Problem dotyczy plików lib/ash/policy/policy.ex i funkcji 'Elixir.Ash.Policy.Policy':expression/2 w wersjach od 3.6.3 do 3.7.0.
- CVE-2025-48043Wysokie
Biblioteka Ash w wersjach od 0.1.0 do 3.6.2 ma podatność w mechanizmie autoryzacji, która pozwala na ominięcie uwierzytelniania. Problem dotyczy pliku lib/ash/policy/authorizer/authorizer.ex i funkcji strict_filters/2.
- CVE-2025-48042Wysokie
W bibliotece ash w wersjach od 0.1.0 do 3.5.39 stwierdzono podatność na nieprawidłową autoryzację w operacjach zbiorczych (bulk create, destroy, update). Podatność ta umożliwia wykorzystanie nieprawidłowo skonfigurowanych poziomów bezpieczeństwa kontroli dostępu.

