Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply element/attribute name with embedded line terminator
-
DeliveryBypass multiline QName_exact regex validation
-
ExploitcreateElementNS/createAttributeNS accepts malformed name
-
ExecutionXMLSerializer emits injected markup verbatim
-
PersistDownstream consumer parses attacker-controlled XML structure
-
ImpactIntegrity of serialized document compromised
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization XPath query parameterization
|
| Exploitation Conditions | Exploitation requires that attacker-controlled data reaches one of four specific DOM creation APIs: createElementNS, createAttributeNS, createDocumentType, or createAttribute. The attacker-supplied name must contain at least one ECMAScript line terminator - LF (U+000A), CR (U+000D), LINE SEPARATOR (U+2028), or PARAGRAPH SEPARATOR (U+2029) - followed by the injected XML payload. Both the default serialization path and requireWellFormed: true are vulnerable in affected versions. Applications that only parse fixed or fully-trusted XML and never construct element or attribute names from external input are not exploitable. The CVSS vector AV:N/AC:L/PR:N/UI:N indicates no authentication, no special network position, and no user interaction are required when the vulnerable APIs are reachable from external input. |
| Impact | The CVSS 4.0 base score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N) correctly reflects that no authentication, no special network position, and no attack prerequisites beyond API reachability are needed. Real-world exploitability is context-dependent: only applications that build XML element or attribute names from attacker-controlled input are at risk; those that only parse static or trusted XML are not meaningfully exposed. The impact is strictly integrity-only - confidentiality and availability are unaffected. No CISA KEV listing and no POC were identified at time of analysis, so active exploitation is not confirmed. EPSS data is absent from the provided intelligence. Despite the absence of confirmed exploitation, applications using xmldom to construct SAML assertions, SOAP envelopes, signed XML, or any output consumed by downstream systems should treat this as a high-priority patch: the zero-prerequisite CVSS vector and the breadth of xmldom's npm install base represent meaningful exposure if exploitation techniques become public. |
| Exploit ScenarioDerived | An attacker sends an HTTP request to a Node.js application that constructs XML using xmldom with a user-supplied element name such as 'validName ></validName><injected>' - the embedded LF causes the multiline QName regex to accept 'validName' as valid while ignoring the trailing injection. When the application serializes and forwards the resulting document, for example as a SAML assertion or a SOAP request body, the injected markup appears verbatim in the output and can alter document structure, bypass downstream schema validation, or poison a security-sensitive XML consumer. No public POC has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
XML injection in @xmldom/xmldom 0.9.0-0.9.11 allows an attacker to embed malicious markup into serialized XML output by supplying element or attribute names containing ECMAScript line terminators (U+000A, U+000D, U+2028, U+2029). The QName_exact regex in lib/grammar.js is compiled with JavaScript's multiline flag, causing the ^ and $ anchors to match per-line rather than over the full string - a name whose first line is a valid QName passes validation while subsequent lines carry injected markup, bypassing both the default serialization path and requireWellFormed: true. No public exploit has been identified at time of analysis, but the CVSS 4.0 score of 8.7 with no prerequisites reflects the high-integrity impact when an application passes attacker-controlled input to createElementNS, createAttributeNS, createDocumentType, or createAttribute.
RemediationAI
Upgrade @xmldom/xmldom to version 0.9.12, released at https://github.com/xmldom/xmldom/releases/tag/0.9.12 (commit 7b2ec67e1750daadd0bb06c92e875e726544a362), which removes the multiline flag from the QName_exact regex and adds InvalidCharacterError rejection for names containing ECMAScript line terminators at creation time in createElementNS, createAttributeNS, createDocumentType, and createAttribute, and InvalidStateError rejection in the requireWellFormed: true serialization path. If an immediate upgrade is not feasible, apply input sanitization to strip or reject all four ECMAScript line terminators - U+000A, U+000D, U+2028, and U+2029 - from any string supplied to those four APIs before it reaches xmldom; note that U+2028 and U+2029 are non-printing and will bypass filters that only scan for ASCII newlines, so the sanitization must be Unicode-aware. Application-level sanitization is a fragile compensating control because it must cover every call site; upgrading the library is strongly preferred.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
xmldom (npm package @xmldom/xmldom) is a pure-JavaScript implementation of the W3C DOM Level 2 Core standard providing DOMParser and XMLSerializer for Node.js and browser environments (CPE: cpe:2.3:a:xmldom:xmldom:*). The root cause, CWE-91 (XML Injection), resides in lib/grammar.js where the reg() builder compiles the QName_exact validator with the JavaScript /m multiline flag. In multiline mode, regex anchors ^ and $ no longer bind to the start and end of the complete input string - they bind at each embedded newline boundary recognised by the ECMAScript engine: LF (U+000A), CR (U+000D), LINE SEPARATOR (U+2028), and PARAGRAPH SEPARATOR (U+2029). A supplied name containing one of these terminators is split into logical lines by the regex engine; the validator confirms only that the first line satisfies the QName production and ignores everything after the terminator. The result is that createElementNS, createAttributeNS, createDocumentType, and createAttribute all silently accept names whose trailing content is raw XML markup, which XMLSerializer later emits verbatim into the document stream.
Know when Xmldom gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
No auth or complexity needed; S:C because injected markup in serialized output directly affects integrity of downstream systems consuming the XML.
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
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.
Blast Radius
ecosystem impact- 4 npm packages depend on @xmldom/xmldom (4 direct, 0 indirect)
Ecosystem-wide dependent count for version 0.9.0.
Technical POC Analysis
CWE-91 (XML Injection); the advisory also assigns CWE-625 (Permissive Regular Expression).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity XML injection vulnerability (CVSS 8.7) affecting @xmldom/xmldom versions 0.9.0-0.9.11, with no public exploit identified at time of analysis, allows unauthenticated attackers to inject malicious markup into serialized XML output by exploiting line-terminator characters in element and attribute names. Organizations using this library in applications that process untrusted XML input face significant data integrity risks, with no vendor patch currently available. Immediate inventory and remediation planning are required.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Implement strict input validation rejecting line terminators (U+000A, U+000D, U+2028, U+2029) in XML element and attribute names; (2) Apply Web Application Firewall rules detecting XML injection patterns; (3) Disable or restrict application features that serialize user-controlled XML data; (4) Evaluate alternative XML parsing libraries while awaiting vendor patch availability.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) `DOMParser` and `XMLSerializer` module. Rated crit
XML injection via EntityReference in xmldom enables attacker-controlled XML markup to escape entity-reference boundaries
A prototype pollution vulnerability exists in the function copy in dom.js in the xmldom (published as @xmldom/xmldom) pa
Quadratic namespace-map allocation in xmldom's SAX parser allows unauthenticated remote attackers to exhaust the Node.js
Two independent quadratic-complexity denial-of-service paths in the xmldom JavaScript XML parser allow remote unauthenti
Processing-instruction target injection in the @xmldom/xmldom JavaScript library allows XML structure breakout through u
XML injection in the xmldom serializer allows a crafted DocumentType.name containing '>' or whitespace to prematurely cl
XML injection and cross-site scripting in the xmldom JavaScript library allows attacker-controlled tag names to be injec
XML injection in the xmldom JavaScript library allows crafted attribute names to break out of attribute context during s
Quadratic attribute-processing complexity in xmldom's DOMParser enables remote unauthenticated denial of service against
XML injection in @xmldom/xmldom versions 0.9.10 and 0.9.11 bypasses the requireWellFormed serializer's DocumentType vali
XML injection in @xmldom/xmldom 0.9.11 allows attackers who supply crafted element or attribute names containing ECMAScr
Same weakness CWE-91 – XML Injection (aka Blind XPath Injection)
View allSame technique Code Injection
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| SUSE Linux Enterprise Desktop 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Module for Python 3 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP7 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP7 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Module for Python 3 15 SP6 | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Server 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP4-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP5 | Affected |
| SUSE Linux Enterprise Server 15 SP5-LTSS | Affected |
| SUSE Linux Enterprise Server 15 SP6 | Affected |
| SUSE Linux Enterprise Server 15 SP6-LTSS | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP4 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP5 | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP6 | Not-Affected |
| SUSE CaaS Platform 4.0 | Not-Affected |
| SUSE Enterprise Storage 6 | Not-Affected |
| SUSE Enterprise Storage 7 | Not-Affected |
| SUSE Enterprise Storage 7.1 | Affected |
| SUSE Linux Enterprise Desktop 15 SP6 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1-ESPOS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP1-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2 | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-ESPOS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP2-LTSS | Not-Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP3-LTSS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4 | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP4-ESPOS | Affected |
| SUSE Linux Enterprise High Performance Computing 15 SP5-ESPOS | Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Module for Server Applications 15 SP3 | Affected |
| SUSE Linux Enterprise Real Time 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Real Time 15 SP3 | Affected |
| SUSE Linux Enterprise Real Time 15 SP4 | Affected |
| SUSE Linux Enterprise Server 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP1-BCL | Not-Affected |
| SUSE Linux Enterprise Server 15 SP1-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2-BCL | Not-Affected |
| SUSE Linux Enterprise Server 15 SP2-LTSS | Not-Affected |
| SUSE Linux Enterprise Server 15 SP3 | Affected |
| SUSE Linux Enterprise Server 15 SP3-BCL | Affected |
| SUSE Linux Enterprise Server 15 SP3-LTSS | Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP1 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP2 | Not-Affected |
| SUSE Linux Enterprise Server for SAP Applications 15 SP3 | Affected |
| SUSE Manager Proxy 4.0 | Not-Affected |
| SUSE Manager Proxy 4.1 | Not-Affected |
| SUSE Manager Proxy 4.2 | Affected |
| SUSE Manager Proxy 4.3 | Affected |
| SUSE Manager Proxy LTS 4.3 | Affected |
| SUSE Manager Retail Branch Server 4.0 | Not-Affected |
| SUSE Manager Retail Branch Server 4.1 | Not-Affected |
| SUSE Manager Retail Branch Server 4.2 | Affected |
| SUSE Manager Retail Branch Server 4.3 | Affected |
| SUSE Manager Retail Branch Server LTS 4.3 | Affected |
| SUSE Manager Server 4.0 | Not-Affected |
| SUSE Manager Server 4.1 | Not-Affected |
| SUSE Manager Server 4.2 | Affected |
| SUSE Manager Server 4.3 | Affected |
| SUSE Manager Server LTS 4.3 | Affected |
| openSUSE Leap 15.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Not-Affected |
EUVD-2026-69220
GHSA-3px3-54cx-rmw9
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB