Podatności ash
26 znanych podatności CVE w ash, przetłumaczonych i ocenionych.
- CVE-2026-93477Średnie
Podatność w bibliotece Ash pozwala użytkownikowi ustawić wartość prywatnego argumentu akcji na ścieżkach masowego usuwania i masowej aktualizacji. Argumenty zadeklarowane jako public?: false powinny być ustawiane tylko przez zaufany kod serwerowy, ale brak sprawdzenia public? w tych ścieżkach umożliwia ich modyfikację z danych wejściowych użytkownika.
- CVE-2026-86338Średnie
W Ash przed wersją 3.33.4, polityki pól (field_policies) mają chronić przed ujawnianiem informacji przez filtry, ale nilling (zastępowanie wartością nil) był stosowany tylko do atrybutów, nie do obliczeń (calculations) ani agregatów (aggregates). Użytkownik może odwołać się w filtrze do obliczenia lub agregatu, którego nie może zobaczyć, i użyć filtra jako wyroczni do odczytania chronionej wartości (np. filter(secret_calc == "x")).
- CVE-2026-82752Średnie
Nieprawidłowa walidacja określonej ilości w danych wejściowych w ash-project ash pozwala atakującemu na przechowywanie wartości o dowolnym rozmiarze w atrybucie, którego ograniczenie długości powinno ją ograniczać. Ash mierzy długość stringa za pomocą String.length/1 z Elixira, która liczy grafy Unicode, w ograniczeniach max_length i min_length Ash.Type.String, w Ash.Resource.Validation.StringLength oraz w funkcji wyrażenia string_length. Graf może zawierać nieograniczoną liczbę znaków łączących, więc podstawowy znak z milionem akcentów ostrych to jeden graf i megabajty danych, spełniający max_length: 2. Tam, gdzie warstwa danych nie nakłada niezależnego limitu (ETS, Mnesia lub kolumna text w Postgresie), cała wartość jest zapisywana, więc atakujący może zapisać całe ciało żądania do atrybutu z małym maksimum i nieograniczenie zwiększać pamięć. Jednostka liczenia różni się również od warstwy przechowywania, która liczy punkty kodowe, a nie grafy, więc wartość zaakceptowana przez ograniczenie może zostać odrzucona lub obcięta przez kolumnę. Kolumna varchar(n) w Postgresie ogranicza samą wartość i nie jest narażona. Problem dotyczy ash: od 0.10.0 przed 3.33.0.
- CVE-2026-82747Średnie
Podatność nieprawidłowej autoryzacji w ash-project ash zwraca rekordy, które polityka odczytu w czasie wykonania (runtime read policy) odmawia każdemu aktorowi. Gdy zasób ma politykę odczytu typu :runtime (sprawdzaną per rekord, a nie kompilowaną do filtra), Ash.Policy.Authorizer decyduje o każdym rekordzie w check_result/1, odrzucając niemożliwe scenariusze polityki i sprawdzając, co pozostaje. Gdy każdy scenariusz dla rekordu był niemożliwy, co oznacza, że żadna polityka nie może go autoryzować i musi być zabroniony, gałąź pustego scenariusza zamiast tego zachowywała rekord i zwracała go jako autoryzowany. Poprawka zabrania rekordu, którego wszystkie scenariusze są niemożliwe. Problem dotyczy ash od 3.4.44 przed 3.32.2.
- CVE-2026-82749Średnie
W bibliotece ash występuje podatność nieprawidłowej autoryzacji, która poszerza filtr zakresu relacji parent(...) tak, że dopasowuje niezamierzone rekordy, gdy nie można rozwiązać odwołania do pola nadrzędnego. W takich przypadkach odwołanie jest rozwiązywane do nil, co powoduje, że predykaty takie jak org_id == parent(org_id) stają się dopasowaniem IS NULL, a warunki typu is_nil(parent(org_id)) aktywują nieograniczoną gałąź, przez co relacja zwraca rekordy, które powinny być wykluczone. Poprawka powoduje błąd odczytu, gdy odwołanie parent(...) nie może być rozwiązane.
- CVE-2026-82748Niskie
Podatność na nieprawidłową autoryzację w ash pozwala na autoryzację agregatu pod jednym działaniem odczytu, a obliczenie go pod innym, co może prowadzić do uruchomienia agregatu z politykami niezgodnymi z działaniem, dla którego był autoryzowany. Może to umożliwić ujawnienie informacji o rekordach, których aktor nie powinien czytać.
- CVE-2026-82746Średnie
W bibliotece ash występuje podatność braku autoryzacji, która pozwala aktorowi na aktualizację rekordów zabronionych przez polityki zasobów poprzez ścieżkę atomową Ash.update_many/4. Gdy używana jest strategia atomowa, zapytanie aktualizuje wszystkie wiersze pasujące do klucza głównego bez stosowania polityk, co pozwala na modyfikację rekordów należących do innych aktorów lub tenantów. Poprawka ogranicza ścieżkę atomową do warstw danych wspierających filtry changeset, autoryzuje każdy changeset i scala filtr polityki.
- CVE-2026-82745Średnie
W bibliotece ash występuje podatność nieprawidłowej kontroli dostępu, która pozwala akcji tworzenia nadpisać istniejący rekord, gdy używana jest warstwa danych ETS lub Mnesia, ponieważ nie egzekwują one unikalności klucza głównego. Atakujący, który może ustawić klucz główny podczas tworzenia, może cicho nadpisać istniejący rekord, niszcząc dane innego podmiotu bez przechodzenia przez akcję aktualizacji i jej polityki. Poprawka odrzuca tworzenie, gdy klucz główny już istnieje.
- CVE-2026-82744Niskie
Podatność na niezabezpieczone niepowodzenie (failing open) w ash powoduje pominięcie zmiany Ash.Reactor, gdy kontrola ją blokująca zgłasza wyjątek. Oznacza to, że zmiana, która powinna zostać wykonana, nie jest wykonywana, co może prowadzić do naruszenia bezpieczeństwa.
- CVE-2026-82743Niskie
Podatność na niekontrolowane zużycie zasobów w ash pozwala wolnemu asynchronicznemu odczytowi na zapętlenie wątku schedulera przy pełnym obciążeniu procesora, podczas gdy framework czeka na jego zakończenie. Funkcja AsyncLimiter.await_at_least_one/1 używała ciasnej pętli z Task.yield(task, 0), co powodowało busy-spinning.
- CVE-2026-82742Średnie
W bibliotece ash występuje podatność niekontrolowanego zużycia zasobów, która pozwala atakującemu na wyczerpanie pamięci węzła poprzez dopasowanie filtra obejmującego wiele relacji to-many w pamięci. Funkcja flatten_relationships/2 buduje pełny produkt kartezjański relacji, co prowadzi do kombinatorycznego wzrostu pamięci. Poprawka strumieniuje rozszerzanie leniwie i przerywa przy pierwszym pasującym scenariuszu.
- CVE-2026-82741Niskie
Podatność na nieprawidłową walidację typu danych wejściowych w ash pozwala atakującemu na pomylenie przechowywanego tagu typu wartości Ash.Type.Union używającej storage: :map_with_tag, co umożliwia obejście walidacji członka i autoryzacji opartej na tagu. Funkcja dump_to_native/2 nie wymuszała skonfigurowanego tagu, co pozwalało na zapisanie wartości z tagiem wskazującym inny członek.
- CVE-2026-82740Niskie
Podatność w bibliotece ash polega na niewłaściwym sprawdzaniu poprawności danych wejściowych dla atrybutów z podwójnie zagnieżdżoną tablicą. Ograniczenia nałożone na zewnętrzną tablicę nie są egzekwowane, co pozwala na zapisanie nieprawidłowych danych.
- CVE-2026-82739Niskie
Podatność w bibliotece ash ujawnia przechowywaną wartość potwierdzanego pola atakującemu, który nie przejdzie pomyślnie weryfikacji potwierdzenia. Błąd w implementacji atomowej walidacji Confirm powoduje, że w komunikacie błędu zwracana jest zapisana wartość pola.
- CVE-2026-82738Średnie
W bibliotece ash występuje podatność nieprawidłowej walidacji wejścia, która pozwala atakującemu na trwałe zablokowanie odczytu rekordu poprzez zapisanie UUID niebędącego wersją 7 w atrybucie Ash.Type.UUIDv7. Podczas odczytu, zapisany binarny UUID nie pasuje do oczekiwanego formatu i zwraca błąd, co powoduje, że każdy późniejszy odczyt tego rekordu kończy się niepowodzeniem. Poprawka dekoduje dowolny 16-bajtowy binarny UUID bezpośrednio w cast_stored/2.
- CVE-2026-82737Średnie
W bibliotece ash występuje podatność przepełnienia liczby całkowitej, która pozwala atakującemu na uszkodzenie przechowywanego wektora i spowodowanie awarii późniejszych odczytów poprzez przesłanie wektora z więcej niż 65 535 elementami. Liczba elementów jest pakowana w 16-bitowe pole bez sprawdzenia zakresu, co powoduje zawinięcie modułu 65 536 i niezgodność z rzeczywistą liczbą elementów. Poprawka odrzuca wektory o wymiarze przekraczającym 65 535.
- CVE-2026-82736Niskie
Podatność w bibliotece ash dotyczy kolejności operacji: walidacja przed kanonizacją. Atakujący może zapisać wartość ciągu znaków bez uwzględniania wielkości liter, która narusza ograniczenia długości lub wzorca.
- CVE-2026-82735Średnie
Podatność na niekontrolowane zużycie zasobów w bibliotece ash pozwala atakującemu wymusić wykonanie kosztownego wyrażenia regularnego na danych wejściowych, które powinny zostać odrzucone przez ograniczenia długości. Walidacja typu Ash.Type.String.apply_constraints/2 nie sprawdzała ograniczeń długości przed zastosowaniem wzorca :match, co umożliwiało katastrofalną ocenę wyrażenia regularnego na dużych danych wejściowych. Poprawka pomija wzorzec :match, gdy ograniczenie długości jest naruszone.
- CVE-2026-82734Niskie
Podatność w bibliotece ash pozwala atakującemu na przesłanie nie-skończonej wartości dziesiętnej (np. Infinity lub NaN), która omija ograniczenia numeryczne lub powoduje błędy w późniejszych operacjach.
- 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
Podatność nieprawidłowej autoryzacji w ash-project ash pozwala na obejście uwierzytelniania. Problem dotyczy wersji od 3.6.3 do 3.7.1.
- CVE-2025-48043Wysokie
Podatność nieprawidłowej autoryzacji w ash-project ash pozwala na obejście uwierzytelniania. Problem dotyczy wersji od 0.1.1 do 3.6.2.
- CVE-2025-48042Wysokie
Podatność nieprawidłowej autoryzacji w ash-project ash pozwala na wykorzystanie błędnie skonfigurowanych poziomów kontroli dostępu. Problem dotyczy wersji od 0.1.1 do 3.5.39.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

