Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker supplies malicious PI target string via network input
-
DeliveryApplication passes string to Document.createProcessingInstruction() without validation
-
ExploitSerializer emits malformed <?target?> breaking XML PI boundary
-
ExecutionInjected XML structure embedded in serialized document output
-
PersistDownstream XML processor parses injected content as legitimate XML
-
ImpactTarget document integrity 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 the target argument to Document.createProcessingInstruction() originate from or be influenced by attacker-controlled input, and that the resulting DOM be subsequently serialized via XMLSerializer.serializeToString(). On @xmldom/xmldom 0.9.x, enabling requireWellFormed: true in the serializer provides partial protection - it rejects colons and the reserved 'xml' prefix - but does not reject >, ?, or whitespace characters in the target, leaving those injection vectors open even when this option is active. On @xmldom/xmldom 0.8.x and all versions of the legacy xmldom package, no validation occurs at any layer regardless of serializer options. Applications that determine PI targets exclusively from internal, trusted values are not exploitable. Whether authentication is required depends entirely on whether the vulnerable code path is reachable through an unauthenticated network endpoint, which is application-specific; the CVSS PR:N reflects the library-level assumption that no privilege is needed to supply input. |
| Impact | The source-provided CVSS 4.0 score of 8.7 (High) with AV:N/AC:L/AT:N/PR:N/UI:N reflects a worst-case scenario where an application passes untrusted user input directly to createProcessingInstruction(). In practice, real-world risk is strongly gated by application design: exploitation only occurs when the PI target derives from external input and the resulting DOM is serialized, a pattern that is specific rather than universal. VI:H (high integrity impact on the vulnerable system's output document) is credible; downstream XML processors consuming that output could also be affected, warranting SI:H consideration. No EPSS score was provided, and this CVE is absent from the CISA KEV catalog, so exploitation probability and active exploitation status are unconfirmed from the available data. The legacy xmldom package has no fix at all, meaning organizations still running it face indefinite exposure - a more urgent signal than the CVSS score alone conveys. Overall, this warrants prioritized dependency auditing with the urgency calibrated against whether the application actually passes external data to createProcessingInstruction(). |
| Exploit ScenarioDerived | An attacker submits a crafted string - for example 'foo>injected' - through a web endpoint whose backend passes the value as the target argument to Document.createProcessingInstruction(). The serializer emits <?foo>injected data?>, breaking the PI boundary and embedding an injected element into the output document. If that serialized XML is forwarded to a downstream processor such as an XSLT engine, an XML-based message bus, or an audit-logging pipeline, the injected structure is parsed as legitimate XML and may alter document semantics, bypass schema validation, or trigger unexpected parser behavior. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 01, 2026
Processing-instruction target injection in the @xmldom/xmldom JavaScript library allows XML structure breakout through unvalidated characters in Document.createProcessingInstruction() targets. Versions prior to 0.8.15 and 0.9.12 - and all versions of the legacy xmldom package (0.6.0 and earlier, which has no fix) - emit malformed processing instructions when a target contains >, ?, whitespace, or other XML-Name-invalid characters, enabling injection of arbitrary XML structure into the serialized output. No public exploit has been identified at time of analysis, and the CVE is not listed in the CISA KEV catalog.
RemediationAI
Upgrade @xmldom/xmldom to version 0.8.15 (https://github.com/xmldom/xmldom/releases/tag/0.8.15) or 0.9.12 (https://github.com/xmldom/xmldom/releases/tag/0.9.12) depending on the branch in use; both releases are confirmed by GitHub release tags and the associated PR commits (https://github.com/xmldom/xmldom/commit/1cde3e31a07c41c87cfd368d6946aa477f16b4f9 and https://github.com/xmldom/xmldom/commit/3b694872bcb5c7e3cbadba961a4be2488750ce5b). Applications still on the legacy xmldom package (0.6.0 or earlier) have no patched release available and should migrate to @xmldom/xmldom 0.9.12 as a priority. As a compensating control for environments unable to upgrade immediately, applications should validate any externally sourced string against the XML NCName production before passing it as a PI target, rejecting strings containing >, ?, whitespace, or any non-name character. Relying on requireWellFormed: true alone is insufficient: it provides only partial protection on 0.9.x and no protection on 0.8.x, so it must not be treated as a standalone mitigation.
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
CWE-91 (XML Injection) describes the root cause: user-supplied data is embedded into an XML structure without adequate validation, breaking structural boundaries. Processing instructions take the form <?target data?> in XML, where the target must conform to the NCName production per the XML Namespaces specification (no >, ?, whitespace, or other non-name characters). The affected module's Document.createProcessingInstruction() in lib/dom.js never validates the target at creation time. The @xmldom/xmldom 0.9.x serializer under requireWellFormed: true only checks for a leading colon and the reserved case-insensitive string 'xml', missing all other invalid characters; the 0.8.x serializer performs no target check at all. CPE strings cpe:2.3:a:xmldom:xmldom:* and cpe:2.3:a:@xmldom:xmldom:* cover the legacy and modern scoped packages respectively, and PR diffs for both 0.8.15 and 0.9.12 confirm the fix validates the target as a valid XML NCName before serialization.
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-exploitable with no privileges when PI target is attacker-controlled; scope changes because injected XML can be processed by downstream systems outside the vulnerable application.
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, Document.createProcessingInstruction(target, data) in lib/dom.js accepts an unvalidated target, while the requireWellFormed: true serializer checks only for a colon and the reserved case-insensitive xml name on 0.9.x and performs no target check on 0.8.x. Because serialization emits <?target data?>, a target containing >, ?, whitespace, or another invalid XML-name character can break the processing-instruction boundary and inject XML structure. 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,019 npm packages depend on xmldom (864 direct, 1,181 indirect)
Ecosystem-wide dependent count for version 0.7.0 and other introduced versions.
Technical POC Analysis
CWE-91 (XML Injection).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
The @xmldom/xmldom and xmldom JavaScript libraries contain an XML processing instruction injection vulnerability (CVSS 8.7); no public exploit identified at time of analysis. Organizations using these libraries to process untrusted XML data face risks of data corruption, injection attacks, and potential data exfiltration. Patches are available for the maintained @xmldom/xmldom library, but legacy xmldom users remain at continued risk with no fix available.
For @xmldom/xmldom: Apply vendor patch by upgrading to version 0.8.15 or 0.9.12 depending on your version line. For legacy xmldom (0.6.0 and earlier): No vendor patch available; implement strict input validation and sanitization for XML processing instruction targets, and prioritize migration to the maintained @xmldom/xmldom library or alternative actively maintained XML parsing solution.
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
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
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-69239
GHSA-c7q8-3ch8-vqpv
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB