CVE-2026-83609
HighCVSS 8.7Exploitation Probability (EPSS)
Low risk25th percentile - higher than 25% of all known CVEs
Summary
In xmldom versions 0.9.0 through 0.9.11, the QName_exact validator uses the multiline flag, accepting malformed XML names containing line terminators. This can lead to markup injection during serialization.
Risk Assessment
An attacker can supply a crafted name that, when serialized, may inject malicious XML/HTML, potentially leading to XSS attacks in a browser.
Recommendation
Update @xmldom/xmldom to version 0.9.12 or later.
Other vulnerabilities in xmldom
See all- CVE-2026-83611Medium
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 version 0.6.0 and earlier, DOMParser.parseFromString() can silently accept an end tag such as </a\njunk>, close the element, and discard the trailing content. On 0.9.x, the lib/sax.js end-tag validator inherits the multiline flag from reg(), allowing the first line to satisfy the anchored XML ETag production; older lines have no equivalent residue validation. This parser differential can bypass a parse-before-trust well-formedness gate, although it does not inject the discarded content; onError on 0.9.x and errorHandler on 0.8.x are the relevant reporting interfaces. This issue is fixed in @xmldom/xmldom versions 0.8.15 and 0.9.12; no fixed version is available for xmldom.
- CVE-2026-83610Medium
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 version 0.6.0 and earlier, Document.createEntityReference(name) accepts an invalid name and the ENTITY_REFERENCE_NODE serializer emits the resulting nodeName directly in &name; form. Directly serializing the node or fragment with XMLSerializer.serializeToString() and requireWellFormed: true can therefore break the entity-reference boundary and produce attacker-controlled XML markup when reparsed. The parser does not ordinarily create these nodes, and element-child insertion is rejected, so exploitation requires an application to create and directly serialize an EntityReference. This issue is fixed in @xmldom/xmldom versions 0.8.15 and 0.9.12; no fixed version is available for xmldom.
- CVE-2026-83608High
In xmldom before versions 0.8.15 and 0.9.12, and in version 0.6.0 and earlier, the DocumentType.name is not validated and can contain > or whitespace, allowing to break the DOCTYPE declaration and inject additional markup.
- CVE-2026-83607High
In xmldom before versions 0.8.14 and 0.9.11, and in version 0.6.0 and earlier, the element name in createElement is not validated, and XMLSerializer emits it verbatim. This can lead to injection of attributes, elements, or processing instructions into serialized XML/HTML.
- CVE-2026-83606High
In xmldom from version 0.9.0-beta.9 to 0.9.11, the expression used for parsing processing instructions can cause quadratic backtracking on long whitespace tails when the closing ?> is missing. This can stall the Node.js event loop.
- CVE-2026-83605High
In xmldom before versions 0.8.14 and 0.9.11, and in version 0.6.0 and earlier, Element.setAttribute() does not validate the attribute name, and XMLSerializer emits it verbatim. This can lead to injection of additional attributes, including event handlers.
- CVE-2026-41674High
Vulnerability in @xmldom/xmldom prior to versions 0.9.10 and 0.8.13 and xmldom version 0.6.0 and earlier. The package serializes DocumentType fields (internalSubset, publicId, systemId) without proper escaping, which can lead to premature termination of the DOCTYPE declaration and injection of arbitrary markup.
- CVE-2026-41672High
The vulnerability in the xmldom library allows an attacker to inject arbitrary XML nodes into serialized output via controlled comment content. Lack of validation of comment-breaking sequences enables premature comment termination and insertion of malicious XML code.
- CVE-2026-34601High
In xmldom versions 0.6.0 and prior and @xmldom/xmldom prior to 0.8.12 and 0.9.9, an attacker can insert a string containing the CDATA terminator ]]> into a CDATASection node. During serialization, XMLSerializer emitted the CDATA content verbatim without rejecting or safely splitting the terminator, enabling XML structure injection and downstream business-logic manipulation. The issue is patched in xmldom 0.6.0 and @xmldom/xmldom 0.8.12 and 0.9.9.
Original NVD description (English source)
xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module. From 0.9.0 until 0.9.12, the shared reg() builder in lib/grammar.js compiles the anchored QName_exact validator with the multiline flag, so ^ and $ validate only one line instead of the complete name. createElementNS, createAttributeNS, createDocumentType, and createAttribute consequently accept a malformed XML name whose first line is valid and whose later text injects markup when serialized through either the default path or requireWellFormed: true. The triggering ECMAScript line terminators are U+000A, U+000D, U+2028, and U+2029. This issue is fixed in @xmldom/xmldom version 0.9.12.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

