Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconSupply DOCTYPE with line-terminator-embedded publicId/systemId
-
DeliverySubmit to xmldom-backed application
-
Exploitxmldom parses and retains malicious DocumentType
-
InstallApplication calls XMLSerializer with requireWellFormed: true
-
C2Multiline regex anchor bypassed, identifier passes validation
-
ExecuteBreakout markup emitted verbatim in <!DOCTYPE> output
-
ImpactDownstream XML consumer parses injected content
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 all three of the following conditions simultaneously: (1) the application uses @xmldom/xmldom version 0.9.10 or 0.9.11; (2) the application calls XMLSerializer.serializeToString() with the { requireWellFormed: true } option, relying on it as a sanitization boundary; and (3) a DocumentType node whose publicId or systemId value is at least partially attacker-controlled reaches the serializer - for example, by parsing untrusted XML that includes a DOCTYPE declaration. Applications that never call the serializer with requireWellFormed: true, that do not process attacker-supplied DOCTYPE nodes, or that run a version outside the 0.9.10-0.9.11 range are not affected by this specific bypass. An additional unvalidated creation-time path exists independently: direct assignment to DocumentType.publicId and DocumentType.systemId is unvalidated by design in all versions, meaning the serializer fix does not close injection via direct property manipulation. |
| Impact | The CVSS 4.0 score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VI:H) reflects a worst-case attack path where an application exposes the vulnerable serialization pipeline to untrusted input with no authentication gate. Real-world risk is narrower: exploitation requires the specific conjunction of an attacker-controlled DocumentType node, the requireWellFormed: true serializer option, and a downstream consumer that acts on the serialized output - applications that never use the strict-serialization path are not exposed by this specific bypass. EPSS data is absent from the source intelligence, so exploitation probability cannot be quantified; the vulnerability is not listed in the CISA KEV catalog, and no public exploit code has been identified, indicating no confirmed widespread exploitation at time of analysis. The integrity-only impact profile (VI:H, VC:N, VA:N) is consistent with XML injection: an attacker cannot directly exfiltrate data or cause crashes but can corrupt or inject into downstream XML pipelines, which carries meaningful trust-chain risk in document-processing architectures. The CVSS 4.0 base vector omits subsequent-system integrity impact (SI:N), which may understate risk in pipelines where the serialized output feeds a second XML parser or display layer. |
| Exploit ScenarioDerived | An attacker submits an XML document containing a DOCTYPE node whose publicId begins with a syntactically valid PubidLiteral on the first line - satisfying the multiline-anchored regex - followed by a newline character and breakout markup such as a closing bracket and injected element content. The consuming application parses the document with xmldom and re-serializes it using XMLSerializer with requireWellFormed: true, relying on that option to sanitize the output; the multiline regex bypass allows the injected content to pass validation and appear verbatim in the emitted <!DOCTYPE ...> declaration. A downstream XML parser, XSLT processor, or display layer that processes the serialized string then interprets the injected markup as legitimate document structure. |
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 versions 0.9.10 and 0.9.11 bypasses the requireWellFormed serializer's DocumentType validation due to a multiline-flag inheritance bug in the PubidLiteral and SystemLiteral regex matchers: a publicId or systemId whose first line is a valid literal passes the check while ECMAScript line terminators (U+000A, U+000D, U+2028, U+2029) and breakout markup on subsequent lines are emitted verbatim into the <!DOCTYPE ...> declaration. This is a bypass of the mitigation introduced for the earlier DocumentType injection advisory; applications that treat requireWellFormed: true as a serialization-time security boundary against DOCTYPE injection are directly exposed. No public exploit has been identified at time of analysis, and a vendor-released patch is available in version 0.9.12.
RemediationAI
Upgrade to @xmldom/xmldom version 0.9.12, which anchors the PubidLiteral and SystemLiteral regex patterns to the full string rather than per-line, closing the multiline bypass. The patched release is available at https://github.com/xmldom/xmldom/releases/tag/0.9.12; the fixing commit is https://github.com/xmldom/xmldom/commit/7b2ec67e1750daadd0bb06c92e875e726544a362. If an immediate upgrade is not feasible, applications can add a pre-serialization sanitization step that strips or rejects ECMAScript line terminators (U+000A, U+000D, U+2028, U+2029) from DocumentType.publicId and DocumentType.systemId values before calling XMLSerializer.serializeToString(); this reduces injection surface but is not a full substitute for the upstream fix, as direct property assignment remains unvalidated by design. Applications that do not invoke XMLSerializer with requireWellFormed: true as a security boundary are not directly exposed by this bypass but may still be affected by the unvalidated creation-time path.
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
The affected package is @xmldom/xmldom (CPE: cpe:2.3:a:xmldom:xmldom:*:*:*:*:*:*:*:*), a pure-JavaScript implementation of the W3C XML DOM Level 2 Core API used extensively in Node.js and browser environments. The root cause class is CWE-91 (XML Injection). The reg() helper in lib/grammar.js constructs regular expressions for grammar productions; these expressions inadvertently inherit the JavaScript RegExp multiline flag, causing the ^ and $ anchors to match at line boundaries rather than the absolute start and end of the full string. As a result, the PubidLiteral_match and SystemLiteral_match validators examine only the first line of a multi-line identifier - any content after the first line terminator is invisible to the pattern and passes the requireWellFormed guard. This is mechanically identical to the bypass class fixed for element- and attribute-name validators in the same 0.9.12 release (GHSA-jxjr-3g7g-3944), applied here to the DOCTYPE identifier path. Creation-time validation (via createDocumentType, createElementNS, etc.) and direct property assignment to DocumentType.publicId/systemId are unvalidated by design, representing an orthogonal but related attack surface.
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
Network attacker controls DOCTYPE content without authentication; scope changes because injected markup in serialized output corrupts downstream consumers; no confidentiality or availability impact applies.
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.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.
Technical POC Analysis
Bug class: CWE-91 (XML Injection), with the advisory also assigning CWE-625 (Permissive Regular Expression) - the permissive regex is the mechanism.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
@xmldom/xmldom versions 0.9.10 and 0.9.11 contain an XML injection vulnerability (CVSS 8.7) that circumvents DOCTYPE validation protections, leaving applications relying on serialization-time security controls exposed to markup injection attacks. This represents a bypass of previously-patched protections affecting systems processing potentially malicious XML input.
Apply vendor patch.
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
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 0.9.11 allows attackers who supply crafted element or attribute names containing ECMAScr
XML injection in @xmldom/xmldom 0.9.0-0.9.11 allows an attacker to embed malicious markup into serialized XML output by
Same weakness CWE-91 – XML Injection (aka Blind XPath 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-69244
GHSA-vr34-hp96-76pp
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB