Skip to main content

xmldom CVE-2026-83608

| EUVDEUVD-2026-69219 HIGH
XML Injection (aka Blind XPath Injection) (CWE-91)
2026-09-01 GitHub_M GHSA-27p8-2357-5qqv
8.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Supply malicious string as DOCTYPE name via external input
  2. Delivery
    Pass name to createDocumentType() or assign to DocumentType.name
  3. Exploit
    Invoke XMLSerializer.serializeToString()
  4. Execution
    '>' in name prematurely closes DOCTYPE declaration
  5. Persist
    Injected sibling markup present in serialized output
  6. Impact
    Downstream 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

xmldom 0.7.0, < 0.8.15
xmldom 0.9.0, < 0.9.12
xmldom ≤ 0.6.0

Affected Packages

npm @xmldom/xmldom fix: 0.8.15, 0.9.12
npm xmldom fix: 0.8.15, 0.9.12

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

Vendor (GitHub_M) PRIMARY 8.7 HIGH
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
vuln.today AI 7.5 HIGH

Network-reachable via untrusted DocumentType.name input; integrity-only impact on serialized output; no authentication required on the injection path itself.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
SUSE 7.1 HIGH
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
Red Hat 3.1 HIGH

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 01, 2026 - 16:02 EUVD
CVE Published
Sep 01, 2026 - 14:27 cve.org
HIGH 8.7

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 72% exploitable
Prevalence
Medium
widely used Node.js XML/DOM library, not universally deployed
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA MSRC Vendor GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

64
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +44
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

More in Xmldom

View all
CVE-2022-39353 CRITICAL POC
9.8 Nov 02

xmldom is a pure JavaScript W3C standard-based (XML DOM Level 2 Core) `DOMParser` and `XMLSerializer` module. Rated crit

CVE-2026-83610 MEDIUM POC
6.3 Sep 01

XML injection via EntityReference in xmldom enables attacker-controlled XML markup to escape entity-reference boundaries

CVE-2022-37616 CRITICAL
9.8 Oct 11

A prototype pollution vulnerability exists in the function copy in dom.js in the xmldom (published as @xmldom/xmldom) pa

CVE-2026-83615 HIGH POC
8.7 Sep 01

Quadratic namespace-map allocation in xmldom's SAX parser allows unauthenticated remote attackers to exhaust the Node.js

CVE-2026-83614 HIGH POC
8.7 Sep 01

Two independent quadratic-complexity denial-of-service paths in the xmldom JavaScript XML parser allow remote unauthenti

CVE-2026-83616 HIGH POC
8.7 Sep 01

Processing-instruction target injection in the @xmldom/xmldom JavaScript library allows XML structure breakout through u

CVE-2026-83607 HIGH POC
8.7 Sep 01

XML injection and cross-site scripting in the xmldom JavaScript library allows attacker-controlled tag names to be injec

CVE-2026-83605 HIGH POC
8.7 Sep 01

XML injection in the xmldom JavaScript library allows crafted attribute names to break out of attribute context during s

CVE-2026-83613 HIGH POC
8.7 Sep 01

Quadratic attribute-processing complexity in xmldom's DOMParser enables remote unauthenticated denial of service against

CVE-2026-83618 HIGH POC
8.7 Sep 01

XML injection in @xmldom/xmldom versions 0.9.10 and 0.9.11 bypasses the requireWellFormed serializer's DocumentType vali

CVE-2026-83617 HIGH POC
8.7 Sep 01

XML injection in @xmldom/xmldom 0.9.11 allows attackers who supply crafted element or attribute names containing ECMAScr

CVE-2026-83609 HIGH POC
8.7 Sep 01

XML injection in @xmldom/xmldom 0.9.0-0.9.11 allows an attacker to embed malicious markup into serialized XML output by

Vendor 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

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy