Biblioteka xmldom (JavaScript) akceptuje nieprawidłowo zbudowany dokument XML zawierający wiele węzłów głównych (root nodes), dodając je wszystkie do kolekcji childNodes obiektu Document bez zgłaszania błędu. Jest to poważna podatność, ponieważ łamie fundamentalne założenie modelu DOM o istnieniu dokładnie jednego węzła głównego, co może prowadzić do podatności w aplikacjach zależnych.
▸ Pokaż oryginał (EN)
xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) `DOMParser` and `XMLSerializer` module. xmldom parses XML that is not well-formed because it contains multiple top level elements, and adds all root nodes to the `childNodes` collection of the `Document`, without reporting any error or throwing. This breaks the assumption that there is only a single root node in the tree, which led to issuance of CVE-2022-39299 as it is a potential issue for dependents. Update to @xmldom/xmldom@~0.7.7, @xmldom/xmldom@~0.8.4 (dist-tag latest) or @xmldom/xmldom@>=0.9.0-beta.4 (dist-tag next). As a workaround, please one of the following approaches depending on your use case: instead of searching for elements in the whole DOM, only search in the `documentElement`or reject a document with a document that has more then 1 `childNode`.
Biblioteka xmldom podczas parsowania dokumentu XML nie weryfikuje poprawnie, czy plik zawiera więcej niż jeden element najwyższego poziomu. Zamiast odrzucić taki dokument lub zgłosić błąd, parser dodaje wszystkie węzły główne do kolekcji childNodes obiektu Document. Aplikacje korzystające z xmldom zakładają, że istnieje tylko jeden węzeł główny — manipulacja tym założeniem przez atakującego może prowadzić do nieoczekiwanego zachowania logiki aplikacji, ominięcia walidacji lub weryfikacji (co powiązano z osobnym CVE-2022-39299).
Atakujący może dostarczyć spreparowany dokument XML, aby ominąć mechanizmy walidacji lub weryfikacji w aplikacjach korzystających z xmldom, potencjalnie prowadząc do naruszenia integralności danych, nieautoryzowanego dostępu lub odmowy dostępu do usługi.
Należy zaktualizować bibliotekę do wersji @xmldom/xmldom@~0.7.7, @xmldom/xmldom@~0.8.4 (dist-tag latest) lub @xmldom/xmldom@>=0.9.0-beta.4 (dist-tag next). Jako obejście (workaround) należy ograniczyć wyszukiwanie elementów wyłącznie do documentElement zamiast przeszukiwać cały DOM, lub odrzucać dokumenty zawierające więcej niż jeden childNode na poziomie Document.
@xmldom/xmldom w wersjach przed 0.7.7, przed 0.8.4 oraz przed 0.9.0-beta.4; a także pakiet xmldom projektu jindw oraz Debian Linux (pakiet z repozytorium LTS)
Podatność jest powiązana z CVE-2022-39299, które zostało wydane jako konsekwencja opisanego problemu w bibliotekach zależnych od xmldom.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:HDebian
OSDebian10.0Xmldom Project Xmldom
APPXmldom Project0.9.0< 0.6.00.7.0 – 0.7.7 (bez)0.8.0 – 0.8.4 (bez)
Powiązane podatności
GNU Inetutils telnetd: ominięcie uwierzytelnienia przez zmienną USER
Sudo: eskalacja uprawnień do root poprzez opcję --chroot (CVE-2025-32463)
RCE przez deserializację PHP w Roundcube Webmail (parametr _from)
Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)
Apple WebKit: out-of-bounds write umożliwiający ucieczkę z sandbox przeglądarki