CVE-2026-65902
ŚrednieCVSS 6.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 29 - wyżej niż 29% wszystkich znanych CVE
Streszczenie
DOMPurify przed wersją 3.4.7 przekazuje bezpośrednie referencje do modułowych zbiorów DEFAULT_ALLOWED_TAGS i DEFAULT_ALLOWED_ATTR do hooków uponSanitizeElement i uponSanitizeAttribute, gdy sanitize jest wywoływane bez jawnej konfiguracji. Hook modyfikujący te pola trwale rozszerza domyślne listy dozwolonych elementów dla całego czasu życia instancji DOMPurify, przez co kolejne wywołania sanitize dziedziczą rozszerzone domyślne ustawienia.
Ocena ryzyka
Atakujący może wykorzystać zatrute nazwy tagów lub atrybutów, które przetrwają sanityzację, prowadząc do XSS w aplikacjach używających DOMPurify z domyślną konfiguracją. Ryzyko utrzymuje się do momentu utworzenia nowej instancji DOMPurify.
Rekomendacja
Zaktualizuj DOMPurify do wersji 3.4.7 lub nowszej. Unikaj hooków modyfikujących data.allowedTags i data.allowedAttributes; w razie potrzeby twórz nowe instancje DOMPurify.
Inne podatności w DOMPurify
Zobacz wszystkie- CVE-2026-116804Średnie
DOMPurify od wersji 3.4.4 przed 3.4.17 zawiera obejście SAFE_FOR_TEMPLATES, które pozwala atakującym zachować wyrażenia szablonów w dołączonych shadow rootach podczas korzystania z trybów RETURN_DOM, RETURN_DOM_FRAGMENT lub IN_PLACE. Atakujący mogą podzielić wyrażenia na węzły tekstowe oddzielone niedozwolonymi elementami, które łączą się po usunięciu i są oceniane przez downstreamowe silniki szablonów, prowadząc do cross-site scripting.
- CVE-2026-116803Średnie
DOMPurify w wersjach przed 3.4.17 zawiera podatność typu cross-site scripting, która pozwala atakującym zachować aktywne event handlery, gdy hook IN_PLACE usuwa węzeł nadrzędny lub sąsiedni. Znaczniki atakującego w odłączonych poddrzewach nie są przetwarzane ani neutralizowane, więc handlery takie jak img onerror uruchamiają się po zakończeniu sanitize(), powodując DOM XSS.
- CVE-2026-116802Średnie
DOMPurify w wersjach przed 3.4.17 zawiera podatność typu cross-site scripting pozwalającą obejść zabezpieczenie SMIL attributeName=href, gdy PARSER_MEDIA_TYPE ma wartość application/xhtml+xml, ponieważ transformCaseFunc nie zamienia nazw atrybutów na małe litery. Atakujący może przesłać SVG z elementem animate lub set używającym attributeName="href" oraz wpisu javascript: w values, aby wykonać skrypt po kliknięciu przez użytkownika zsanityzowanego linku.
- CVE-2026-109345Średnie
DOMPurify przed wersją 3.4.16 zawiera podatność na cross-site scripting, która pozwala atakującym ominąć sanityzację, ponieważ tryb IN_PLACE zwraca wymuszony usunięty element style, którego zawartość tekstowa nadal zawiera znaczniki. Atakujący mogą dostarczyć element style zawierający zamykający tag style i payload img onerror, który wykonuje skrypt, gdy aplikacja serializuje i ponownie parsuje zwrócony węzeł.
- CVE-2026-109344Średnie
DOMPurify od wersji 3.4.13 przed 3.4.16 zawiera podatność na cross-site scripting, ponieważ tryb IN_PLACE nie neutralizuje poddrzew odłączonych przez hooki afterSanitizeElements lub afterSanitizeAttributes. Atakujący mogą dostarczyć znaczniki z handlerami on* wewnątrz wrappera usuniętego przez takie hooki, pozostawiając handlery aktywne na żywym DOM, aby wykonać skrypt w kontekście ofiary.
- CVE-2026-75838Średnie
DOMPurify przed wersją 3.4.13 zawiera podatność na cross-site scripting w sanityzacji IN_PLACE, gdzie haki usuwania elementów nie neutralizują odłączonych poddrzew. Atakujący mogą dostarczyć HTML z handlerami zdarzeń na elementach potomnych, które wykonują się po zakończeniu sanityzacji, mimo że zwrócony korzeń wygląda na czysty.
- CVE-2026-66010Średnie
DOMPurify przed wersją 3.4.12 nie wykonuje haka afterSanitizeElements dla elementów niestandardowych dozwolonych przez CUSTOM_ELEMENT_HANDLING.tagNameCheck, co pozwala atrybutom ominąć polityki bezpieczeństwa aplikacji. Atakujący mogą zachować wrażliwe atrybuty na elementach niestandardowych, które później ponownie wstrzykują je do zlewów innerHTML, tworząc drugorzędne gadżety XSS.
- CVE-2026-65914Średnie
DOMPurify przed wersją 3.3.2 zawiera podatność na mutacyjne XSS, gdy oczyszczony HTML jest ponownie wstawiany do specjalnych kontekstów parsowania za pomocą innerHTML z wrapperami takimi jak script, xmp, iframe, noembed, noframes lub noscript. Atakujący mogą stworzyć ładunki z sekwencjami zamykającymi, które wychodzą poza kontekst wrappera podczas ponownego parsowania, reaktywując niebezpieczny kod z obsługą zdarzeń w celu wykonania JavaScript.
- CVE-2026-65913Średnie
DOMPurify przed wersją 3.3.2 zawiera podatność na zatruwanie prototypu w trybie USE_PROFILES. Atakujący może ustawić właściwości prototypu Array.prototype, takie jak onclick, na true, co powoduje, że DOMPurify akceptuje procedury obsługi zdarzeń jako dozwolone atrybuty, prowadząc do XSS opartego na DOM.
- CVE-2026-65912Średnie
DOMPurify przed wersją 3.3.2 zawiera podatność na obejście walidacji URI, gdy ADD_ATTR jest dostarczane jako funkcja predykatu przez EXTRA_ELEMENT_HANDLING.attributeCheck. Atakujący może dostarczyć predykat akceptujący określone kombinacje atrybutów i tagów, aby ominąć walidację bezpiecznych URI, umożliwiając niebezpieczne protokoły, takie jak javascript:, co prowadzi do XSS opartego na DOM.
Oryginalny opis (angielski, źródło NVD)
DOMPurify before 3.4.7 passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called without an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array. A hook that mutates these fields permanently widens the default allow-lists for the lifetime of the DOMPurify instance, so all subsequent default-config sanitize calls inherit the widened defaults and attacker payloads using the poisoned tag/attribute name survive sanitization. removeAllHooks(), clearConfig(), and passing a fresh cfg do not recover the state; only constructing a new DOMPurify instance does.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

