Description
DOMPurify through 3.3.3 fails to sanitize DOM elements passed via IN_PLACE mode when the element originates from a different window/realm (e.g., an iframe's contentDocument). A cross-realm instanceof check in the private _isNode() function returns false for foreign-realm nodes, causing DOMPurify to stringify the element (yielding '[object HTMLDivElement]'), silently reset IN_PLACE to false, and return the unsanitized element unchanged with any XSS payloads intact.
Metrics
CVSS 3.1 4.7/10
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:NWeakness enumeration
Affected software
| Vendor | Product | Versions |
|---|---|---|
| cure53 | DOMPurify | <= 3.3.3 |
References
- https://github.com/cure53/DOMPurify/security/advisories/GHSA-4w3q-35jp-p934Exploit, Third Party Advisory
- https://www.vulncheck.com/advisories/dompurify-before-cross-site-scripting-via-in-place-modeThird Party Advisory
- https://github.com/cure53/DOMPurify/security/advisories/GHSA-4w3q-35jp-p934Exploit, Third Party Advisory
Timeline
- Published
- Jul 23, 2026
- Last modified
- Oct 24, 2026
- NVD status
- Analyzed