CVE-2026-82731
NiskieCVSS 2.3Streszczenie
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.
Ocena ryzyka
Atakujący może wykorzystać otwarte przekierowanie do przechwycenia poświadczeń lub przekierowania ruchu na złośliwy serwer, co może prowadzić do kradzieży danych lub naruszenia bezpieczeństwa.
Rekomendacja
Zaktualizuj bibliotekę ash_typescript do wersji 0.18.0 lub nowszej, która koduje wartości parametrów ścieżki przed wstawieniem do URL.
Inne podatności w ash_typescript
Zobacz wszystkie- CVE-2026-82733Średnie
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.
- 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-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)
URL Redirection to Untrusted Site ('Open Redirect') vulnerability in ash-project ash_typescript allows an attacker who controls a path-parameter value to redirect a generated client's request, and the credentials attached to it, to an unintended route or an external origin. The URL builders in lib/ash_typescript/typed_controller/codegen/route_renderer.ex replace each :param placeholder with a bare template interpolation and never call encodeURIComponent, so the value reaches executeTypedControllerRequest raw. A value containing ../ is normalised away by the fetch URL resolver and reaches a different route, while ? or # truncates the path and can smuggle or override query parameters. For a route whose path begins with a parameter, a value such as /evil.example.com/x yields the protocol-relative URL //evil.example.com/x, sending the request and the credentials from TypedControllerConfig to an attacker-controlled host. Nothing constrains the value at runtime: get_path_param_type/2 emits only a TypeScript type, which is erased. The query-string path is unaffected, since URLSearchParams.set encodes its own values. This issue affects ash_typescript: from 0.15.0 before 0.18.0.

