Skip to main content

xmldom CVE-2026-83609

| EUVDEUVD-2026-69220 HIGH
XML Injection (aka Blind XPath Injection) (CWE-91)
2026-09-01 GitHub_M GHSA-3px3-54cx-rmw9
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 element/attribute name with embedded line terminator
  2. Delivery
    Bypass multiline QName_exact regex validation
  3. Exploit
    createElementNS/createAttributeNS accepts malformed name
  4. Execution
    XMLSerializer emits injected markup verbatim
  5. Persist
    Downstream consumer parses attacker-controlled XML structure
  6. Impact
    Integrity of serialized document 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 attacker-controlled data reaches one of four specific DOM creation APIs: createElementNS, createAttributeNS, createDocumentType, or createAttribute. The attacker-supplied name must contain at least one ECMAScript line terminator - LF (U+000A), CR (U+000D), LINE SEPARATOR (U+2028), or PARAGRAPH SEPARATOR (U+2029) - followed by the injected XML payload. Both the default serialization path and requireWellFormed: true are vulnerable in affected versions. Applications that only parse fixed or fully-trusted XML and never construct element or attribute names from external input are not exploitable. The CVSS vector AV:N/AC:L/PR:N/UI:N indicates no authentication, no special network position, and no user interaction are required when the vulnerable APIs are reachable from external input.

Impact

The CVSS 4.0 base score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N) correctly reflects that no authentication, no special network position, and no attack prerequisites beyond API reachability are needed. Real-world exploitability is context-dependent: only applications that build XML element or attribute names from attacker-controlled input are at risk; those that only parse static or trusted XML are not meaningfully exposed. The impact is strictly integrity-only - confidentiality and availability are unaffected. No CISA KEV listing and no POC were identified at time of analysis, so active exploitation is not confirmed. EPSS data is absent from the provided intelligence. Despite the absence of confirmed exploitation, applications using xmldom to construct SAML assertions, SOAP envelopes, signed XML, or any output consumed by downstream systems should treat this as a high-priority patch: the zero-prerequisite CVSS vector and the breadth of xmldom's npm install base represent meaningful exposure if exploitation techniques become public.

Exploit ScenarioDerived

An attacker sends an HTTP request to a Node.js application that constructs XML using xmldom with a user-supplied element name such as 'validName ></validName><injected>' - the embedded LF causes the multiline QName regex to accept 'validName' as valid while ignoring the trailing injection. When the application serializes and forwards the resulting document, for example as a SAML assertion or a SOAP request body, the injected markup appears verbatim in the output and can alter document structure, bypass downstream schema validation, or poison a security-sensitive XML consumer. No public POC has been identified at time of analysis.

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 0.9.0-0.9.11 allows an attacker to embed malicious markup into serialized XML output by supplying element or attribute names containing ECMAScript line terminators (U+000A, U+000D, U+2028, U+2029). The QName_exact regex in lib/grammar.js is compiled with JavaScript's multiline flag, causing the ^ and $ anchors to match per-line rather than over the full string - a name whose first line is a valid QName passes validation while subsequent lines carry injected markup, bypassing both the default serialization path and requireWellFormed: true. No public exploit has been identified at time of analysis, but the CVSS 4.0 score of 8.7 with no prerequisites reflects the high-integrity impact when an application passes attacker-controlled input to createElementNS, createAttributeNS, createDocumentType, or createAttribute.

RemediationAI

Upgrade @xmldom/xmldom to version 0.9.12, released at https://github.com/xmldom/xmldom/releases/tag/0.9.12 (commit 7b2ec67e1750daadd0bb06c92e875e726544a362), which removes the multiline flag from the QName_exact regex and adds InvalidCharacterError rejection for names containing ECMAScript line terminators at creation time in createElementNS, createAttributeNS, createDocumentType, and createAttribute, and InvalidStateError rejection in the requireWellFormed: true serialization path. If an immediate upgrade is not feasible, apply input sanitization to strip or reject all four ECMAScript line terminators - U+000A, U+000D, U+2028, and U+2029 - from any string supplied to those four APIs before it reaches xmldom; note that U+2028 and U+2029 are non-printing and will bypass filters that only scan for ASCII newlines, so the sanitization must be Unicode-aware. Application-level sanitization is a fragile compensating control because it must cover every call site; upgrading the library is strongly preferred.

Affected VersionsENISA

xmldom 0.9.0, < 0.9.12

Affected Packages

npm @xmldom/xmldom fix: 0.9.12
euvd xmldom_0_9_0 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

xmldom (npm package @xmldom/xmldom) is a pure-JavaScript implementation of the W3C DOM Level 2 Core standard providing DOMParser and XMLSerializer for Node.js and browser environments (CPE: cpe:2.3:a:xmldom:xmldom:*). The root cause, CWE-91 (XML Injection), resides in lib/grammar.js where the reg() builder compiles the QName_exact validator with the JavaScript /m multiline flag. In multiline mode, regex anchors ^ and $ no longer bind to the start and end of the complete input string - they bind at each embedded newline boundary recognised by the ECMAScript engine: LF (U+000A), CR (U+000D), LINE SEPARATOR (U+2028), and PARAGRAPH SEPARATOR (U+2029). A supplied name containing one of these terminators is split into logical lines by the regex engine; the validator confirms only that the first line satisfies the QName production and ignores everything after the terminator. The result is that createElementNS, createAttributeNS, createDocumentType, and createAttribute all silently accept names whose trailing content is raw XML markup, which XMLSerializer later emits verbatim into the document stream.

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

No auth or complexity needed; S:C because injected markup in serialized output directly affects integrity of downstream systems consuming the XML.

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:29 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.0 until 0.9.12, the shared reg() builder in lib/grammar.js compiles the anchored QName_exact validator with the multiline flag, so ^ and $ validate only one line instead of the complete name. createElementNS, createAttributeNS, createDocumentType, and createAttribute consequently accept a malformed XML name whose first line is valid and whose later text injects markup when serialized through either the default path or requireWellFormed: true. The triggering ECMAScript line terminators are U+000A, U+000D, U+2028, and U+2029. This issue is fixed in @xmldom/xmldom version 0.9.12.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 4 npm packages depend on @xmldom/xmldom (4 direct, 0 indirect)

Ecosystem-wide dependent count for version 0.9.0.

Technical POC Analysis

CWE-91 (XML Injection); the advisory also assigns CWE-625 (Permissive Regular Expression).

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 high-severity XML injection vulnerability (CVSS 8.7) affecting @xmldom/xmldom versions 0.9.0-0.9.11, with no public exploit identified at time of analysis, allows unauthenticated attackers to inject malicious markup into serialized XML output by exploiting line-terminator characters in element and attribute names. Organizations using this library in applications that process untrusted XML input face significant data integrity risks, with no vendor patch currently available. Immediate inventory and remediation planning are required.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Implement strict input validation rejecting line terminators (U+000A, U+000D, U+2028, U+2029) in XML element and attribute names; (2) Apply Web Application Firewall rules detecting XML injection patterns; (3) Disable or restrict application features that serialize user-controlled XML data; (4) Evaluate alternative XML parsing libraries while awaiting vendor patch availability.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Medium
popular npm XML library, widely used in Node.js applications
Threat Intel
1
1 source
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
Scheduled
Exploitation
None
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-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-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

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