mediumVulnerability

GHSA-cj63-jhhr-wcxv

## 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 `<img onclick=...>` 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).

Properties

ghsa_id
GHSA-cj63-jhhr-wcxv
severity
medium
summary
DOMPurify USE_PROFILES prototype pollution allows event handlers
cve_id
GHSA-cj63-jhhr-wcxv
is_ghsa_only
true
ghsa_published
2026-04-03T03:45:08Z
source_url
https://github.com/advisories/GHSA-cj63-jhhr-wcxv
ghsa_updated
2026-04-03T03:45:08Z

Related Entities (3)

AFFECTS (1)

[Software]npm/dompurify

HAS_WEAKNESS (1)

[Weakness]Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph