CVE-2026-82733
ŚrednieCVSS 6.3Streszczenie
Podatność na generowanie komunikatów błędów zawierających wrażliwe informacje w ash_typescript pozwala nieuwierzytelnionemu atakującemu odczytać wewnętrzne dane aplikacji z treści odpowiedzi HTTP 500. Gdy handler trasy zwraca wartość inną niż %Plug.Conn{}, funkcja unexpected_return/2 interpoluje pełną reprezentację wartości (w tym hasła, tokeny, identyfikatory) do komunikatu błędu.
Ocena ryzyka
Atakujący może uzyskać dostęp do poufnych danych, takich jak hasła, tokeny i identyfikatory dzierżawców, co może prowadzić do naruszenia bezpieczeństwa danych.
Rekomendacja
Zaktualizuj ash_typescript do wersji 0.18.0 lub nowszej, aby wyeliminować podatność.
Inne podatności w ash_typescript
Zobacz wszystkie- CVE-2026-82732Średnie
Podatność na nieprawidłową walidację danych wejściowych w ash_typescript pozwala zdalnemu atakującemu przesyłać wartości argumentów spoza zadeklarowanej listy dozwolonych lub ograniczeń na trasach kontrolera typowanego. Funkcja Ash.Type.cast_input/3 traktowana jest jako pełna walidacja, ale nie wywołuje Ash.Type.apply_constraints/3, przez co ograniczenia takie jak one_of, max_length, min, max i match są ignorowane.
- CVE-2026-82731Niskie
Podatność w bibliotece ash_typescript umożliwia atakującemu kontrolującemu wartość parametru ścieżki przekierowanie żądania wygenerowanego klienta, wraz z dołączonymi poświadczeniami, do nieoczekiwanej trasy lub zewnętrznego źródła.
- CVE-2026-82730Wysokie
Podatność na nieprawidłową autoryzację w ash_typescript pozwala nieautoryzowanemu wywołującemu RPC na odczytanie wartości atrybutów, które zostały zablokowane przez polityki pól Ash. Gdy polityka pól blokuje atrybut, Ash podstawia %Ash.ForbiddenField{}, który zachowuje prawdziwą wartość w original_value, a AshTypescript.Rpc.ResultProcessor nie obsługuje tego znacznika w normalize_primitive/1, co prowadzi do serializacji oryginalnej wartości. Problem dotyczy wersji od 0.11.0 przed 0.18.0.
- CVE-2026-77950Średnie
Podatność na generowanie komunikatów błędów zawierających wrażliwe informacje w ash_typescript pozwala nieuwierzytelnionemu atakującemu otrzymać nieocenzurowane wewnętrzne dane błędów, wywołując kształt błędu, którego nie obsługuje skonfigurowany handler błędów. Funkcja apply_error_handler/3 w przypadku niepasującego wzorca podnosi wyjątek FunctionClauseError i zwraca oryginalną mapę błędu, zawierającą wrażliwe dane.
- CVE-2026-77856Wysokie
Podatność na nieograniczone przydzielanie zasobów w ash_typescript pozwala nieuwierzytelnionemu atakującemu na wyczerpanie tablicy atomów BEAM i przerwanie działania węzła przez dostarczone przez klienta nazwy pól typowanych struktur. Funkcja resolve_typed_struct_field/2 używa String.to_atom/1 dla nierozpoznanych nazw, co tworzy trwałe atomy, które nigdy nie są usuwane, prowadząc do przekroczenia limitu i awarii. Problem dotyczy wersji od 0.11.0 przed 0.18.0.
- CVE-2026-74837Wysokie
Podatność na nieograniczone przydzielanie zasobów w ash_typescript pozwala nieuwierzytelnionemu atakującemu na wyczerpanie tablicy atomów BEAM i przerwanie działania węzła przez dostarczone przez klienta nazwy pól RPC. Funkcja convert_to_field_atom/2 używa String.to_atom/1 dla nierozpoznanych nazw, tworząc trwałe atomy, które nigdy nie są usuwane, prowadząc do przekroczenia limitu i awarii. Dodatkowo nazwy pól dłuższe niż 255 znaków powodują nieobsłużony błąd SystemLimitError. Problem dotyczy wersji od 0.1.0 przed 0.18.0.
Oryginalny opis (angielski, źródło NVD)
Generation of Error Message Containing Sensitive Information vulnerability in ash-project ash_typescript allows an unauthenticated attacker to read internal application data from an HTTP 500 response body. When a typed-controller route handler returns anything other than a %Plug.Conn{}, dispatch/3 in lib/ash_typescript/typed_controller/request_handler.ex passes the value to unexpected_return/2, which interpolates inspect(value, limit: 50) directly into the response message. The limit option bounds elements per collection rather than the term as a whole, so a handler falling through with a term such as {:error, %User{}} or a changeset serialises its full field set, including hashed passwords, tokens, and tenant identifiers, into the JSON error returned to the caller. This contradicts the module's own posture elsewhere: the rescue clause gates Exception.message/1 behind AshTypescript.typed_controller_show_raised_errors?/0 and otherwise returns a generic message, while this path is ungated and always echoes. This issue affects ash_typescript: from 0.15.0 before 0.18.0.

