CVE-2026-28809
ŚrednieCVSS 5.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 20 - wyżej niż 20% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może odczytać poufne pliki z systemu, takie jak sekrety Kubernetes, co może prowadzić do wycieku danych uwierzytelniających i eskalacji uprawnień.
Rekomendacja
Należy zaktualizować Erlang/OTP do wersji 27 lub nowszej, gdzie domyślnie wyłączono encje XML, oraz zastosować poprawkę do esaml po jej udostępnieniu.
Inne podatności w esaml
Zobacz wszystkie- 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ł.
Oryginalny opis (angielski, źródło NVD)
XML External Entity (XXE) vulnerability in esaml (and its forks) allows an attacker to cause the system to read local files and incorporate their contents into processed SAML documents, and potentially perform SSRF via crafted SAML messages. esaml parses attacker-controlled SAML messages using xmerl_scan:string/2 before signature verification without disabling XML entity expansion. On Erlang/OTP versions before 27, Xmerl allows entities by default, enabling pre-signature XXE attacks. An attacker can cause the host to read local files (e.g., Kubernetes-mounted secrets) into the SAML document. If the attacker is not a trusted SAML SP, signature verification will fail and the document is discarded, but file contents may still be exposed through logs or error messages. This issue affects all versions of esaml, including forks by arekinath, handnot2, and dropbox. Users running on Erlang/OTP 27 or later are not affected due to Xmerl defaulting to entities disabled.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

