CVE-2026-65902

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

Configuration 1 (hide)

cpe:2.3:a:cure53:dompurify:*:*:*:*:*:*:*:*

History

29 Oct 2026, 21:17

Type Values Removed Values Added
Summary (en) 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. (en) 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.

24 Oct 2026, 13:10

Type Values Removed Values Added
Summary
  • (es) 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.

Information

Published : 2026-07-23 14:18

Updated : 2026-10-29 21:17


NVD link : CVE-2026-65902

Mitre link : CVE-2026-65902

CVE.ORG link : CVE-2026-65902


JSON object : View

Products Affected

cure53

  • dompurify
CWE
CWE-501

Trust Boundary Violation