Skip to main content

DOMPurify EUVDEUVD-2026-110510

| CVE-2026-116802 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-26 VulnCheck GHSA-g32m-chc6-3wqf
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Access
    Craft SVG with animate attributeName=href
  2. Delivery
    Submit to app sanitizing in XHTML mode
  3. Exploit
    Guard skipped, payload survives sanitization
  4. Execution
    Victim clicks the sanitized link
  5. Impact
    javascript: URI executes script in browser

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a specific non-default DOMPurify configuration: the integrating application must set PARSER_MEDIA_TYPE to 'application/xhtml+xml' AND allow the SVG animate (or set) element together with the attributeName attribute - e.g. ALLOWED_TAGS/ALLOWED_ATTR including 'animate' and 'attributeName', or USE_PROFILES:{svg:true} with ADD_TAGS:['animate'] and ADD_ATTR:['attributeName']. In XHTML mode transformCaseFunc is the identity function, so the case-sensitive XML name 'attributeName' never matches the lowercase 'attributename' guard and the href-stripping check is bypassed. Limiting factors: text/html (default) parser mode is not affected because the name is lowercased and stripped; the required camelCase allow-listing is non-default; and successful script execution needs user interaction (the victim must click the parent link whose href is rewritten to the javascript: value via SMIL fill="freeze"). The vendor notes updating is the fix and treats this as a hardening bug for non-default configs.

Impact

Signals point to a real but low-to-moderate priority issue rather than an urgent one. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N, score 5.1) shows a network-reachable, unauthenticated flaw with low complexity, but impact is confined to the subsequent system (the victim's browser) at low confidentiality/integrity and requires active user interaction - the victim must click the sanitized link. EPSS is low at 0.22% (12th percentile), the CVE is not listed in CISA KEV, and the vuln.today decision label is 'this_month' rather than act_now/emergency, all consistent with limited, non-urgent risk. A detailed, reporter-tested PoC is included in the GHSA advisory, which raises practical exploitability above what the low EPSS alone implies, but exploitation is gated on a non-default configuration (see exploitation_conditions) that the vendor itself classifies as a hardening bug, not a default-config bypass. Net: a genuine XSS worth patching on a normal cycle, not a drop-everything emergency; the main uplift in risk comes from the published PoC and the ease of the SMIL/javascript: technique, while the non-default XHTML config requirement and the required click sharply limit the exposed population.

Exploit ScenarioDerived

An application that runs DOMPurify in XHTML parser mode and allow-lists the SVG animate element plus the attributeName attribute accepts attacker-supplied markup. The attacker submits an SVG containing <a><animate attributeName="href" values="x;javascript:alert(1)" fill="freeze"/></a>; because the attributeName href guard is skipped in XHTML mode, the payload survives sanitization and is rendered to another user, who executes script in their browser by clicking the link. A reporter-tested proof-of-concept demonstrating this against DOMPurify 3.4.16 in Chrome is published in the GHSA advisory.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 28, 2026

Cross-site scripting in DOMPurify versions up to and including 3.4.16 lets an attacker slip a javascript: URL past the sanitizer's SMIL guard when the integrating application parses content with PARSER_MEDIA_TYPE set to 'application/xhtml+xml' and allowlists the SVG animate (or set) element together with the camelCase attributeName attribute. In that mode the guard that strips attributeName="href" never fires, so a sanitized SVG keeps an <animate> that rewrites its parent link's href, and a victim who clicks that link executes the injected script. Exploitation requires this non-default configuration plus user interaction, which is why the vendor classifies it as a hardening bug rather than a default-config bypass; EPSS is low at 0.22% (12th percentile), there is no CISA KEV listing, and a public proof-of-concept shipped with the advisory demonstrates the behavior in Chrome, with the vendor releasing 3.4.17 as the fix.

RemediationAI

Upgrade DOMPurify to 3.4.17, which the vendor released to close this gap (npm dompurify 3.4.17; upstream fix in pull request 1672 and commit a77a3e78b59f72fa4d1c83f22e121ad9cc7d3575, documented at https://github.com/cure53/DOMPurify/security/advisories/GHSA-c6gr-qvv4-5v3f), and treat updating as the complete fix per the vendor. Applications that cannot upgrade immediately can eliminate exposure by removing the preconditions: stop setting PARSER_MEDIA_TYPE to 'application/xhtml+xml' and stay on the default text/html parser mode, where the attribute name is lowercased and attributeName is stripped - the trade-off is that XHTML consumers must accept HTML parsing semantics for sanitized markup; or keep XHTML mode but drop 'animate'/'set' and 'attributeName' from ALLOWED_TAGS/ALLOWED_ATTR (and from USE_PROFILES svg configurations via ADD_TAGS/ADD_ATTR), at the cost of losing SMIL animation support in sanitized SVG content. Prioritization is moderate: EPSS is 0.22% and there is no CISA KEV entry, and the vuln.today decision label places remediation within this month rather than as an emergency.

Affected VersionsENISA

DOMPurify 0 <3.4.17

Affected Packages

npm dompurify fix: 3.4.17

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

DOMPurify is a widely deployed client-side HTML/SVG sanitizer whose attribute scrubbing routine, _sanitizeAttributes, normalizes each attribute name through transformCaseFunc before running allow/deny comparisons. That function is stringToLowerCase in the default text/html parser mode, but becomes the identity function in application/xhtml+xml mode because XML names are case-sensitive, so the real SVG spelling 'attributeName' is preserved. The guard that removes attributeName values containing 'href' compares against the lowercase literal "attributename" and therefore never matches in XHTML mode, a case-sensitivity defect in the CWE-79 cross-site scripting class closely related to earlier XHTML case-handling hardening in 3.4.14/3.4.15. A second weakness compounds it: the URI allowlist check (IS_ALLOWED_URI) only inspects the start of the value, so 'x;javascript:alert(1)' reads as a relative value even though SMIL treats values as a semicolon-delimited list and, combined with fill="freeze", makes the final entry the effective href of the parent anchor. Users of XHTML mode must list SVG attributes in camelCase, so ALLOWED_ATTR/ADD_ATTR entries such as 'attributeName' are the natural config in which the bypass arises; text/html mode lowercases the name and strips it correctly.

Know when Dompurify 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 (VulnCheck) PRIMARY 5.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
vuln.today AI 6.1 MEDIUM

Unauthenticated attacker supplies markup (PR:N, AV:N, AC:L), victim must click (UI:R), and script runs in the browser beyond the sanitizer component (S:C) with low C/I and no availability impact.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Red Hat 6.1 MEDIUM

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

Lifecycle Timeline

2
Patch available
Oct 27, 2026 - 01:15 EUVD
CVE Published
Oct 26, 2026 - 23:05 cve.org
MEDIUM 5.1

DescriptionCVE.org

DOMPurify before 3.4.17 contains a cross-site scripting vulnerability that allows attackers to bypass the SMIL attributeName=href guard when PARSER_MEDIA_TYPE is application/xhtml+xml, because transformCaseFunc does not lowercase attribute names. Attackers can submit SVG with an animate or set element using attributeName="href" and a javascript: entry in values to execute script when users click the sanitized link.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 16,332 npm packages depend on dompurify (3,926 direct, 12,648 indirect)

Ecosystem-wide dependent count for version 3.4.17.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
High
de facto client-side HTML/SVG sanitization library embedded in many web apps
Data Quality
6 sources
Confidence: High

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2024-47875 MEDIUM POC
6.1 Oct 11

DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. Rated medium severity (CVSS 6

CVE-2020-26870 MEDIUM POC
6.1 Oct 07

Cure53 DOMPurify before 2.0.17 allows mutation XSS. Rated medium severity (CVSS 6.1), this vulnerability is remotely exp

CVE-2019-16728 MEDIUM POC
6.1 Sep 24

DOMPurify before 2.0.1 allows XSS because of innerHTML mutation XSS (mXSS) for an SVG element or a MATH element, as demo

CVE-2024-48910 CRITICAL
9.8 Oct 31

DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. Rated critical severity (CVSS

CVE-2026-65914 MEDIUM POC
5.3 Jul 23

Mutation-XSS in DOMPurify before 3.3.2 enables JavaScript execution in victim browsers when sanitized output is re-inser

CVE-2026-65902 MEDIUM POC
5.3 Jul 23

Hook mutation pollution in DOMPurify <= 3.4.5 allows persistent bypass of HTML sanitization defaults when application-in

CVE-2026-65899 MEDIUM POC
5.1 Jul 23

Trusted Types policy state contamination in DOMPurify 3.0.0-3.4.8 allows a previously supplied TRUSTED_TYPES_POLICY to s

CVE-2026-65913 MEDIUM POC
5.1 Jul 23

Prototype pollution in DOMPurify's USE_PROFILES mode enables DOM-based XSS by causing the sanitizer to accept event hand

CVE-2026-65912 MEDIUM POC
5.1 Jul 23

URI validation bypass in DOMPurify 3.3.1 and earlier allows `javascript:` protocol payloads to survive HTML sanitization

CVE-2026-65900 MEDIUM POC
5.1 Jul 23

SAFE_FOR_TEMPLATES bypass in DOMPurify 3.0.0-3.4.7 allows template expressions such as ${evil}, {{evil}}, and <%evil%> t

CVE-2026-65901 MEDIUM POC
5.1 Jul 23

Cross-site scripting in DOMPurify 3.4.6 and earlier enables script execution when the library's IN_PLACE sanitization mo

CVE-2026-65898 MEDIUM POC
5.1 Jul 23

Stored XSS is achievable in applications using DOMPurify's setConfig() API combined with an uponSanitizeAttribute hook t

Vendor StatusVendor

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