mediumVulnerability

GHSA-cjmm-f4jc-qw8r

## Summary DOMPurify allows `ADD_ATTR` to be provided as a predicate function via `EXTRA_ELEMENT_HANDLING.attributeCheck`. When the predicate returns `true`, `_isValidAttribute` short-circuits the attribute check before URI-safe validation runs. An attacker who supplies a predicate that accepts specific attribute/tag combinations can then sanitize input such as `<a href="javascript:alert(document.domain)">` and have the `javascript:` URL survive, because URI validation is skipped for that attribute while other checks still pass. The provided PoC accepts `href` for anchors and then triggers a click inside an iframe, showing that the sanitized payload executes despite the protocol bypass. ## Impact Predicate-based allowlisting bypasses DOMPurify's URI validation, allowing unsafe protocols such as `javascript:` to reach the DOM and execute whenever the link is activated, resulting in DOM-based XSS. ## Credits Identified by Cantina’s Apex (https://www.cantina.security).

Properties

ghsa_id
GHSA-cjmm-f4jc-qw8r
severity
medium
summary
DOMPurify ADD_ATTR predicate skips URI validation
cve_id
GHSA-cjmm-f4jc-qw8r
is_ghsa_only
true
ghsa_published
2026-04-03T03:46:07Z
source_url
https://github.com/advisories/GHSA-cjmm-f4jc-qw8r
ghsa_updated
2026-04-03T03:46:08Z

Related Entities (3)

AFFECTS (1)

[Software]npm/dompurify

HAS_WEAKNESS (1)

[Weakness]Permissive List of Allowed Inputs

REPORTED_BY (1)

[Source]GitHub Advisory Database

Explore deeper with Ninja Signal's threat intelligence graph