CVE-2026-65900
published 2026-07-23CVE-2026-65900: DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or…
PriorityP430medium6.1CVSS 3.1
AVNACLPRNUIRSCCLILAN
EPSS
0.31%
22.6th percentile
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge survive sanitization. This bypasses SAFE_FOR_TEMPLATES and can allow a downstream template engine to evaluate attacker-supplied expressions. The string output path is not affected.
Affected
54 ranges· showing 25
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| 3scale-amp2 | system-rhel7 | — | — |
| 3scale-amp2 | system-rhel8 | — | — |
| 3scale-amp2 | system-rhel9 | — | — |
| 3scale-amp21 | system | — | — |
| 3scale-amp22 | system | — | — |
| advanced-cluster-security | rhacs-main-rhel8 | — | — |
| advanced-cluster-security | rhacs-main-rhel9 | — | — |
| ansible-automation-platform-26 | gateway-rhel9 | — | — |
| ansible-automation-platform-27 | gateway-rhel9 | — | — |
| ansible-automation-platform | automation-portal | — | — |
| apicurio | apicurio-registry-ui-rhel8 | — | — |
| apicurio | apicurio-registry-ui-rhel9 | — | — |
| container-native-virtualization | kubevirt-console-plugin | — | — |
| container-native-virtualization | kubevirt-console-plugin-rhel9 | — | — |
| cure53 | dompurify | — | — |
| cure53 | dompurify | >= 3.0.0 < 3.4.8 | 3.4.8 |
| cure53 | dompurify | >= 3.4.4 < 3.4.17 | 3.4.17 |
| devspaces | code-rhel9 | — | — |
| devspaces | openvsx-rhel9 | — | — |
| grafana | grafana | — | — |
| migration-toolkit-virtualization | mtv-console-plugin-rhel9 | — | — |
| multicluster-engine | console-mce-rhel9 | — | — |
| odf4 | ocs-client-console-rhel9 | — | — |
| odf4 | odf-console-rhel9 | — | — |
| odf4 | odf-multicluster-console-rhel9 | — | — |
CVSS provenance
nvdv3.16.1MEDIUMCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
nvdv4.05.1MEDIUMCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
vendor_redhat6.1MEDIUM
Stop checking back — get the weekly exploitation signal.
Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.
GHSA
DOMPurify SAFE_FOR_TEMPLATES bypass: split template expressions survive in attached shadow root content on DOM output modes
ghsa·2026-10-22
CVE-2026-65900 [CRITICAL] CWE-79 DOMPurify SAFE_FOR_TEMPLATES bypass: split template expressions survive in attached shadow root content on DOM output modes
DOMPurify SAFE_FOR_TEMPLATES bypass: split template expressions survive in attached shadow root content on DOM output modes
## Summary
When DOMPurify is configured with `SAFE_FOR_TEMPLATES: true` together with a DOM-returning mode (`RETURN_DOM: true`, `RETURN_DOM_FRAGMENT: true`, or `IN_PLACE: true`), template expressions such as `{{...}}`, `${...}`, and `` survive sanitization inside the text content of an attached shadow root. The post-walk safety net `_scrubTemplateExpressions` (`src/purify.ts:1717`) was extended to recurse into `.content`, but it never recurses into attached shadow roots. An attacker who can supply a DOM node carrying a shadow root (the `IN_PLACE` and shadow-aware `RETURN_DOM` surfaces) can split an expression across text nodes separated by disallowed elements; after
Red Hat
dompurify: DOMPurify: Template expression injection allows information disclosure
vendor_redhat·2026-07-23·CVSS 6.1
CVE-2026-65900 [MEDIUM] CWE-917 dompurify: DOMPurify: Template expression injection allows information disclosure
dompurify: DOMPurify: Template expression injection allows information disclosure
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge survive sanitization. This bypasses SAFE_FOR_TEMPLATES and can allow a downstream template engine to evaluate attacker-supplied expressions. The string output path is not affected.
A flaw was found in DOMPurify. When configured to sanitize HTML templates f
No detection rules found.
No public exploits indexed.
Bugzilla
CVE-2026-65900 forgejo: DOMPurify: Template expression injection allows information disclosure [epel-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 forgejo: DOMPurify: Template expression injection allows information disclosure [epel-all]
CVE-2026-65900 forgejo: DOMPurify: Template expression injection allows information disclosure [epel-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge survive
Bugzilla
CVE-2026-65900 forgejo: DOMPurify: Template expression injection allows information disclosure [fedora-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 forgejo: DOMPurify: Template expression injection allows information disclosure [fedora-all]
CVE-2026-65900 forgejo: DOMPurify: Template expression injection allows information disclosure [fedora-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge surviv
Bugzilla
CVE-2026-65900 jupyterlab: DOMPurify: Template expression injection allows information disclosure [fedora-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 jupyterlab: DOMPurify: Template expression injection allows information disclosure [fedora-all]
CVE-2026-65900 jupyterlab: DOMPurify: Template expression injection allows information disclosure [fedora-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge sur
Bugzilla
CVE-2026-65900 jupyterlab: DOMPurify: Template expression injection allows information disclosure [epel-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 jupyterlab: DOMPurify: Template expression injection allows information disclosure [epel-all]
CVE-2026-65900 jupyterlab: DOMPurify: Template expression injection allows information disclosure [epel-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge survi
Bugzilla
CVE-2026-65900 nextcloud: DOMPurify: Template expression injection allows information disclosure [epel-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 nextcloud: DOMPurify: Template expression injection allows information disclosure [epel-all]
CVE-2026-65900 nextcloud: DOMPurify: Template expression injection allows information disclosure [epel-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge surviv
Bugzilla
CVE-2026-65900 fbthrift: DOMPurify: Template expression injection allows information disclosure [fedora-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 fbthrift: DOMPurify: Template expression injection allows information disclosure [fedora-all]
CVE-2026-65900 fbthrift: DOMPurify: Template expression injection allows information disclosure [fedora-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge survi
Bugzilla
CVE-2026-65900 openbao: DOMPurify: Template expression injection allows information disclosure [fedora-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 openbao: DOMPurify: Template expression injection allows information disclosure [fedora-all]
CVE-2026-65900 openbao: DOMPurify: Template expression injection allows information disclosure [fedora-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge surviv
Bugzilla
CVE-2026-65900 ansible-collection-awx-awx: DOMPurify: Template expression injection allows information disclosure [epel-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 ansible-collection-awx-awx: DOMPurify: Template expression injection allows information disclosure [epel-all]
CVE-2026-65900 ansible-collection-awx-awx: DOMPurify: Template expression injection allows information disclosure [epel-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text n
Bugzilla
CVE-2026-65900 nextcloud: DOMPurify: Template expression injection allows information disclosure [fedora-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 nextcloud: DOMPurify: Template expression injection allows information disclosure [fedora-all]
CVE-2026-65900 nextcloud: DOMPurify: Template expression injection allows information disclosure [fedora-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge surv
Bugzilla
CVE-2026-65900 python-ipyparallel: DOMPurify: Template expression injection allows information disclosure [epel-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 python-ipyparallel: DOMPurify: Template expression injection allows information disclosure [epel-all]
CVE-2026-65900 python-ipyparallel: DOMPurify: Template expression injection allows information disclosure [epel-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes mer
Bugzilla
CVE-2026-65900 openbao: DOMPurify: Template expression injection allows information disclosure [epel-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 openbao: DOMPurify: Template expression injection allows information disclosure [epel-all]
CVE-2026-65900 openbao: DOMPurify: Template expression injection allows information disclosure [epel-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge survive
Bugzilla
CVE-2026-65900 grafana: DOMPurify: Template expression injection allows information disclosure [fedora-all]
bugzilla·2026-08-13·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 grafana: DOMPurify: Template expression injection allows information disclosure [fedora-all]
CVE-2026-65900 grafana: DOMPurify: Template expression injection allows information disclosure [fedora-all]
Disclaimer: Community trackers are created by Red Hat Product Security team on a best effort basis. Package maintainers are required to ascertain if the flaw indeed affects their package, before starting the update process.
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge surviv
Bugzilla
CVE-2026-65900 dompurify: DOMPurify: Template expression injection allows information disclosure
bugzilla·2026-07-23·CVSS 6.1
CVE-2026-65900 [MEDIUM] CVE-2026-65900 dompurify: DOMPurify: Template expression injection allows information disclosure
CVE-2026-65900 dompurify: DOMPurify: Template expression injection allows information disclosure
DOMPurify versions >=3.0.0 and before 3.4.8, when configured with SAFE_FOR_TEMPLATES together with a DOM output mode (RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE), fail to strip template expressions (e.g. ${evil}, {{evil}}, ) inside element content. The final normalization/scrub pass (_scrubTemplateExpressions) uses a NodeIterator and node.normalize() that do not descend into template.content, so expressions that only form after adjacent text nodes merge survive sanitization. This bypasses SAFE_FOR_TEMPLATES and can allow a downstream template engine to evaluate attacker-supplied expressions. The string output path is not affected.
2026-07-23
Published