Skip to main content
MEDIUM

CVE-2026-65902

CVSS v3

6.1

MEDIUM

EPSS Score

0.4 %

exploit probability, as of 2026-10-19

CISA KEV

No

known exploited

Exploitation

—

SSVC status

Get an alert for each new CVE published for dompurify.

Set up CVE WatchFree account · no credit card

Affected and fixed versions

Packages from OSV.dev and products from the vendors' CSAF advisories.

version not verifiedVersions not verified: read as OSV.dev and the vendors publish them, not checked against each vendor's release list.

Packages

  • dompurifynpmall versions · fixed in 3.4.7

Vendor advisories

  • CVE-2026-65902 Red Hat Product Security6 products fixed · 170 known affected

    dompurify: DOMPurify: Sanitization bypass via hook manipulation

    ansible-automation-platform/automation-orchestrator-ui-rhel9 as a component of Ansible Automation Orchestrator 2026 · migration-toolkit-virtualization/mtv-console-plugin-rhel9 as a component of Migration Toolkit for Virtualization · multicluster-engine/console-mce-rhel9 as a component of Multicluster Engine for Kubernetes

  • RHSA-2026:58502 Red Hat Product Security3 products fixed

    Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update

  • RHSA-2026:58500 Red Hat Product Security3 products fixed

    Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update

Full record on NVD

Description

DOMPurify before 3.4.7 (affected versions <= 3.4.5) passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called without an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array. A hook that mutates these fields permanently widens the default allow-lists for the lifetime of the DOMPurify instance, so all subsequent default-config sanitize calls inherit the widened defaults and attacker payloads using the poisoned tag/attribute name survive sanitization. removeAllHooks(), clearConfig(), and passing a fresh cfg do not recover the state; only constructing a new DOMPurify instance does.

Technical details

CVSS v3 Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Published
2026-07-23
Last Modified
2026-07-23

Frequently asked questions

What is CVE-2026-65902?

DOMPurify before 3.4.7 (affected versions <= 3.4.5) passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called without an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array. A hook that mutates these fields permanently widens the default allow-lists for the lifetime of the DOMPurify instance, so all subsequent default-config sanitize calls inherit the widened defaults and attacker payloads using the poisoned tag/attribute name survive sanitization. removeAllHooks(), clearConfig(), and passing a fresh cfg do not recover the state; only constructing a new DOMPurify instance does.

Is CVE-2026-65902 actively exploited?

Active exploitation of CVE-2026-65902 has not been confirmed. Its EPSS score was 0.4% on 2026-10-19, the estimated probability of exploitation in the next 30 days.

What is the CVSS score for CVE-2026-65902?

CVE-2026-65902 has a CVSS v3 base score of 6.1 (MEDIUM severity), with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N.

Running dompurify? Hear about its next vulnerability

CVE Watch matches each new CVE to the vendors and products you list (vendor and product, not the version) and puts it in your alerts with its KEV and EPSS status.

Already have an account? Open CVE WatchNo credit card required · No monthly cap on website lookups · 250 API requests/month