CVE-2026-66843
ŚrednieCVSS 6.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 22 - wyżej niż 22% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wstrzyknąć złośliwe treści do zaufanych stron, co może prowadzić do kradzieży danych lub innych ataków, choć ograniczone przez mechanizmy przeglądarki.
Rekomendacja
Zaktualizuj html_sanitize_ex do wersji 1.4.5 lub 1.5.3 (w zależności od gałęzi), aby uzyskać poprawkę.
Inne podatności w html_sanitize_ex
Zobacz wszystkie- CVE-2026-68750Wysokie
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.
- 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-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)
Inclusion of Functionality from Untrusted Control Sphere vulnerability in the HTML5 scrubber in rrrene html_sanitize_ex allows a remote attacker to load a document of their choosing into a trusted page via the data attribute of an <object> element in sanitized HTML. object is the one URI-bearing element in lib/html_sanitize_ex/scrubber/html5.ex never registered through allow_tag_with_uri_attributes/3, and its only guard is a prefix match on lowercase "javascript:", so mixed-case variants, data: URIs, protocol-relative URLs and same-origin paths all survive. This is not unconditional cross-site scripting. A javascript: URL does not execute through <object data> in current browsers, data: documents load in an opaque origin, and host-origin script execution additionally requires the application to serve attacker-controlled content from a same-origin path. 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.

