CVE-2026-83618
WysokieCVSS 8.7Streszczenie
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.
Ocena ryzyka
Podatność umożliwia wstrzyknięcie XML, co może prowadzić do nieautoryzowanej modyfikacji dokumentów XML lub ataków typu XXE, jeśli dane są przetwarzane w niebezpieczny sposób.
Rekomendacja
Zaleca się aktualizację @xmldom/xmldom do wersji 0.9.12 lub nowszej, która zawiera poprawkę.
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-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-83615Wysokie
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.
- 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. From 0.9.10 until 0.9.12, the requireWellFormed: true serializer validates DocumentType.publicId and DocumentType.systemId with PubidLiteral_match and SystemLiteral_match expressions produced by reg() in lib/grammar.js, which inherit the multiline flag. A complete valid literal on the first line can therefore satisfy the matcher while U+000A, U+000D, U+2028, or U+2029 and breakout markup remain in the emitted <!DOCTYPE ...> declaration. This bypasses the strict-serialization mitigation for the earlier DocumentType injection advisory; creation and direct property assignment remain unvalidated by design. This issue is fixed in @xmldom/xmldom version 0.9.12.

