Podatności esaml
4 znanych podatności CVE w esaml, przetłumaczonych i ocenionych.
- CVE-2026-93471Wysokie
Nieprawidłowa obsługa wysoce skompresowanych danych (amplifikacja danych) w esaml_binding w dropbox esaml pozwala nieuwierzytelnionemu atakującemu na wyczerpanie pamięci serwera i awarię maszyny wirtualnej Erlang poprzez spreparowany skompresowany SAMLResponse. Funkcja esaml_binding:decode_response/2 dekoduje base64 dostarczony przez atakującego SAMLResponse, rozpakowuje go za pomocą zlib:unzip/1 bez ograniczenia rozmiaru wyjściowego, a następnie konwertuje wynik do listy znaków przez binary_to_list/1 przed parsowaniem. Dzieje się to na endpointach SAML consume (ACS) i single-logout, które z założenia akceptują nieuwierzytelnione żądania, i odbywa się przed jakąkolwiek weryfikacją podpisu. Mały strumień deflate osiąga współczynnik kompresji bliski 1000 do 1, więc ciało żądania o rozmiarze dziesiątek kilobajtów rozpakowuje się do setek megabajtów, a następnie do kilku gigabajtów sterty listy, więc kilka żądań wyczerpuje pamięć i powoduje awarię węzła. Problem dotyczy esaml od wersji 0.1.0 wzwyż.
- CVE-2026-86696Wysokie
Podatność polegająca na przydzielaniu zasobów bez ograniczeń lub dławienia w esaml w dropbox esaml pozwala nieuwierzytelnionemu atakującemu na wyczerpanie tablicy atomów maszyny wirtualnej Erlang i awarię węzła poprzez niepodpisane komunikaty LogoutResponse. Funkcja esaml:status_code_map/1 w src/esaml.erl mapuje każdą nierozpoznaną wartość StatusCode na atom za pomocą list_to_atom/1 na ostatnim segmencie URN oddzielonym dwukropkiem. esaml_sp:validate_logout_response/2 weryfikuje podpis tylko wtedy, gdy wiadomość go zawiera, więc niepodpisany LogoutResponse wysłany na endpoint single-logout dociera do esaml:decode_logout_response/1 i tworzy jeden trwały atom na każdą odrębną wartość statusu. Atomy nigdy nie są odzyskiwane, a maszyna wirtualna ogranicza tablicę atomów do około miliona wpisów, więc atakujący, który wyśle tak wiele odrębnych wartości, powoduje awarię węzła. Problem dotyczy esaml od wersji 0.1.0 wzwyż.
- CVE-2026-105270Wysokie
W bibliotece esaml (dropbox) funkcja esaml_binding:decode_response/2 parsuje zdekodowaną odpowiedź SAMLResponse za pomocą xmerl_scan:string/2, która rejestruje każdą nazwę elementu, atrybutu i prefiks przestrzeni nazw jako trwały atom. Punkty końcowe ACS i single-logout wywołują ją na nieuwierzytelnionych żądaniach przed sprawdzeniem podpisu, więc jeden dokument z tysiącami unikalnych nazw tworzy tysiące atomów w granicach limitu 128 KB. Atomy nie są odzyskiwane, a tabela atomów VM ma limit około miliona wpisów, więc kilkadziesiąt żądań może zablokować węzeł.
- CVE-2026-28809Średnie
Biblioteka esaml (i jej forki) zawiera podatność XXE. Przed weryfikacją podpisu, esaml parsuje kontrolowane przez atakującego wiadomości SAML za pomocą xmerl_scan:string/2 bez wyłączania rozwijania encji XML. W Erlang/OTP przed wersją 27, Xmerl domyślnie zezwala na encje, co umożliwia ataki XXE przed weryfikacją podpisu. Atakujący może odczytać lokalne pliki (np. sekrety z Kubernetes) i włączyć ich zawartość do dokumentu SAML.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

