CVE-2026-83615
WysokieCVSS 8.7Streszczenie
xmldom to moduł JavaScript implementujący DOMParser i XMLSerializer. Przed wersjami 0.8.15 i 0.9.12 oraz w xmldom 0.1.5-0.6.0, appendElement w lib/sax.js klonuje całą mapę przestrzeni nazw dla każdego zagnieżdżonego elementu, co prowadzi do kwadratowego zużycia pamięci. Mały dokument XML może wyczerpać pamięć procesu. Problem naprawiono w wersjach 0.8.15 i 0.9.12; dla xmldom brak poprawki.
Ocena ryzyka
Atakujący może spowodować odmowę usługi (DoS) poprzez wysłanie małego dokumentu XML, który wyczerpie pamięć procesu, co może wpłynąć na dostępność aplikacji.
Rekomendacja
Zaleca się aktualizację @xmldom/xmldom do wersji 0.8.15 lub 0.9.12; jeśli używany jest xmldom, należy rozważyć migrację do @xmldom/xmldom.
Inne podatności w @xmldom/xmldom
Zobacz wszystkie- CVE-2026-83619Wysokie
xmldom to moduł JavaScript implementujący DOMParser i XMLSerializer. W wersjach od 0.7.0 do 0.8.15 parser w lib/sax.js używa niezakotwiczonego wyrażenia globalnego do przycinania nazw tagów końcowych, co prowadzi do kwadratowego cofania się przy długich ciągach białych znaków. Mały nieuwierzytelniony dokument XML może zablokować pętlę zdarzeń Node.js. Problem naprawiono w wersji 0.8.15.
- CVE-2026-83618Wysokie
xmldom to moduł JavaScript implementujący DOMParser i XMLSerializer. W wersjach od 0.9.10 do 0.9.12 walidacja DocumentType.publicId i systemId przy użyciu wyrażeń z flagą multiline pozwala na obejście sprawdzania poprawności i wstrzyknięcie znaczników do deklaracji <!DOCTYPE>. Problem naprawiono w wersji 0.9.12.
- CVE-2026-83617Wysokie
xmldom to moduł JavaScript implementujący DOMParser i XMLSerializer. W wersjach od 0.9.11 do 0.9.12 sprawdzanie nazw elementów i atrybutów przy użyciu wyrażenia QName_exact z flagą multiline pozwala na obejście walidacji i wstrzyknięcie znaczników do nazw elementów lub atrybutów. Problem naprawiono w wersji 0.9.12.
- CVE-2026-83616Wysokie
xmldom to moduł JavaScript implementujący DOMParser i XMLSerializer. Przed wersjami 0.8.15 i 0.9.12 oraz w xmldom 0.6.0 i starszych, Document.createProcessingInstruction() akceptuje niezwalidowany target, co pozwala na wstrzyknięcie struktury XML przez złamanie granicy instrukcji przetwarzania. Problem naprawiono w wersjach 0.8.15 i 0.9.12; dla xmldom brak poprawki.
- CVE-2026-83614Wysokie
xmldom to moduł JavaScript implementujący DOMParser i XMLSerializer. Przed wersjami 0.8.15 i 0.9.12 oraz w xmldom 0.3.0-0.6.0, dwie niezależne ścieżki kwadratowe mogą powodować odmowę usługi: parseElementStartPart wielokrotnie skanuje uszkodzoną nazwę tagu, a normalize() wielokrotnie usuwa i dodaje sąsiednie węzły tekstowe. Problem naprawiono w wersjach 0.8.15 i 0.9.12; dla xmldom brak poprawki.
- CVE-2026-83613Wysokie
xmldom to moduł JavaScript implementujący DOMParser i XMLSerializer. Przed wersjami 0.8.15 i 0.9.12 oraz w xmldom 0.6.0 i starszych, DOMHandler.startElement wstawia każdy atrybut przez setAttributeNode, a NamedNodeMap.setNamedItem wykonuje liniowe wyszukiwanie, co prowadzi do kwadratowej złożoności przy wielu atrybutach. Mały dokument XML może zablokować pętlę zdarzeń Node.js. Problem naprawiono w wersjach 0.8.15 i 0.9.12; dla xmldom brak poprawki.
- CVE-2026-83612Wysokie
xmldom to moduł JavaScript implementujący DOMParser i XMLSerializer. W wersjach od 0.9.0-beta.1 do 0.9.12, parsowanie w trybie HTML przez DOMParser.parseFromString() nieprawidłowo obsługuje zamykające tagi o mieszanej wielkości liter dla elementów script, style, textarea i title. Prowadzi to do niestabilnego działania parsera i kwadratowej amplifikacji wyjścia. Mały dokument text/html może zużyć nadmierne CPU i pamięć. Problem naprawiono w wersji 0.9.12.
- CVE-2026-41675Wysokie
Biblioteka @xmldom/xmldom przed wersjami 0.9.10 i 0.8.13 oraz xmldom w wersji 0.6.0 i starszych nie waliduje danych instrukcji przetwarzania, co pozwala atakującemu na wstrzyknięcie sekwencji zamykającej ?> i dodanie dowolnych węzłów XML do wynikowego dokumentu.
- CVE-2026-41673Wysokie
W bibliotece @xmldom/xmldom przed wersjami 0.9.10 i 0.8.13 oraz w xmldom 0.6.0 i starszych, siedem rekurencyjnych przejść w pliku lib/dom.js działa bez ograniczenia głębokości. Zbyt głęboko zagnieżdżone drzewo DOM powoduje błąd RangeError: przekroczenie maksymalnego rozmiaru stosu wywołań, co prowadzi do awarii aplikacji.
Oryginalny opis (angielski, źródło NVD)
xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. Prior to @xmldom/xmldom versions 0.8.15 and 0.9.12, and in xmldom versions 0.1.5 through 0.6.0, appendElement in lib/sax.js uses _copy to clone the complete currentNSMap for each nested element that declares a new namespace prefix. Keeping every ancestor map live on the parse stack creates quadratic peak namespace-map storage, so a small highly compressible XML document can exhaust the process heap before application validation. This issue is fixed in @xmldom/xmldom versions 0.8.15 and 0.9.12; no fixed version is available for xmldom.

