Skip to main content

@xmldom/xmldom CVE-2026-83618

| EUVDEUVD-2026-69244 HIGH
XML Injection (aka Blind XPath Injection) (CWE-91)
2026-09-01 GitHub_M GHSA-vr34-hp96-76pp
8.7
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Recon
    Supply DOCTYPE with line-terminator-embedded publicId/systemId
  2. Delivery
    Submit to xmldom-backed application
  3. Exploit
    xmldom parses and retains malicious DocumentType
  4. Install
    Application calls XMLSerializer with requireWellFormed: true
  5. C2
    Multiline regex anchor bypassed, identifier passes validation
  6. Execute
    Breakout markup emitted verbatim in <!DOCTYPE> output
  7. Impact
    Downstream 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.

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 @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

xmldom 0.9.10, < 0.9.12

Affected Packages

npm @xmldom/xmldom fix: 0.9.12
euvd xmldom_0_9_10 fix: 0.9.12

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

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 8.6 HIGH

Network attacker controls DOCTYPE content without authentication; scope changes because injected markup in serialized output corrupts downstream consumers; no confidentiality or availability impact applies.

3.1 AV:N/AC:L/PR:N/UI:N/S:C/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:H/SA:N
SUSE 7.1 HIGH
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
Red Hat 7.5 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:49 cve.org
HIGH 8.7

DescriptionCVE.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

Why It Matters

@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.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Medium
popular Node.js XML DOM library, not ubiquitous infrastructure
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA 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
Total

Priority Score

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

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-83608 HIGH POC
8.7 Sep 01

XML injection in the xmldom serializer allows a crafted DocumentType.name containing '>' or whitespace to prematurely cl

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