Biblioteka DOMPurify zawierała podatność typu mutation XSS (mXSS), umożliwiającą ominięcie mechanizmu sanityzacji HTML. Ze względu na maksymalny wynik CVSS (10.0) i brak wymagań dotyczących uwierzytelnienia, zagrożenie jest krytyczne dla wszystkich aplikacji webowych korzystających z tej biblioteki.
▸ Pokaż oryginał (EN)
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. DOMpurify was vulnerable to nesting-based mXSS. This vulnerability is fixed in 2.5.0 and 3.1.3.
Podatność wynika z nieprawidłowej obsługi zagnieżdżonych struktur znaczników HTML/MathML/SVG podczas procesu sanityzacji. Atakujący może dostarczyć specjalnie spreparowany ciąg HTML, który po przetworzeniu przez parser przeglądarki (mutacji DOM) zmienia swoją strukturę w taki sposób, że złośliwy kod XSS – początkowo uznany za bezpieczny przez DOMPurify – zostaje ostatecznie wyrenderowany w dokumencie. Mechanizm mXSS polega na tym, że serializacja i deserializacja drzewa DOM powoduje odtworzenie usuniętego lub zmodyfikowanego payloadu.
Udany atak pozwala atakującemu na wykonanie dowolnego kodu JavaScript w kontekście strony ofiary (XSS), co może prowadzić do kradzieży sesji, modyfikacji treści strony, a także do poważnych naruszeń integralności i dostępności aplikacji.
Należy zaktualizować DOMPurify do wersji 2.5.0 lub nowszej (dla gałęzi 2.x) albo do wersji 3.1.3 lub nowszej (dla gałęzi 3.x). Patche dostępne są w repozytorium projektu na GitHub.
DOMPurify (Cure53) w wersjach wcześniejszych niż 2.5.0 oraz wcześniejszych niż 3.1.3
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:HCure53 Dompurify
APPCure53< 2.5.03.0.0 – 3.1.3 (bez)
Powiązane podatności
Prototype pollution w bibliotece DOMPurify umożliwiający XSS
XSS w DOMPurify — bypass sanityzacji przez element <selectedcontent>
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It has been discove...
DOMPurify przed wersją 3.4.12 nie wykonuje hook'a afterSanitizeElements dla custom elements dozwolonych przez ...
DOMPurify before 3.4.11 fails to clone the ALLOWED_ATTR allowlist when setConfig() is used with an uponSanitiz...