Katalog CVE

CVE-2026-55733

WysokieCVSS 7.5
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.13%

Percentyl 3 - wyżej niż 3% wszystkich znanych CVE

Streszczenie

Podatność w bibliotece Guardian (Elixir) umożliwia atak DoS poprzez nieograniczone tworzenie atomów z danych binarnych kontrolowanych przez atakującego. Funkcja encode/3 w Guardian.Permissions.AtomEncoding wywołuje String.to_atom/1 bez walidacji, co prowadzi do wyczerpania tablicy atomów BEAM i awarii węzła.

Ocena ryzyka

Organizacja narażona jest na całkowitą odmowę usługi (DoS) – atakujący może wysłać serię zróżnicowanych, nieuwierzytelnionych danych wejściowych, co trwale wyczerpie tablicę atomów i spowoduje crash wszystkich aplikacji na tym samym węźle BEAM.

Rekomendacja

Należy natychmiast zaktualizować bibliotekę guardian do wersji 2.4.1 lub nowszej. Jeśli aktualizacja nie jest możliwa, należy zmienić domyślny encoder na Guardian.Permissions.BitwiseEncoding i nie używać Guardian.Permissions.AtomEncoding.

Inne podatności w Guardian

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

Allocation of Resources Without Limits or Throttling in ueberauth guardian allows denial of service via unbounded atom creation from attacker-controlled binary input. Guardian.Permissions.AtomEncoding encodes permission scopes by passing arbitrary binaries to String.to_atom/1. When encode/3 in lib/guardian/permissions/atom_encoding.ex is called with a list, each binary entry is handled by the encode_value/3 binary clause, which calls String.to_atom(value) with no allow-list check. The perm_set argument (the application's small, finite set of legitimate permission names) is discarded, so any external string flows straight into atom creation. This encoder is selected with use Guardian.Permissions, encoding: Guardian.Permissions.AtomEncoding and reached through the imported encode/3 entry point. String.to_atom/1 creates a brand-new atom for every previously unseen binary, atoms are never garbage collected, and the BEAM atom table is fixed at roughly 1,048,576 entries by default. An application that funnels attacker-influenced permission scopes (from a request body, a JWT claim, or other external input) into encode/3 therefore mints one permanent atom per distinct value. A modest stream of varied, unauthenticated input permanently consumes the atom table and crashes the BEAM node with system_limit, taking down every application running on it. The default encoder is Guardian.Permissions.BitwiseEncoding, which is not affected. This issue affects guardian: from 2.0.0 before 2.4.1.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS