CVE-2026-82759
NiskieCVSS 1.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 1 - wyżej niż 1% wszystkich znanych CVE
Streszczenie
Użycie jednokierunkowego hasha z przewidywalną solą w AshAuthentication (team-alembic) umożliwia czytelnikom magazynu audytu odzyskanie adresów IP klientów, które tryb prywatności :hash ma pseudonimizować. Funkcja hash_ip/1 używa pojedynczego niekluczowanego hasha SHA-256 z solą, która domyślnie jest stałą wartością opublikowaną w źródle, pozwalając na pełną prekomputację tablicy dla przestrzeni IPv4. Skrócenie do 16 znaków heksadecymalnych nie zapobiega odzyskaniu, a nawet poprawnie skonfigurowana sól może zostać odgadnięta po wycieku.
Ocena ryzyka
Atakujący z dostępem do magazynu audytu mogą zdepersonifikować adresy IP klientów, prowadząc do naruszenia prywatności i ujawnienia aktywności użytkowników. Może to również naruszyć zgodność z przepisami o ochronie danych.
Rekomendacja
Zaktualizuj ash_authentication do wersji z poprawką (4.15.0 lub nowszej, 5.0.0-rc.14 lub nowszej) oraz skonfiguruj silną, losową sól dla trybu prywatności :hash w dzienniku audytu.
Inne podatności w AshAuthentication
Zobacz wszystkie- CVE-2026-86533Krytyczne
Podatność niewystarczającego wygasania sesji w AshAuthentication i AshAuthentication Phoenix pozwala unieważnionej sesji pozostać w pełni uwierzytelnioną. Gdy zasób ma skonfigurowany session_identifier :jti i wyłączone require_token_presence_for_authentication?, wartość sesji jest przechowywana jako <jti>:<subject>, ale czytniki sesji odrzucają jti i przekazują sam subject, nie sprawdzając rekordu unieważnienia. W efekcie sesja przechwycona przed wylogowaniem nadal działa.
- CVE-2026-85500Krytyczne
Podatność obejścia uwierzytelniania przez słabość podstawową w AshAuthentication pozwala niepotwierdzonemu użytkownikowi uzyskać sesję, omijając obowiązkowe potwierdzenie adresu e-mail. Funkcja check_user/2 sprawdza atrybut require_confirmed_with za pomocą is_nil(Map.get(user, value)), ale gdy atrybut nie jest załadowany zwracany jest %Ash.NotLoaded{}, a gdy polityka pola go ukrywa — %Ash.ForbiddenField{}; żadna z tych wartości nie jest nil, więc gałąź odrzucenia jest pomijana. Dodatkowo sprawdzenie nie jest wykonywane, gdy akcja jest wywoływana bezpośrednio przez warstwę API, taką jak AshGraphql lub AshJsonApi.
- CVE-2026-82761Krytyczne
Podatność wyścigu typu time-of-check time-of-use (TOCTOU) w AshAuthentication pozwala atakującemu posiadającemu wyciekły magic link na wielokrotne użycie jednorazowego tokenu i uwierzytelnienie się jako docelowy podmiot. Nic nie serializuje sprawdzenia ważności tokenu względem jego zużycia, więc równoczesne użycia tego samego tokenu kończą się sukcesem, a każde zwraca pełny token użytkownika. Unieważnienie następuje dopiero po weryfikacji JWT, a zapis unieważnienia jako upsert pozwala równoczesnemu duplikatowi zakończyć się sukcesem.
- CVE-2026-86522Średnie
Podatność niewłaściwej neutralizacji danych wyjściowych w logach w team-alembic AshAuthentication pozwala nieuwierzytelnionemu atakującemu sfałszować wpisy logów aplikacji poprzez przesłanie tożsamości resetowania hasła zawierającej znaki nowej linii lub znaki kontrolne. Funkcja AshAuthentication.Strategy.Password.RequestPasswordReset.run/3 interpoluje argument tożsamości do szablonów Logger.warning/1 bez escapowania, obcinania lub ograniczenia typu, co pozwala atakującemu wybrać tag ważności i treść wpisów. Problem dotyczy ash_authentication od 4.2.0 przed 4.15.0 oraz od 5.0.0-rc.0 przed 5.0.0-rc.14.
- CVE-2026-82760Wysokie
Podatność typu „Inefficient Algorithmic Complexity” w AshAuthentication umożliwia nieuwierzytelnionemu atakującemu wyczerpanie CPU i pamięci przez przesłanie zbyt dużego segmentu base62 w kluczu API. Funkcje dekodujące mają złożoność kwadratową/sześcienną i nie ograniczają długości wejścia.
- CVE-2026-82723Niskie
Podatność w bibliotece AshAuthentication (dodatek audit_log) polega na zapisywaniu do dziennika audytu pełnego rekordu użytkownika, w tym atrybutu hashed_password, gdy akcja audytowana jest wywoływana z ustawionym aktorem. Oznaczenie atrybutu jako wrażliwego nie pomaga, ponieważ redakcja dotyczy tylko inspect/1, a nie kodowania JSON ani surowego zapisu. Problem dotyczy wersji od 4.12.0 do 4.15.0 oraz od 5.0.0-rc.0 do 5.0.0-rc.2.
- CVE-2026-82685Wysokie
Podatność „Authorization Bypass Through User-Controlled Key” w AshAuthentication pozwala uwierzytelnionemu atakującemu na nadpisanie i potwierdzenie adresu e-mail innego użytkownika, co prowadzi do przejęcia konta. Token potwierdzający wydany dla jednego użytkownika jest akceptowany dla innego.
- CVE-2026-81637Niskie
Podatność polegająca na niewystarczającym wygaśnięciu sesji w AshAuthentication umożliwia atakującemu, który zdobędzie wartość stanu OAuth2 ofiary, powtórzenie wywołania zwrotnego i zalogowanie ofiary na konto kontrolowane przez atakującego. Wpis sesji nie jest usuwany w przypadku nieudanego uwierzytelnienia z powodu błędnego zakresu w Elixir, więc wartość ochrony CSRF pozostaje przez anulowane lub nieudane próby aż do kolejnego żądania lub wygaśnięcia sesji.
- CVE-2026-80218Wysokie
Podatność „Improper Authentication” w AshAuthentication pozwala osobie posiadającej token logowania dla jednego zasobu na zalogowanie się jako użytkownik innego zasobu. Problem wynika z nieprawidłowego parsowania klauzuli sub w tokenie JWT.
- CVE-2026-78223Średnie
Podatność w bibliotece AshAuthentication (wersje od 0.2.0 do przed 4.15.0 oraz od 5.0.0-rc.0 do przed 5.0.0-rc.14) dotyczy nieprawidłowej weryfikacji podpisu kryptograficznego. Mechanizm unieważniania tokenów nie sprawdza podpisu, co pozwala atakującemu na neutralizację unieważnienia lub wstawienie dowolnych wierszy do zasobu tokenów.
Oryginalny opis (angielski, źródło NVD)
Use of a One-Way Hash with a Predictable Salt vulnerability in team-alembic AshAuthentication allows readers of the audit store to recover the client IP addresses that the audit log add-on's :hash privacy mode is meant to pseudonymise. AshAuthentication.AddOn.AuditLog.IpPrivacy.hash_ip/1 computes a single unkeyed :crypto.hash(:sha256, salt <> ip) and truncates the result to 16 hexadecimal characters. The salt is read from the :audit_log_ip_salt or :secret application config keys, and falls back to the constant "default-salt-change-in-production" published in the library source when neither is set, with nothing warning that the default is in use. The IPv4 space is only 2^32 values and SHA-256 is fast, so the whole hash table is precomputable and every stored value maps back to its source address. Truncating to 16 characters does not help, and even a configured salt leaves the hash cheap enough to enumerate once it leaks. This issue affects ash_authentication: from 4.12.0 before 4.15.0 and from 5.0.0-rc.0 before 5.0.0-rc.14.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

