GitHub Advisoryadvisory · npm

GHSA-cj63-jhhr-wcxv DOMPurify USE_PROFILES prototype pollution allows event handlers

MEDIUM Published 2026-04-03 Modified 2026-07-23 Official page ↗
Aliases
CVE-2026-65913
Ecosystem
npm
Packages
dompurify
Severity
Moderate
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N
Weaknesses
CWE-1321
Reviewed
2026-04-03

Affected packages

• npm dompurify: < 3.3.2 → fixed in 3.3.2

Description

Summary When `USE_PROFILES` is enabled, DOMPurify rebuilds `ALLOWED_ATTR` as a plain array before populating it with the requested allowlists. Because the sanitizer still looks up attributes via `ALLOWED_ATTR[lcName]`, any `Array.prototype` property that is polluted also counts as an allowlisted attribute. An attacker who can set `Array.prototype.onclick = true` (or a runtime already subject to prototype pollution) can thus force DOMPurify to keep event handlers such as `onclick` even when they are normally forbidden. The provided PoC sanitizes `` with `USE_PROFILES` and adds the sanitized output to the DOM; the polluted prototype allows the event handler to survive and execute, turning what should be a blocklist into a silent XSS vector. Impact Prototype pollution makes DOMPurify accept dangerous event handler attributes, which bypasses the sanitizer and results in DOM-based XSS once the sanitized markup is rendered. Credits Identified by Cantina’s Apex (https://www.cantina.security).

Related

Alias · CVE (1)

  • CVE-2026-65913 DOMPurify before 3.3.2 contains a prototype pollution vulnerability in USE_PROFILES mode that allows attackers to bypass attribute… vulnerability

Weakness · CWE (1)

  • CWE-1321 Improperly Controlled Modification of Object Prototype Attributes weakness

References