CVE-2026-68747
ŚrednieCVSS 6.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 17 - wyżej niż 17% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może wstrzyknąć zewnętrzne arkusze stylów do stron, co może prowadzić do defacementu, kradzieży danych przez phishing lub innych ataków opartych na CSS, choć bez wykonywania skryptów.
Rekomendacja
Zaktualizuj html_sanitize_ex do wersji 1.4.5 lub 1.5.4 (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-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)
Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection') vulnerability in the CSS scrubber in rrrene html_sanitize_ex allows an unauthenticated remote attacker to inject CSS at-rules, including an import of a remote stylesheet, into a page served to other users. HtmlSanitizeEx.Scrubber.CSS.scrub/1 applies its property and value allowlist through a Regex.replace over substrings matching a property: value declaration pattern, so input that does not match that pattern is never inspected and is copied to the output unchanged. @import url(//attacker.example/style.css); survives, while the same URL inside a background: url(...) declaration is removed. Element boundaries are resolved before the scrubber runs, so injected content does not escape the <style> element and no script executes. This issue affects html_sanitize_ex: from 0.3.1 before 1.4.5 and from 1.5.0-rc.0 before 1.5.4.

