CVE-2026-68750
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 37 - wyżej niż 37% wszystkich znanych CVE
Streszczenie
Podatność związana z nieefektywną złożonością algorytmiczną w silniku przemierzania w html_sanitize_ex pozwala nieuwierzytelnionemu zdalnemu atakującemu wyczerpać CPU i pamięć serwera poprzez płaską sekwencję elementów rodzeństwa w sanityzowanym HTML. Funkcja List.flatten w Traverser.traverse/2 powoduje kwadratową złożoność dla liczby rodzeństwa, co prowadzi do przeciążenia zasobów.
Ocena ryzyka
Ryzyko polega na możliwości przeprowadzenia ataku DoS, który może znacząco obciążyć serwer, spowolnić działanie aplikacji lub doprowadzić do jej niedostępności.
Rekomendacja
Zaleca się aktualizację html_sanitize_ex do wersji 1.4.5 lub 1.5.3 (w zależności od gałęzi), które zawierają poprawkę eliminującą problem złożoności algorytmicznej.
Inne podatności w html_sanitize_ex
Zobacz wszystkie- CVE-2026-68749Wysokie
Podatność związana z nieefektywną złożonością wyrażeń regularnych w scrubberze CSS w html_sanitize_ex pozwala nieuwierzytelnionemu zdalnemu atakującemu wyczerpać CPU serwera poprzez długą deklarację CSS w sanityzowanym HTML. Wyrażenie regularne w CSS.scrub/1 ma kwadratową złożoność dla długich ciągów znaków, co prowadzi do przeciążenia procesora.
- CVE-2026-68747Średnie
Podatność polegająca na niewłaściwej neutralizacji specjalnych elementów w danych wyjściowych używanych przez komponent podrzędny (wstrzyknięcie) w skruberze CSS w html_sanitize_ex. Nieuwierzytelniony zdalny atakujący może wstrzyknąć reguły CSS, w tym import zewnętrznego arkusza stylów, do strony serwowanej innym użytkownikom. HtmlSanitizeEx.Scrubber.CSS.scrub/1 stosuje listę dozwolonych właściwości i wartości przez Regex.replace na podciągach pasujących do wzorca deklaracji właściwość: wartość, więc dane wejściowe niepasujące do tego wzorca nie są sprawdzane i są kopiowane do wyniku bez zmian. @import url(//attacker.example/style.css); przetrwa, podczas gdy ten sam URL wewnątrz deklaracji background: url(...) jest usuwany. Granice elementów są rozwiązywane przed uruchomieniem skrubera, więc wstrzyknięta treść nie ucieka z elementu <style> i nie wykonuje się żaden skrypt. Dotyczy wersji html_sanitize_ex od 0.3.1 przed 1.4.5 oraz od 1.5.0-rc.0 przed 1.5.4.
- CVE-2026-66843Średnie
Podatność polegająca na dołączaniu funkcjonalności z niezaufanej sfery kontroli w skruberze HTML5 w html_sanitize_ex. Zdalny atakujący może załadować wybrany dokument do zaufanej strony poprzez atrybut data elementu <object> w oczyszczonym HTML. Element object jest jedynym elementem zawierającym URI, który nie jest zarejestrowany przez allow_tag_with_uri_attributes/3, a jedyną ochroną jest dopasowanie prefiksu na małe litery "javascript:", więc warianty z mieszaną wielkością liter, URI data:, adresy URL względne protokołu i ścieżki samego pochodzenia przechodzą. Nie jest to bezwarunkowe cross-site scripting, ale stwarza ryzyko. Dotyczy wersji html_sanitize_ex od 0.3.1 przed 1.4.5 oraz od 1.5.0-rc.0 przed 1.5.3.
- CVE-2026-66829Średnie
Podatność typu Open Redirect w bibliotece html_sanitize_ex (komponent HTML5 scrubber) pozwala zdalnemu atakującemu przekierować odwiedzających stronę na wybrany przez siebie adres URL za pomocą elementu <meta http-equiv="refresh"> w przefiltrowanym HTML. Biblioteka zachowuje elementy <meta> dostarczone przez atakującego, co umożliwia również deklarowanie dyrektyw całostronicowych, takich jak Content-Security-Policy. Problem dotyczy wersji od 0.3.1 do przed 1.4.5 oraz od 1.5.0-rc.0 do przed 1.5.3.
- CVE-2026-66370Średnie
Podatność polegająca na otwartym przekierowaniu URL w skruberze HTML5 w html_sanitize_ex pozwala nieuwierzytelnionemu zdalnemu atakującemu na przekierowanie formularza już znajdującego się na renderowanej stronie i przechwycenie tego, co ofiara wyśle, w tym danych uwierzytelniających, poprzez atrybuty form i formaction na elemencie <input> w oczyszczonym HTML. Atrybut form HTML kojarzy input z dowolnym formularzem na stronie po jego id, nawet jeśli input znajduje się poza tym formularzem, a formaction na elemencie submit nadpisuje akcję formularza. Żaden z tych atrybutów nie jest sprawdzany pod kątem schematu, więc absolutny URL cross-origin przechodzi przez sanityzację. Nie wykonuje się żaden skrypt. Skruber nie pozwala na form ani button, więc atakujący nie może wprowadzić własnego formularza, a strona renderująca musi już zawierać formularz z id. Problem dotyczy html_sanitize_ex od 0.3.1 przed 1.4.5 oraz od 1.5.0-rc.0 przed 1.5.3.
Oryginalny opis (angielski, źródło NVD)
Inefficient Algorithmic Complexity vulnerability in the traversal engine in rrrene html_sanitize_ex allows an unauthenticated remote attacker to exhaust server CPU and memory via a flat run of sibling elements in sanitized HTML. The list clause of HtmlSanitizeEx.Traverser.traverse/2 recurses on the tail of a sibling list and then evaluates List.flatten([head] ++ tail) over the already flattened result, so every one of n siblings copies and re-walks the entire remaining tail. The flattening is only needed for the rare case where scrub returns several replacement nodes for one node, but the cost is paid across the whole tail at every step, making traversal quadratic in sibling count. The traverser sits on every public entry point, so no particular scrubber or configuration is required and the payload needs only allowed tags. A 160 KB body of 20,000 sibling elements occupies a scheduler for roughly 1.7 seconds, and the cost grows faster than the body does. This issue affects html_sanitize_ex: from 0.3.1 before 1.4.5 and from 1.5.0-rc.0 before 1.5.3.

