Every CVE Search/ Get API key

CVE-2026-116804

DOMPurify from 3.4.4 before 3.4.17 SAFE_FOR_TEMPLATES Bypass via Shadow Root Content

5.1 MediumFix available

DOMPurify from 3.4.4 before 3.4.17 contains a SAFE_FOR_TEMPLATES bypass that lets attackers preserve template expressions in attached shadow roots when using RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE modes. Attackers can split expressions across text nodes separated by disallowed elements, which merge after removal and are evaluated by downstream template engines for cross-site scripting.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
Active

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
None

Exploit likelihood

0.18%Unchanged since Oct 27, 2026
90%50%10%1%

What each source reports

CVE List Score used 5.1

DOMPurify from 3.4.4 before 3.4.17 SAFE_FOR_TEMPLATES Bypass via Shadow Root Content

DOMPurify from 3.4.4 before 3.4.17 contains a SAFE_FOR_TEMPLATES bypass that lets attackers preserve template expressions in attached shadow roots when using RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE modes. Attackers can split expressions across text nodes separated by disallowed elements, which merge after removal and are evaluated by downstream template engines for cross-site scripting.

Record
CVE-2026-116804
CVSS 4.0
5.1 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-79
Updated
2026-11-02
EUVDEUVD-2026-110512 5.1

DOMPurify from 3.4.4 before 3.4.17 contains a SAFE_FOR_TEMPLATES bypass that lets attackers preserve template expressions in attached shadow roots when using RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE modes. Attackers can split expressions across text nodes separated by disallowed elements, which merge after removal and are evaluated by downstream template engines for cross-site scripting.

Record
EUVD-2026-110512
CVSS 4.0
5.1 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Updated
2026-11-03
GitHub AdvisoriesGHSA-6vxf-252m-8g79 5.1

DOMPurify from 3.4.4 before 3.4.17 contains a SAFE_FOR_TEMPLATES bypass that lets attackers...

DOMPurify from 3.4.4 before 3.4.17 contains a SAFE_FOR_TEMPLATES bypass that lets attackers preserve template expressions in attached shadow roots when using RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE modes. Attackers can split expressions across text nodes separated by disallowed elements, which merge after removal and are evaluated by downstream template engines for cross-site scripting.

Record
GHSA-6vxf-252m-8g79
CVSS 4.0
5.1 MediumCVSS: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
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-79
Updated
2026-11-02
GitHub AdvisoriesGHSA-cg2g-xh64-v4q7 9.2

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 <template>.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 those elements are removed the fragments become adjacent and serialize into a complete expression that a downstream template engine will evaluate.

Root Cause

SAFE_FOR_TEMPLATES neutralizes template expressions through two mechanisms: a per-text-node strip during the main walk (_stripTemplateExpressions, applied in _sanitizeElements at src/purify.ts:2246), and a final post-walk pass (_scrubTemplateExpressions, src/purify.ts:1717) that normalizes adjacent text nodes and re-strips expressions that only form after merging. The per-node strip cannot catch an expression that is split into individual fragments, because each fragment fails the delimiter regexes. The post-walk pass is the only mechanism that would catch the merged form, but it is structurally unable to reach shadow root content.

_scrubTemplateExpressions (src/purify.ts:1717-1751):
  - node.normalize() at line 1718 does not merge text nodes inside shadow roots (DOM spec).
  - NodeIterator at lines 1723-1731 does not descend into shadow trees (DOM spec).
  - Explicit recursion at lines 1743-1750 enters <template>.content only, via
    querySelectorAll('template'); there is no equivalent recursion into attached
    shadow roots.
Shadow roots are sanitized earlier by _sanitizeShadowDOM (src/purify.ts:2710), which
applies the per-node strip but never performs the post-walk normalize-and-rescrub.

Shadow root text nodes are therefore sanitized only per-node and never re-examined as a merged unit.

Impact

An attacker who controls DOM-node input containing an attached shadow root can inject template expressions that survive sanitization and are later evaluated by the application's template engine. In client-side contexts this yields cross-site scripting; in a server-side template context it can escalate to template injection. Exploitation requires non-default application configuration: the application must enable SAFE_FOR_TEMPLATES and a DOM-returning mode, pass a DOM node that already has an attached shadow root, and feed the sanitized shadow root content into a template evaluator. The shadow root does not have to be built programmatically with attachShadow: in engines that support declarative shadow DOM, attacker-supplied markup containing <template shadowrootmode="open"> parsed through setHTMLUnsafe or Document.parseHTMLUnsafe produces the same attached shadow root, so a plain HTML string reaches the gap once the application is configured this way. Demonstrated capability is injection of a complete, attacker-chosen expression into post-sanitization shadow root content; the resulting script execution and any confidentiality or integrity consequence depend on the downstream engine's evaluation context.

Proof of Concept

Preconditions:
  - DOMPurify built from the affected source (dist/purify.js or an ESM/CJS bundle).
  - A browser (or DOM implementation) with shadow DOM support.
  - Application constructs a DOM node with an attached shadow root before sanitizing,
    and later evaluates the shadow root's text content as a template.

Build a host element whose shadow root holds a template expression split across text nodes separated by disallowed elements, then sanitize in place with SAFE_FOR_TEMPLATES:

const host =…
Record
GHSA-cg2g-xh64-v4q7
CVSS 4.0
9.2 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N
Weakness
CWE-79
Updated
2026-11-02
NVD 5.1

DOMPurify from 3.4.4 before 3.4.17 contains a SAFE_FOR_TEMPLATES bypass that lets attackers preserve template expressions in attached shadow roots when using RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE modes. Attackers can split expressions across text nodes separated by disallowed elements, which merge after removal and are evaluated by downstream template engines for cross-site scripting.

Record
CVE-2026-116804
CVSS 4.0
5.1 MediumCVSS: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
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Weakness
CWE-79
Updated
2026-11-03
OSV 5.1

DOMPurify from 3.4.4 before 3.4.17 SAFE_FOR_TEMPLATES Bypass via Shadow Root Content

DOMPurify from 3.4.4 before 3.4.17 contains a SAFE_FOR_TEMPLATES bypass that lets attackers preserve template expressions in attached shadow roots when using RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE modes. Attackers can split expressions across text nodes separated by disallowed elements, which merge after removal and are evaluated by downstream template engines for cross-site scripting.

Record
CVE-2026-116804
CVSS 4.0
5.1 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
Weakness
CWE-79
Updated
2026-11-04
Show 24 moreShow less
OSVDEBIAN-CVE-2026-116804 5.1

DOMPurify from 3.4.4 before 3.4.17 contains a SAFE_FOR_TEMPLATES bypass that lets attackers preserve template expressions in attached shadow roots when using RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE modes. Attackers can split expressions across text nodes separated by disallowed elements, which merge after removal and are evaluated by downstream template engines for cross-site scripting.

Record
DEBIAN-CVE-2026-116804
CVSS 4.0
5.1 MediumCVSS: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
Updated
2026-11-03
OSVGHSA-cg2g-xh64-v4q7 9.2

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 <template>.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 those elements are removed the fragments become adjacent and serialize into a complete expression that a downstream template engine will evaluate.

Root Cause

SAFE_FOR_TEMPLATES neutralizes template expressions through two mechanisms: a per-text-node strip during the main walk (_stripTemplateExpressions, applied in _sanitizeElements at src/purify.ts:2246), and a final post-walk pass (_scrubTemplateExpressions, src/purify.ts:1717) that normalizes adjacent text nodes and re-strips expressions that only form after merging. The per-node strip cannot catch an expression that is split into individual fragments, because each fragment fails the delimiter regexes. The post-walk pass is the only mechanism that would catch the merged form, but it is structurally unable to reach shadow root content.

_scrubTemplateExpressions (src/purify.ts:1717-1751):
  - node.normalize() at line 1718 does not merge text nodes inside shadow roots (DOM spec).
  - NodeIterator at lines 1723-1731 does not descend into shadow trees (DOM spec).
  - Explicit recursion at lines 1743-1750 enters <template>.content only, via
    querySelectorAll('template'); there is no equivalent recursion into attached
    shadow roots.
Shadow roots are sanitized earlier by _sanitizeShadowDOM (src/purify.ts:2710), which
applies the per-node strip but never performs the post-walk normalize-and-rescrub.

Shadow root text nodes are therefore sanitized only per-node and never re-examined as a merged unit.

Impact

An attacker who controls DOM-node input containing an attached shadow root can inject template expressions that survive sanitization and are later evaluated by the application's template engine. In client-side contexts this yields cross-site scripting; in a server-side template context it can escalate to template injection. Exploitation requires non-default application configuration: the application must enable SAFE_FOR_TEMPLATES and a DOM-returning mode, pass a DOM node that already has an attached shadow root, and feed the sanitized shadow root content into a template evaluator. The shadow root does not have to be built programmatically with attachShadow: in engines that support declarative shadow DOM, attacker-supplied markup containing <template shadowrootmode="open"> parsed through setHTMLUnsafe or Document.parseHTMLUnsafe produces the same attached shadow root, so a plain HTML string reaches the gap once the application is configured this way. Demonstrated capability is injection of a complete, attacker-chosen expression into post-sanitization shadow root content; the resulting script execution and any confidentiality or integrity consequence depend on the downstream engine's evaluation context.

Proof of Concept

Preconditions:
  - DOMPurify built from the affected source (dist/purify.js or an ESM/CJS bundle).
  - A browser (or DOM implementation) with shadow DOM support.
  - Application constructs a DOM node with an attached shadow root before sanitizing,
    and later evaluates the shadow root's text content as a template.

Build a host element whose shadow root holds a template expression split across text nodes separated by disallowed elements, then sanitize in place with SAFE_FOR_TEMPLATES:

const host =…
Record
GHSA-cg2g-xh64-v4q7
CVSS 4.0
9.2 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N
Weakness
CWE-79
Updated
2026-11-02
OSVUBUNTU-CVE-2026-116804 5.1

DOMPurify from 3.4.4 before 3.4.17 contains a SAFE_FOR_TEMPLATES bypass that lets attackers preserve template expressions in attached shadow roots when using RETURN_DOM, RETURN_DOM_FRAGMENT, or IN_PLACE modes. Attackers can split expressions across text nodes separated by disallowed elements, which merge after removal and are evaluated by downstream template engines for cross-site scripting.

Record
UBUNTU-CVE-2026-116804
CVSS 4.0
5.1 MediumCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
CVSS 3.1
6.1 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Updated
2026-11-02
OSVCLSA-2026-1793100794 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.5-tuxcare.5.

Record
CLSA-2026-1793100794
Updated
2026-11-02
OSVCLSA-2026-1793100979 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.8-tuxcare.7.

Record
CLSA-2026-1793100979
Updated
2026-11-02
OSVCLSA-2026-1793101079 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.13-tuxcare.3.

Record
CLSA-2026-1793101079
Updated
2026-11-02
OSVCLSA-2026-1793101206 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.11-tuxcare.5.

Record
CLSA-2026-1793101206
Updated
2026-11-02
OSVCLSA-2026-1793101291 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.6-tuxcare.5.

Record
CLSA-2026-1793101291
Updated
2026-11-02
OSVCLSA-2026-1793101437 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.7-tuxcare.5.

Record
CLSA-2026-1793101437
Updated
2026-11-02
OSVCLSA-2026-1793101539 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.14-tuxcare.4.

Record
CLSA-2026-1793101539
Updated
2026-11-02
OSVCLSA-2026-1793101597 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.9-tuxcare.5.

Record
CLSA-2026-1793101597
Updated
2026-11-02
OSVCLSA-2026-1793101938 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.10-tuxcare.5.

Record
CLSA-2026-1793101938
Updated
2026-11-02
OSVCLSA-2026-1793102164 No score

TuxCare security update for dompurify (4 CVEs)

TuxCare rebuilt dompurify to address 4 CVEs. Fixed in 3.4.12-tuxcare.3.

Record
CLSA-2026-1793102164
Updated
2026-11-02
OSVCLSA-2026-1793102424 No score

TuxCare security update for dompurify (3 CVEs)

TuxCare rebuilt dompurify to address 3 CVEs. Fixed in 3.4.15-tuxcare.3.

Record
CLSA-2026-1793102424
Updated
2026-11-02
OSVCLSA-2026-1793120002 No score

TuxCare security update for dompurify (2 CVEs)

TuxCare rebuilt dompurify to address 2 CVEs. Fixed in 3.4.16-tuxcare.1.

Record
CLSA-2026-1793120002
Updated
2026-11-02
OSVCLSA-2026-1793348733 No score

TuxCare security update for dompurify (1 CVE)

TuxCare rebuilt dompurify to address 1 CVE. Fixed in 3.4.8-tuxcare.8.

Record
CLSA-2026-1793348733
Updated
2026-11-02
OSVCLSA-2026-1793348774 No score

TuxCare security update for dompurify (1 CVE)

TuxCare rebuilt dompurify to address 1 CVE. Fixed in 3.4.9-tuxcare.6.

Record
CLSA-2026-1793348774
Updated
2026-11-02
OSVCLSA-2026-1793348834 No score

TuxCare security update for dompurify (1 CVE)

TuxCare rebuilt dompurify to address 1 CVE. Fixed in 3.4.10-tuxcare.6.

Record
CLSA-2026-1793348834
Updated
2026-11-02
OSVCLSA-2026-1793348929 No score

TuxCare security update for dompurify (1 CVE)

TuxCare rebuilt dompurify to address 1 CVE. Fixed in 3.4.5-tuxcare.6.

Record
CLSA-2026-1793348929
Updated
2026-11-02
OSVCLSA-2026-1793349051 No score

TuxCare security update for dompurify (1 CVE)

TuxCare rebuilt dompurify to address 1 CVE. Fixed in 3.4.12-tuxcare.4.

Record
CLSA-2026-1793349051
Updated
2026-11-02
OSVCLSA-2026-1793349529 No score

TuxCare security update for dompurify (1 CVE)

TuxCare rebuilt dompurify to address 1 CVE. Fixed in 3.4.14-tuxcare.5.

Record
CLSA-2026-1793349529
Updated
2026-11-02
OSVCLSA-2026-1793349839 No score

TuxCare security update for dompurify (1 CVE)

TuxCare rebuilt dompurify to address 1 CVE. Fixed in 3.4.11-tuxcare.6.

Record
CLSA-2026-1793349839
Updated
2026-11-02
OSVCLSA-2026-1793350195 No score

TuxCare security update for dompurify (1 CVE)

TuxCare rebuilt dompurify to address 1 CVE. Fixed in 3.4.15-tuxcare.4.

Record
CLSA-2026-1793350195
Updated
2026-11-02
OSVROOT-APP-NPM-GHSA-cg2g-xh64-v4q7 No score

GHSA-cg2g-xh64-v4q7 in dompurify - Patched by Root

Root has patched GHSA-cg2g-xh64-v4q7 in the dompurify package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-GHSA-cg2g-xh64-v4q7
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
dompurify
npm
3.4.4 to 3.4.16
3.4.17
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.5-tuxcare.0 up to 3.4.5-tuxcare.5, plus listed versions
3.4.53.4.5-tuxcare.13.4.5-tuxcare.23.4.5-tuxcare.33.4.5-tuxcare.4
3.4.5-tuxcare.5
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.8-tuxcare.0 up to 3.4.8-tuxcare.7, plus listed versions
3.4.83.4.8-tuxcare.13.4.8-tuxcare.23.4.8-tuxcare.33.4.8-tuxcare.43.4.8-tuxcare.53.4.8-tuxcare.6
3.4.8-tuxcare.7
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.13-tuxcare.0 up to 3.4.13-tuxcare.3, plus listed versions
3.4.133.4.13-tuxcare.13.4.13-tuxcare.2
3.4.13-tuxcare.3
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.11-tuxcare.0 up to 3.4.11-tuxcare.5, plus listed versions
3.4.113.4.11-tuxcare.13.4.11-tuxcare.23.4.11-tuxcare.33.4.11-tuxcare.4
3.4.11-tuxcare.5
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.6-tuxcare.0 up to 3.4.6-tuxcare.5, plus listed versions
3.4.63.4.6-tuxcare.13.4.6-tuxcare.23.4.6-tuxcare.33.4.6-tuxcare.4
3.4.6-tuxcare.5
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.7-tuxcare.0 up to 3.4.7-tuxcare.5, plus listed versions
3.4.73.4.7-tuxcare.13.4.7-tuxcare.23.4.7-tuxcare.33.4.7-tuxcare.4
3.4.7-tuxcare.5
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.14-tuxcare.0 up to 3.4.14-tuxcare.4, plus listed versions
3.4.143.4.14-tuxcare.13.4.14-tuxcare.23.4.14-tuxcare.3
3.4.14-tuxcare.4
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.9-tuxcare.0 up to 3.4.9-tuxcare.5, plus listed versions
3.4.93.4.9-tuxcare.13.4.9-tuxcare.23.4.9-tuxcare.33.4.9-tuxcare.4
3.4.9-tuxcare.5
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.10-tuxcare.0 up to 3.4.10-tuxcare.5, plus listed versions
3.4.103.4.10-tuxcare.13.4.10-tuxcare.23.4.10-tuxcare.33.4.10-tuxcare.4
3.4.10-tuxcare.5
Show 19 moreShow less
Affected packages
PackageAffectedFixed
dompurify
TuxCare:npm
From an advisory covering 3 CVEs
3.4.12-tuxcare.0 up to 3.4.12-tuxcare.3, plus listed versions
3.4.123.4.12-tuxcare.13.4.12-tuxcare.2
3.4.12-tuxcare.3
dompurify
TuxCare:npm
From an advisory covering 2 CVEs
3.4.15-tuxcare.0 up to 3.4.15-tuxcare.3, plus listed versions
3.4.153.4.15-tuxcare.13.4.15-tuxcare.2
3.4.15-tuxcare.3
dompurify
TuxCare:npm
3.4.16-tuxcare.0 up to 3.4.16-tuxcare.1, plus listed versions
3.4.16
3.4.16-tuxcare.1
dompurify
TuxCare:npm
3.4.8-tuxcare.0 up to 3.4.8-tuxcare.8, plus listed versions
3.4.83.4.8-tuxcare.13.4.8-tuxcare.23.4.8-tuxcare.33.4.8-tuxcare.43.4.8-tuxcare.53.4.8-tuxcare.63.4.8-tuxcare.7
3.4.8-tuxcare.8
dompurify
TuxCare:npm
3.4.9-tuxcare.0 up to 3.4.9-tuxcare.6, plus listed versions
3.4.93.4.9-tuxcare.13.4.9-tuxcare.23.4.9-tuxcare.33.4.9-tuxcare.43.4.9-tuxcare.5
3.4.9-tuxcare.6
dompurify
TuxCare:npm
3.4.10-tuxcare.0 up to 3.4.10-tuxcare.6, plus listed versions
3.4.103.4.10-tuxcare.13.4.10-tuxcare.23.4.10-tuxcare.33.4.10-tuxcare.43.4.10-tuxcare.5
3.4.10-tuxcare.6
dompurify
TuxCare:npm
3.4.5-tuxcare.0 up to 3.4.5-tuxcare.6, plus listed versions
3.4.53.4.5-tuxcare.13.4.5-tuxcare.23.4.5-tuxcare.33.4.5-tuxcare.43.4.5-tuxcare.5
3.4.5-tuxcare.6
dompurify
TuxCare:npm
3.4.12-tuxcare.0 up to 3.4.12-tuxcare.4, plus listed versions
3.4.123.4.12-tuxcare.13.4.12-tuxcare.23.4.12-tuxcare.3
3.4.12-tuxcare.4
dompurify
TuxCare:npm
3.4.14-tuxcare.0 up to 3.4.14-tuxcare.5, plus listed versions
3.4.143.4.14-tuxcare.13.4.14-tuxcare.23.4.14-tuxcare.33.4.14-tuxcare.4
3.4.14-tuxcare.5
dompurify
TuxCare:npm
3.4.11-tuxcare.0 up to 3.4.11-tuxcare.6, plus listed versions
3.4.113.4.11-tuxcare.13.4.11-tuxcare.23.4.11-tuxcare.33.4.11-tuxcare.43.4.11-tuxcare.5
3.4.11-tuxcare.6
dompurify
TuxCare:npm
3.4.15-tuxcare.0 up to 3.4.15-tuxcare.4, plus listed versions
3.4.153.4.15-tuxcare.13.4.15-tuxcare.23.4.15-tuxcare.3
3.4.15-tuxcare.4
node-dompurify
Debian:14
before 3.4.17+dfsg-1, plus listed versions
3.1.7+dfsg+~3.0.5-23.2.5+dfsg-13.3.2+dfsg-13.3.3+dfsg-13.3.3+dfsg-2
Show 7 moreShow less
3.4.1+dfsg-13.4.12+dfsg-13.4.13+dfsg-13.4.13+dfsg-23.4.16+dfsg-13.4.2+dfsg-13.4.5+dfsg-1
3.4.17+dfsg-1
dompurify
npm
3.4.4 up to 3.4.17
3.4.17
dompurify
Root:npm
before 3.4.11-aikido.1
3.4.11-aikido.13.4.13-aikido.13.4.14-aikido.13.4.15-aikido.13.4.15-aikido.23.4.16-aikido.13.4.16-aikido.2
@rootio/dompurify
Root:npm
before 3.4.11-root.io.1
3.4.11-root.io.13.4.13-root.io.13.4.14-root.io.13.4.15-root.io.13.4.15-root.io.23.4.16-root.io.13.4.16-root.io.2
node-dompurify
Ubuntu:22.04:LTS
All versions, plus listed versions
2.3.0+dfsg-22.3.3+dfsg-1
None known
node-dompurify
Ubuntu:24.04:LTS
All versions, plus listed versions
2.4.1+dfsg+~2.4.0-13.0.9+dfsg+~3.0.5-1
None known
node-dompurify
Ubuntu:26.10
All versions, plus listed versions
3.3.3+dfsg-13.4.2+dfsg-13.4.5+dfsg-13.4.12+dfsg-13.4.13+dfsg-13.4.13+dfsg-2
None known
node-dompurify
Ubuntu:26.04:LTS
All versions, plus listed versions
3.1.7+dfsg+~3.0.5-23.3.3+dfsg-1
None known

History

History
RecordedChangedSources
affected
factsEUVD, OSV
affectedNVD, OSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-116804 is a medium vulnerability (CVSS 5.1) in Cure53 Dompurify, published October 22, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.18%, the 7th percentile. Fixed in dompurify 3.4.17.

References

Show 7 moreShow less
This page doesn't list everything

Left out here: the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open