Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSupply malicious string as DOCTYPE name via external input
-
DeliveryPass name to createDocumentType() or assign to DocumentType.name
-
ExploitInvoke XMLSerializer.serializeToString()
-
Execution'>' in name prematurely closes DOCTYPE declaration
-
PersistInjected sibling markup present in serialized output
-
ImpactDownstream parser or renderer processes 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 that attacker-controlled data reaches the DocumentType.name field - via createDocumentType() (accessible on the 0.8.x and unscoped xmldom lines) or via direct DocumentType.name property assignment (on every affected version) - and that the document is subsequently serialized. On the @xmldom/xmldom scoped package, the documented vulnerable code path is XMLSerializer.serializeToString() with requireWellFormed: true, where validation of name is absent while sibling fields are checked; the default serialization path also emits DocumentType.name verbatim since no validation exists there either, making both paths susceptible when untrusted input is present. On the legacy unscoped xmldom package, all serialization paths are affected and no fix is available. Applications that hardcode or derive the DOCTYPE name from internal data are not at risk. Authentication requirements are not constrainable at the library level - they depend entirely on the calling application's access controls over the XML processing endpoint. |
| 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 scenario where attacker-controlled data flows directly into DocumentType.name without sanitization - plausible in XML processing pipelines or API endpoints that accept and re-serialize external documents. Real-world exploitability is gated entirely on whether the calling application passes untrusted values as the DOCTYPE name; applications that derive the name from internal, controlled data face negligible risk. No EPSS score is present in the input, so exploitation probability cannot be quantified numerically. The absence of a CISA KEV entry and lack of identified public proof-of-concept code suggest no widespread opportunistic exploitation at time of analysis, though the advisory and fix commits are now fully public, reducing the barrier to exploit development. The legacy unscoped xmldom package represents a permanent residual exposure for teams that cannot migrate to the maintained scoped package. Given the straightforward root cause - a single missing validation call - post-disclosure exploit development should be assumed in the near term, making patching or migration the appropriate response for any team using xmldom in an externally-facing XML processing role. |
| Exploit ScenarioDerived | An attacker submits an API request or document where a DOCTYPE name field contains a crafted value such as 'legit><injected-element/><!--', which the application passes without sanitization to createDocumentType() or assigns to DocumentType.name. When XMLSerializer.serializeToString() is called, the '>' terminates the DOCTYPE declaration early and the injected markup appears as a sibling node in the serialized output. If that output is forwarded to a downstream XML parser, XSLT processor, or rendered in a browser context trusting the serializer's output, the injected nodes may be interpreted, enabling content injection or trust boundary violations between systems. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
XML injection in the xmldom serializer allows a crafted DocumentType.name containing '>' or whitespace to prematurely close the <!DOCTYPE ...> declaration and inject arbitrary sibling markup into serialized XML output. The gap exists because XMLSerializer.serializeToString() under requireWellFormed: true validates publicId, systemId, and internalSubset but emits DocumentType.name verbatim, violating the XML Name production consistently enforced for the other fields. Affected packages are @xmldom/xmldom prior to 0.8.15 and 0.9.12, and all versions of the legacy unscoped xmldom (0.6.0 and earlier) for which no vendor-released fix will be issued; no public exploit code or CISA KEV listing has been identified at time of analysis.
RemediationAI
Upgrade @xmldom/xmldom to version 0.8.15 (0.8.x line) or 0.9.12 (0.9.x line), available at https://github.com/xmldom/xmldom/releases/tag/0.8.15 and https://github.com/xmldom/xmldom/releases/tag/0.9.12, corresponding to fix commits 57aec90ac57b4408ae7c5d1746bf2a693b5ed90e and 85f12eb4d14b44de33216cfb72b50af4d24e9fdd. For users of the legacy unscoped xmldom package, no vendor-released patch exists; migration to the maintained @xmldom/xmldom scoped package is the recommended remediation. If immediate migration is not feasible, apply input validation at the application boundary: reject any value intended for DocumentType.name that contains '>', '<', whitespace, or characters outside the XML Name character set before passing it to createDocumentType() or assigning it to the property - note that this compensating control must be implemented in calling application code and is not enforced by the library itself. Avoid constructing DocumentType nodes from untrusted external input in serialization pipelines.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
xmldom is a pure JavaScript implementation of the W3C DOM Level 2 Core specification, widely used in Node.js environments for XML parsing and serialization. The vulnerability (CWE-91, XML Injection) resides in the DOCUMENT_TYPE_NODE serialization branch of lib/dom.js: the requireWellFormed: true code path in XMLSerializer.serializeToString() validates publicId, systemId, and internalSubset against the XML PubidLiteral and SystemLiteral productions, but writes DocumentType.name directly into the <!DOCTYPE name ...> output string without verifying it conforms to the XML Name production. The XML Name production prohibits '>', '<', and whitespace; embedding these characters allows early termination of the DOCTYPE token and injection of sibling nodes into the output stream. The injection surface is reachable via createDocumentType() on the 0.8.x and unscoped xmldom lines, and via direct DocumentType.name property assignment on every affected version. Affected CPEs are cpe:2.3:a:xmldom:xmldom (legacy unscoped package) and cpe:2.3:a:@xmldom:xmldom (maintained scoped package, pre-0.8.15 and pre-0.9.12).
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-reachable via untrusted DocumentType.name input; integrity-only impact on serialized output; no authentication required on the injection path itself.
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. Prior to @xmldom/xmldom versions 0.8.15 and 0.9.12, and in xmldom version 0.6.0 and earlier, the DOCUMENT_TYPE_NODE branch in lib/dom.js validates publicId, systemId, and internalSubset under requireWellFormed: true but emits DocumentType.name verbatim. A name containing > or whitespace can terminate the <!DOCTYPE ...> declaration and inject sibling markup; the value can be supplied through createDocumentType() on the 0.8.x and unscoped lines or through a direct DocumentType.name property write on every affected line. The default path and legacy creation-time behavior remain permissive, while the vulnerable strict path fails to enforce an XML Name. This issue is fixed in @xmldom/xmldom versions 0.8.15 and 0.9.12; no fixed version is available for xmldom.
Blast Radius
ecosystem impact- 16 npm packages depend on @xmldom/xmldom (9 direct, 7 indirect)
- 2,004 npm packages depend on xmldom (861 direct, 1,169 indirect)
Ecosystem-wide dependent count for version 0.7.0 and other introduced versions.
Technical POC Analysis
Advisory: GHSA-27p8-2357-5qqv (CWE-91, CVSS v4 8.7 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A critical XML injection vulnerability in xmldom serializer allows attackers to inject arbitrary XML markup into serialized output by crafting malicious DocumentType declarations, with no public exploit identified at time of analysis. Organizations using @xmldom/xmldom (versions prior to 0.8.15 and 0.9.12) or legacy xmldom (0.6.0 and earlier) face risks of data tampering and compromise of downstream XML-consuming systems. Legacy xmldom has no vendor patch forthcoming, requiring urgent dependency remediation.
Vendor-released patches available for @xmldom/xmldom: upgrade to version 0.8.15 or 0.9.12+. For legacy xmldom (0.6.0 and earlier), no vendor patch is forthcoming; interim mitigations include implementing strict input validation on DocumentType declarations before serialization, restricting XML processing operations to network-isolated environments, disabling DocumentType serialization where not functionally required, and prioritizing migration to an actively maintained XML library.
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 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
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 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-69219
GHSA-27p8-2357-5qqv
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB