[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"repo-stars":3,"vuln-GHSA-CJMM-F4JC-QW8R":6},{"stargazers_count":4,"fetched_at":5},8,"2026-09-19T17:35:29.592Z",{"id":7,"descriptions":8,"cisa":9,"weaknesses":10,"exploits":11,"aliases":12,"duplicate_of":9,"upstream":13,"downstream":14,"duplicates":17,"related":18,"reserved_at":9,"published_at":23,"modified_at":24,"state":9,"summary":25,"references_raw":27,"kevs":43,"epss":9,"epss_history":44,"metrics":45,"affected":50},"GHSA-CJMM-F4JC-QW8R","DOMPurify ADD_ATTR predicate skips URI validation\n\n## Summary\nDOMPurify 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 `\u003Ca 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.\n\n## Impact\nPredicate-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.\n\n## Credits\nIdentified by Cantina’s Apex (https://www.cantina.security).",null,[],[],[],[],[15],{"_key":16},"CVE-2026-65912",[],[19,21],{"_key":20},"CGA-4VCQ-6JHV-H3QH",{"_key":22},"CGA-J284-H3MR-P3Q6","2026-04-03T03:46:07Z","2026-05-29T21:47:07Z",{"cisa_kev":26,"cisa_ransomware":26,"cisa_vendor":9,"epss_severity":9,"epss_score":9,"severity":9,"severity_score":9,"severity_version":9,"severity_source":9,"severity_vector":9,"severity_status":9},false,[28,34,39],{"url":29,"sources":30,"tags":32},"https://github.com/cure53/DOMPurify/security/advisories/GHSA-cjmm-f4jc-qw8r",[31],"osv_npm",[33],"WEB",{"url":35,"sources":36,"tags":37},"https://github.com/cure53/DOMPurify",[31],[38],"PACKAGE",{"url":40,"sources":41,"tags":42},"https://github.com/cure53/DOMPurify/releases/tag/3.3.2",[31],[33],[],[],[46],{"source":31,"cvss_v2_0":9,"cvss_v3_0":9,"cvss_v3_1":9,"cvss_v4_0":47},{"baseScore":48,"baseSeverity":9,"vectorString":49,"impactScore":9,"exploitabilityScore":9},5.3,"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N",[51],{"ecosystem":52,"name":53,"vendor":52,"product":53,"cpe_part":9,"purl_type":54,"purl_namespace":9,"purl_name":53,"source":9,"versions":55},"Npm","dompurify","npm",[56],{"version":57,"is_range":58,"range_type":59,"version_start":9,"version_start_type":9,"version_end":60,"version_end_type":61,"fixed_in":9},"lt3_3_2",true,"semver","3.3.2","excluding"]