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.
Remediation
References
Related Vulnerabilities
WordPress 4.1.x Multiple Vulnerabilities (4.1 - 4.1.18)
Nginx Use After Free Vulnerability (CVE-2022-31307)
WordPress 5.5.x PHP Object Injection (5.5 - 5.5.4)
WordPress Plugin Default Thumbnail Plus Arbitrary File Upload (1.0.2.3)
WordPress Plugin PowerPress Podcasting by Blubrry Malicious Code (11.9.4)