CVE-2026-65902
DOMPurify before 3.4.7 Hook Mutation Pollution via allowedTags
Description
DOMPurify before 3.4.7 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.
INFO
Published Date :
July 23, 2026, 2:18 p.m.
Last Modified :
Oct. 29, 2026, 9:17 p.m.
Remotely Exploit :
Yes !
Source :
[email protected]
CVSS Scores
| Score | Version | Severity | Vector | Exploitability Score | Impact Score | Source |
|---|---|---|---|---|---|---|
| CVSS | 134c704f-9b21-4f2e-91b3-4a467353bcc0 | |||||
| CVSS 3.1 | MEDIUM | 83251b91-4cc7-4094-a5c7-464a1b83ea10 | ||||
| CVSS 3.1 | MEDIUM | [email protected] | ||||
| CVSS 3.1 | MEDIUM | MITRE-CVE | ||||
| CVSS 4.0 | MEDIUM | 83251b91-4cc7-4094-a5c7-464a1b83ea10 | ||||
| CVSS 4.0 | MEDIUM | [email protected] |
Solution
- Update DOMPurify to a non-vulnerable version.
- Reconstruct DOMPurify instances after hook mutations.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-65902.
| URL | Resource |
|---|---|
| https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36 | Patch |
| https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm | Exploit Third Party Advisory |
| https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags | Third Party Advisory |
| https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm | Exploit Third Party Advisory |
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-65902 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-65902
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-65902 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-65902 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
CVE Modified by [email protected]
Oct. 29, 2026
Action Type Old Value New Value Changed 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. DOMPurify before 3.4.7 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. Added Reference https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36 Added Reference https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Added Reference https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags Removed Reference https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36 Removed Reference https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Removed Reference https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags Removed Reference Type https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36 Types: Patch Removed Reference Type https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Types: Exploit, Third Party Advisory Removed Reference Type https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags Types: Third Party Advisory -
CVE Modified by 134c704f-9b21-4f2e-91b3-4a467353bcc0
Oct. 29, 2026
Action Type Old Value New Value Added Reference https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Removed Reference https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Removed Reference Type https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Types: Exploit, Third Party Advisory -
CVE Translated by [email protected]
Oct. 24, 2026
Action Type Old Value New Value Added Translation Title: DOMPurify de cure53, Description: DOMPurify antes de la versión 3.4.7 (versiones afectadas menor o igual que 3.4.5) pasa referencias directas a los conjuntos DEFAULT_ALLOWED_TAGS y DEFAULT_ALLOWED_ATTR a nivel de módulo a los hooks uponSanitizeElement y uponSanitizeAttribute a través de data.allowedTags / data.allowedAttributes cuando se llama a sanitize sin un array explícito cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR. Un hook que muta estos campos amplía permanentemente las listas de permitidos predeterminadas durante la vida útil de la instancia de DOMPurify, por lo que todas las llamadas posteriores a sanitize con configuración predeterminada heredan los valores predeterminados ampliados y las cargas útiles del atacante que utilizan el nombre de etiqueta/atributo envenenado sobreviven a la sanitización. removeAllHooks(), clearConfig() y pasar una nueva cfg no recuperan el estado; solo la construcción de una nueva instancia de DOMPurify lo hace. -
Initial Analysis by [email protected]
Jul. 28, 2026
Action Type Old Value New Value Added CPE Configuration OR *cpe:2.3:a:cure53:dompurify:*:*:*:*:*:*:*:* versions up to (excluding) 3.4.7 Added Reference Type VulnCheck: https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36 Types: Patch Added Reference Type VulnCheck: https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Types: Exploit, Third Party Advisory Added Reference Type VulnCheck: https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags Types: Third Party Advisory Added Reference Type CISA-ADP: https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Types: Exploit, Third Party Advisory -
New CVE Received by [email protected]
Jul. 23, 2026
Action Type Old Value New Value Added Affected [{'vendor': 'cure53', 'product': 'DOMPurify', 'versions': [{'status': 'affected', 'version': '0', 'lessThan': '3.4.7', 'versionType': 'semver'}, {'status': 'unaffected', 'version': '3.4.7', 'versionType': 'semver'}], 'packageURL': 'pkg:npm/dompurify', 'defaultStatus': 'unaffected'}] Added 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. Added CVSS V4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X Added CVSS V3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N Added CWE CWE-501 Added Reference https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36 Added Reference https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Added Reference https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags -
CVE Modified by 134c704f-9b21-4f2e-91b3-4a467353bcc0
Jul. 23, 2026
Action Type Old Value New Value Added Reference https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm Added SSVC {'id': 'CVE-2026-65902', 'role': 'CISA Coordinator', 'options': [{'exploitation': 'poc'}, {'automatable': 'no'}, {'technicalImpact': 'partial'}], 'version': '2.0.3', 'timestamp': '2026-07-23T13:58:18.807154Z'}