CVE-2026-65901
DOMPurify 3.4.6 Cross-Site Scripting via IN_PLACE nodeName
DOMPurify through 3.4.6 contains a cross-site scripting vulnerability in IN_PLACE mode that trusts attacker-controlled nodeName on live non-form nodes. Attackers can supply hostile live DOM objects with real script children whose observable nodeName is clobbered to appear as allowed elements, causing scripts to execute when the sanitized tree is inserted into a live document.
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
What each source reports
CVE List Score used 5.1
DOMPurify 3.4.6 Cross-Site Scripting via IN_PLACE nodeName
DOMPurify through 3.4.6 contains a cross-site scripting vulnerability in IN_PLACE mode that trusts attacker-controlled nodeName on live non-form nodes. Attackers can supply hostile live DOM objects with real script children whose observable nodeName is clobbered to appear as allowed elements, causing scripts to execute when the sanitized tree is inserted into a live document.
- Record
CVE-2026-65901- CVSS 4.0
- 5.1 Medium
CVSS: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 Medium
CVSS: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-48270 5.1
DOMPurify through 3.4.6 contains a cross-site scripting vulnerability in IN_PLACE mode that trusts attacker-controlled nodeName on live non-form nodes. Attackers can supply hostile live DOM objects with real script children whose observable nodeName is clobbered to appear as allowed elements, causing scripts to execute when the sanitized tree is inserted into a live document.
- Record
EUVD-2026-48270- CVSS 4.0
- 5.1 Medium
CVSS: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-02
GitHub AdvisoriesGHSA-x4vx-rjvf-j5p4No score
DOMPurify: `IN_PLACE` mode trusts attacker-controlled `nodeName` on live non-form nodes, allowing script retention and XSS via attacker-supplied DOM objects
Summary
When DOMPurify.sanitize(root, { IN_PLACE: true }) is called on an attacker-supplied live DOM node, DOMPurify still trusts currentNode.nodeName for non-form nodes in the main _sanitizeElements pipeline. A real <script> child node whose observable nodeName is attacker-controlled can therefore be misclassified as an allowed element and retained. When the sanitized tree is inserted into a live document, the script executes.
This affects current 3.4.6. The recent IN_PLACE hardening work covers clobbered form handling and foreign-realm shadow/template traversal, but does not harden the main per-node element decision for hostile non-form live nodes.
Affected
- DOMPurify
3.4.6 - Any caller that does
DOMPurify.sanitize(node, { IN_PLACE: true })on attacker-supplied live DOM nodes - Verified attacker-controlled node sources:
- same-origin
iframe→ live node passed by reference - same-origin
window.open()popup → live node passed by reference - same-origin foreign node adopted into the host document via
document.adoptNode(node)and then sanitized in-place
- same-origin
Not affected:
- String-input
DOMPurify.sanitize(dirtyString)
Vulnerability details
Code paths
[A] — _sanitizeElements uses the instance-visible nodeName for the allow/forbid decision:
const _sanitizeElements = function (currentNode: any): boolean {
...
if (_isClobbered(currentNode)) {
_forceRemove(currentNode);
return true;
}
const tagName = transformCaseFunc(currentNode.nodeName);
...
if (
FORBID_TAGS[tagName] ||
(!(...) && !ALLOWED_TAGS[tagName])
) {
...
_forceRemove(currentNode);
return true;
}
...
};
For non-form nodes, _isClobbered(currentNode) returns false early. The subsequent element decision therefore trusts currentNode.nodeName directly.
[B] — _isClobbered is form-specific:
const _isClobbered = function (element: Element): boolean {
const realTagName = getNodeName ? getNodeName(element) : null;
if (typeof realTagName !== 'string') {
return false;
}
if (transformCaseFunc(realTagName) !== 'form') {
return false;
}
return (...);
};
The hardening is intentionally scoped to form. Non-form nodes are not checked for divergence between the instance-visible property view and the trusted prototype getter view.
Why the bypass works
The attack does not depend on string HTML parsing. It depends on a hostile live DOM object crossing a trust boundary into DOMPurify's IN_PLACE pipeline.
If the attacker controls a same-origin subcontext (iframe or popup), they can prepare a real DOM subtree there and then pass the live node object by reference to a host page that trusts DOMPurify.sanitize(node, { IN_PLACE: true }) as its final sanitization step.
For the verified primitive below:
- the real child node is
<script> - its script text is attacker-controlled
- the observable
nodeNameis attacker-controlled and made to appear as"DIV" _sanitizeElementstherefore classifies the real<script>child as an allowed element- the real
<script>survives in the sanitized tree and executes on insertion
This primitive survives:
- direct reference passing
document.adoptNode(node)followed byIN_PLACE
It does not survive:
importNodecloneNode
because those paths materialize a fresh node and discard the hostile object semantics.
Proof of concept
(1) Minimal — runnable in a single browser context
<!doctype html>
<html><body>
<script src="dist/purify.js"></script>
<script>
const foreign = window.open('about:blank', '_blank', 'noopener=no');
const host = foreign.document.createElement('div');
const script = foreign.document.createElement('script');
script.textContent = 'window.__pwned = 1';
Object.defineProperty(script, 'nodeName', {
value: 'DIV',
configurable: true,
});
host.appendChild(script);
DOMPurify.sanitize(host, {…
- Record
GHSA-x4vx-rjvf-j5p4- Weakness
- CWE-79
- Updated
- 2026-11-02
NVD 5.1
DOMPurify through 3.4.6 contains a cross-site scripting vulnerability in IN_PLACE mode that trusts attacker-controlled nodeName on live non-form nodes. Attackers can supply hostile live DOM objects with real script children whose observable nodeName is clobbered to appear as allowed elements, causing scripts to execute when the sanitized tree is inserted into a live document.
- Record
CVE-2026-65901- CVSS 4.0
- 5.1 Medium
CVSS: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 Medium
CVSS: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
OSV 5.1
DOMPurify 3.4.6 Cross-Site Scripting via IN_PLACE nodeName
DOMPurify through 3.4.6 contains a cross-site scripting vulnerability in IN_PLACE mode that trusts attacker-controlled nodeName on live non-form nodes. Attackers can supply hostile live DOM objects with real script children whose observable nodeName is clobbered to appear as allowed elements, causing scripts to execute when the sanitized tree is inserted into a live document.
- Record
CVE-2026-65901- CVSS 4.0
- 5.1 Medium
CVSS: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-02
OSVDEBIAN-CVE-2026-65901 6.1
DOMPurify through 3.4.6 contains a cross-site scripting vulnerability in IN_PLACE mode that trusts attacker-controlled nodeName on live non-form nodes. Attackers can supply hostile live DOM objects with real script children whose observable nodeName is clobbered to appear as allowed elements, causing scripts to execute when the sanitized tree is inserted into a live document.
- Record
DEBIAN-CVE-2026-65901- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
Show 38 moreShow less
OSVRHSA-2026:58500 6.1
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:58500- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-13
OSVRHSA-2026:58502 6.1
Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update
- Record
RHSA-2026:58502- CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-13
OSVUBUNTU-CVE-2026-65901 5.1
DOMPurify through 3.4.6 contains a cross-site scripting vulnerability in IN_PLACE mode that trusts attacker-controlled nodeName on live non-form nodes. Attackers can supply hostile live DOM objects with real script children whose observable nodeName is clobbered to appear as allowed elements, causing scripts to execute when the sanitized tree is inserted into a live document.
- Record
UBUNTU-CVE-2026-65901- CVSS 4.0
- 5.1 Medium
CVSS: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 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Updated
- 2026-11-02
OSVCLSA-2026-1784596279No score
TuxCare security update for dompurify (7 CVEs)
TuxCare rebuilt dompurify to address 7 CVEs. Fixed in 3.0.3-tuxcare.2.
- Record
CLSA-2026-1784596279- Updated
- 2026-11-02
OSVCLSA-2026-1784596351No score
TuxCare security update for dompurify (1 CVE)
TuxCare rebuilt dompurify to address 1 CVE. Fixed in 2.5.8-tuxcare.5.
- Record
CLSA-2026-1784596351- Updated
- 2026-11-02
OSVCLSA-2026-1784682973No score
TuxCare security update for dompurify (1 CVE)
TuxCare rebuilt dompurify to address 1 CVE. Fixed in 2.4.7-tuxcare.3.
- Record
CLSA-2026-1784682973- Updated
- 2026-11-02
OSVCLSA-2026-1784682987No score
TuxCare security update for dompurify (8 CVEs)
TuxCare rebuilt dompurify to address 8 CVEs. Fixed in 3.2.3-tuxcare.2.
- Record
CLSA-2026-1784682987- Updated
- 2026-11-02
OSVCLSA-2026-1784683092No score
TuxCare security update for dompurify (1 CVE)
TuxCare rebuilt dompurify to address 1 CVE. Fixed in 2.4.3-tuxcare.5.
- Record
CLSA-2026-1784683092- Updated
- 2026-11-02
OSVCLSA-2026-1784769526No score
TuxCare security update for dompurify (1 CVE)
TuxCare rebuilt dompurify to address 1 CVE. Fixed in 2.4.0-tuxcare.3.
- Record
CLSA-2026-1784769526- Updated
- 2026-11-02
OSVCLSA-2026-1784856036No score
TuxCare security update for dompurify (1 CVE)
TuxCare rebuilt dompurify to address 1 CVE. Fixed in 2.3.0-tuxcare.4.
- Record
CLSA-2026-1784856036- Updated
- 2026-11-02
OSVCLSA-2026-1786636600No score
TuxCare security update for dompurify (16 CVEs)
TuxCare rebuilt dompurify to address 16 CVEs. Fixed in 2.4.0-tuxcare.1.
- Record
CLSA-2026-1786636600- Updated
- 2026-11-02
OSVCLSA-2026-1786636613No score
TuxCare security update for dompurify (11 CVEs)
TuxCare rebuilt dompurify to address 11 CVEs. Fixed in 2.4.3-tuxcare.1.
- Record
CLSA-2026-1786636613- Updated
- 2026-11-02
OSVCLSA-2026-1786731853No score
TuxCare security update for dompurify (10 CVEs)
TuxCare rebuilt dompurify to address 10 CVEs. Fixed in 3.2.3-tuxcare.3.
- Record
CLSA-2026-1786731853- Updated
- 2026-11-02
OSVCLSA-2026-1787602198No score
TuxCare security update for dompurify (10 CVEs)
TuxCare rebuilt dompurify to address 10 CVEs. Fixed in 3.2.7-tuxcare.1.
- Record
CLSA-2026-1787602198- Updated
- 2026-11-02
OSVCLSA-2026-1789153936No score
TuxCare security update for dompurify (9 CVEs)
TuxCare rebuilt dompurify to address 9 CVEs. Fixed in 2.4.0-tuxcare.5.
- Record
CLSA-2026-1789153936- Updated
- 2026-11-02
OSVCLSA-2026-1789155659No score
TuxCare security update for dompurify (12 CVEs)
TuxCare rebuilt dompurify to address 12 CVEs. Fixed in 2.4.3-tuxcare.8.
- Record
CLSA-2026-1789155659- Updated
- 2026-11-02
OSVCLSA-2026-1792157013No score
TuxCare security update for dompurify (13 CVEs)
TuxCare rebuilt dompurify to address 13 CVEs. Fixed in 3.1.0-tuxcare.2.
- Record
CLSA-2026-1792157013- Updated
- 2026-11-02
OSVCLSA-2026-1792157349No score
TuxCare security update for dompurify (5 CVEs)
TuxCare rebuilt dompurify to address 5 CVEs. Fixed in 3.4.6-tuxcare.2.
- Record
CLSA-2026-1792157349- Updated
- 2026-11-02
OSVCLSA-2026-1792424339No score
TuxCare security update for dompurify (10 CVEs)
TuxCare rebuilt dompurify to address 10 CVEs. Fixed in 2.0.8-tuxcare.3.
- Record
CLSA-2026-1792424339- Updated
- 2026-11-02
OSVCLSA-2026-1792424449No score
TuxCare security update for dompurify (12 CVEs)
TuxCare rebuilt dompurify to address 12 CVEs. Fixed in 2.3.3-tuxcare.3.
- Record
CLSA-2026-1792424449- Updated
- 2026-11-05
OSVCLSA-2026-1792424561No score
TuxCare security update for dompurify (9 CVEs)
TuxCare rebuilt dompurify to address 9 CVEs. Fixed in 3.3.3-tuxcare.3.
- Record
CLSA-2026-1792424561- Updated
- 2026-11-02
OSVCLSA-2026-1792424669No score
TuxCare security update for dompurify (9 CVEs)
TuxCare rebuilt dompurify to address 9 CVEs. Fixed in 3.2.6-tuxcare.3.
- Record
CLSA-2026-1792424669- Updated
- 2026-11-02
OSVCLSA-2026-1792424891No score
TuxCare security update for dompurify (13 CVEs)
TuxCare rebuilt dompurify to address 13 CVEs. Fixed in 2.3.10-tuxcare.3.
- Record
CLSA-2026-1792424891- Updated
- 2026-11-02
OSVCLSA-2026-1792486117No score
TuxCare security update for dompurify (10 CVEs)
TuxCare rebuilt dompurify to address 10 CVEs. Fixed in 3.0.1-tuxcare.3.
- Record
CLSA-2026-1792486117- Updated
- 2026-11-02
OSVCLSA-2026-1792486395No score
TuxCare security update for dompurify (4 CVEs)
TuxCare rebuilt dompurify to address 4 CVEs. Fixed in 3.4.5-tuxcare.3.
- Record
CLSA-2026-1792486395- Updated
- 2026-11-02
OSVCLSA-2026-1792486837No score
TuxCare security update for dompurify (10 CVEs)
TuxCare rebuilt dompurify to address 10 CVEs. Fixed in 3.0.2-tuxcare.3.
- Record
CLSA-2026-1792486837- Updated
- 2026-11-02
OSVCLSA-2026-1792495646No score
TuxCare security update for dompurify (8 CVEs)
TuxCare rebuilt dompurify to address 8 CVEs. Fixed in 3.0.8-tuxcare.3.
- Record
CLSA-2026-1792495646- Updated
- 2026-11-02
OSVCLSA-2026-1792496766No score
TuxCare security update for dompurify (9 CVEs)
TuxCare rebuilt dompurify to address 9 CVEs. Fixed in 3.0.9-tuxcare.3.
- Record
CLSA-2026-1792496766- Updated
- 2026-11-02
OSVCLSA-2026-1792496994No score
TuxCare security update for dompurify (7 CVEs)
TuxCare rebuilt dompurify to address 7 CVEs. Fixed in 3.0.11-tuxcare.3.
- Record
CLSA-2026-1792496994- Updated
- 2026-11-02
OSVCLSA-2026-1792593858No score
TuxCare security update for dompurify (8 CVEs)
TuxCare rebuilt dompurify to address 8 CVEs. Fixed in 3.1.3-tuxcare.3.
- Record
CLSA-2026-1792593858- Updated
- 2026-11-02
OSVCLSA-2026-1792593965No score
TuxCare security update for dompurify (10 CVEs)
TuxCare rebuilt dompurify to address 10 CVEs. Fixed in 3.1.2-tuxcare.3.
- Record
CLSA-2026-1792593965- Updated
- 2026-11-02
OSVCLSA-2026-1792594075No score
TuxCare security update for dompurify (11 CVEs)
TuxCare rebuilt dompurify to address 11 CVEs. Fixed in 3.1.1-tuxcare.3.
- Record
CLSA-2026-1792594075- Updated
- 2026-11-02
OSVCLSA-2026-1792594185No score
TuxCare security update for dompurify (8 CVEs)
TuxCare rebuilt dompurify to address 8 CVEs. Fixed in 3.1.4-tuxcare.3.
- Record
CLSA-2026-1792594185- Updated
- 2026-11-02
OSVCLSA-2026-1792929243No score
TuxCare security update for dompurify (7 CVEs)
TuxCare rebuilt dompurify to address 7 CVEs. Fixed in 3.0.6-tuxcare.5.
- Record
CLSA-2026-1792929243- Updated
- 2026-11-02
OSVCLSA-2026-1792933945No score
TuxCare security update for dompurify (12 CVEs)
TuxCare rebuilt dompurify to address 12 CVEs. Fixed in 3.4.0-tuxcare.1.
- Record
CLSA-2026-1792933945- Updated
- 2026-11-02
OSVCLSA-2026-1793101871No score
TuxCare security update for dompurify (11 CVEs)
TuxCare rebuilt dompurify to address 11 CVEs. Fixed in 3.0.5-tuxcare.4.
- Record
CLSA-2026-1793101871- Updated
- 2026-11-02
OSVCLSA-2026-1793102041No score
TuxCare security update for dompurify (11 CVEs)
TuxCare rebuilt dompurify to address 11 CVEs. Fixed in 3.0.4-tuxcare.4.
- Record
CLSA-2026-1793102041- Updated
- 2026-11-02
OSVGHSA-x4vx-rjvf-j5p4No score
DOMPurify: `IN_PLACE` mode trusts attacker-controlled `nodeName` on live non-form nodes, allowing script retention and XSS via attacker-supplied DOM objects
Summary
When DOMPurify.sanitize(root, { IN_PLACE: true }) is called on an attacker-supplied live DOM node, DOMPurify still trusts currentNode.nodeName for non-form nodes in the main _sanitizeElements pipeline. A real <script> child node whose observable nodeName is attacker-controlled can therefore be misclassified as an allowed element and retained. When the sanitized tree is inserted into a live document, the script executes.
This affects current 3.4.6. The recent IN_PLACE hardening work covers clobbered form handling and foreign-realm shadow/template traversal, but does not harden the main per-node element decision for hostile non-form live nodes.
Affected
- DOMPurify
3.4.6 - Any caller that does
DOMPurify.sanitize(node, { IN_PLACE: true })on attacker-supplied live DOM nodes - Verified attacker-controlled node sources:
- same-origin
iframe→ live node passed by reference - same-origin
window.open()popup → live node passed by reference - same-origin foreign node adopted into the host document via
document.adoptNode(node)and then sanitized in-place
- same-origin
Not affected:
- String-input
DOMPurify.sanitize(dirtyString)
Vulnerability details
Code paths
[A] — _sanitizeElements uses the instance-visible nodeName for the allow/forbid decision:
const _sanitizeElements = function (currentNode: any): boolean {
...
if (_isClobbered(currentNode)) {
_forceRemove(currentNode);
return true;
}
const tagName = transformCaseFunc(currentNode.nodeName);
...
if (
FORBID_TAGS[tagName] ||
(!(...) && !ALLOWED_TAGS[tagName])
) {
...
_forceRemove(currentNode);
return true;
}
...
};
For non-form nodes, _isClobbered(currentNode) returns false early. The subsequent element decision therefore trusts currentNode.nodeName directly.
[B] — _isClobbered is form-specific:
const _isClobbered = function (element: Element): boolean {
const realTagName = getNodeName ? getNodeName(element) : null;
if (typeof realTagName !== 'string') {
return false;
}
if (transformCaseFunc(realTagName) !== 'form') {
return false;
}
return (...);
};
The hardening is intentionally scoped to form. Non-form nodes are not checked for divergence between the instance-visible property view and the trusted prototype getter view.
Why the bypass works
The attack does not depend on string HTML parsing. It depends on a hostile live DOM object crossing a trust boundary into DOMPurify's IN_PLACE pipeline.
If the attacker controls a same-origin subcontext (iframe or popup), they can prepare a real DOM subtree there and then pass the live node object by reference to a host page that trusts DOMPurify.sanitize(node, { IN_PLACE: true }) as its final sanitization step.
For the verified primitive below:
- the real child node is
<script> - its script text is attacker-controlled
- the observable
nodeNameis attacker-controlled and made to appear as"DIV" _sanitizeElementstherefore classifies the real<script>child as an allowed element- the real
<script>survives in the sanitized tree and executes on insertion
This primitive survives:
- direct reference passing
document.adoptNode(node)followed byIN_PLACE
It does not survive:
importNodecloneNode
because those paths materialize a fresh node and discard the hostile object semantics.
Proof of concept
(1) Minimal — runnable in a single browser context
<!doctype html>
<html><body>
<script src="dist/purify.js"></script>
<script>
const foreign = window.open('about:blank', '_blank', 'noopener=no');
const host = foreign.document.createElement('div');
const script = foreign.document.createElement('script');
script.textContent = 'window.__pwned = 1';
Object.defineProperty(script, 'nodeName', {
value: 'DIV',
configurable: true,
});
host.appendChild(script);
DOMPurify.sanitize(host, {…
- Record
GHSA-x4vx-rjvf-j5p4- Weakness
- CWE-79
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
dompurifynpm | through 3.4.6 | None known |
dompurifyTuxCare:npm From an advisory covering 2 CVEs | 3.0.3-tuxcare.0 up to 3.0.3-tuxcare.2, plus listed versions 3.0.33.0.3-tuxcare.1 | 3.0.3-tuxcare.2 |
dompurifyTuxCare:npm | 2.5.8-tuxcare.0 up to 2.5.8-tuxcare.5, plus listed versions 2.5.82.5.8-tuxcare.12.5.8-tuxcare.22.5.8-tuxcare.32.5.8-tuxcare.4 | 2.5.8-tuxcare.5 |
dompurifyTuxCare:npm | 2.4.7-tuxcare.0 up to 2.4.7-tuxcare.3, plus listed versions 2.4.72.4.7-tuxcare.12.4.7-tuxcare.2 | 2.4.7-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 2 CVEs | 3.2.3-tuxcare.0 up to 3.2.3-tuxcare.2, plus listed versions 3.2.33.2.3-tuxcare.1 | 3.2.3-tuxcare.2 |
dompurifyTuxCare:npm | 2.4.3-tuxcare.0 up to 2.4.3-tuxcare.5, plus listed versions 2.4.32.4.3-tuxcare.12.4.3-tuxcare.22.4.3-tuxcare.32.4.3-tuxcare.4 | 2.4.3-tuxcare.5 |
dompurifyTuxCare:npm | 2.4.0-tuxcare.0 up to 2.4.0-tuxcare.3, plus listed versions 2.4.02.4.0-tuxcare.12.4.0-tuxcare.2 | 2.4.0-tuxcare.3 |
dompurifyTuxCare:npm | 2.3.0-tuxcare.0 up to 2.3.0-tuxcare.4, plus listed versions 2.3.02.3.0-tuxcare.12.3.0-tuxcare.22.3.0-tuxcare.3 | 2.3.0-tuxcare.4 |
dompurifyTuxCare:npm From an advisory covering 9 CVEs | 3.2.3-tuxcare.0 up to 3.2.3-tuxcare.3, plus listed versions 3.2.33.2.3-tuxcare.13.2.3-tuxcare.2 | 3.2.3-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 8 CVEs | 3.2.7-tuxcare.0 up to 3.2.7-tuxcare.1, plus listed versions 3.2.7 | 3.2.7-tuxcare.1 |
Show 32 moreShow less
| Package | Affected | Fixed |
|---|---|---|
dompurifyTuxCare:npm From an advisory covering 8 CVEs | 2.4.0-tuxcare.0 up to 2.4.0-tuxcare.5, plus listed versions 2.4.02.4.0-tuxcare.12.4.0-tuxcare.22.4.0-tuxcare.32.4.0-tuxcare.4 | 2.4.0-tuxcare.5 |
dompurifyTuxCare:npm From an advisory covering 11 CVEs | 2.4.3-tuxcare.0 up to 2.4.3-tuxcare.8, plus listed versions 2.4.32.4.3-tuxcare.12.4.3-tuxcare.22.4.3-tuxcare.32.4.3-tuxcare.42.4.3-tuxcare.52.4.3-tuxcare.62.4.3-tuxcare.7 | 2.4.3-tuxcare.8 |
dompurifyTuxCare:npm From an advisory covering 13 CVEs | 3.1.0-tuxcare.0 up to 3.1.0-tuxcare.2, plus listed versions 3.1.03.1.0-tuxcare.1 | 3.1.0-tuxcare.2 |
dompurifyTuxCare:npm From an advisory covering 4 CVEs | 3.4.6-tuxcare.0 up to 3.4.6-tuxcare.2, plus listed versions 3.4.63.4.6-tuxcare.1 | 3.4.6-tuxcare.2 |
dompurifyTuxCare:npm From an advisory covering 10 CVEs | 2.0.8-tuxcare.0 up to 2.0.8-tuxcare.3, plus listed versions 2.0.82.0.8-tuxcare.12.0.8-tuxcare.2 | 2.0.8-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 12 CVEs | 2.3.3-tuxcare.0 up to 2.3.3-tuxcare.3, plus listed versions 2.3.32.3.3-tuxcare.12.3.3-tuxcare.2 | 2.3.3-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 9 CVEs | 3.3.3-tuxcare.0 up to 3.3.3-tuxcare.3, plus listed versions 3.3.33.3.3-tuxcare.13.3.3-tuxcare.2 | 3.3.3-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 9 CVEs | 3.2.6-tuxcare.0 up to 3.2.6-tuxcare.3, plus listed versions 3.2.63.2.6-tuxcare.13.2.6-tuxcare.2 | 3.2.6-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 13 CVEs | 2.3.10-tuxcare.0 up to 2.3.10-tuxcare.3, plus listed versions 2.3.102.3.10-tuxcare.12.3.10-tuxcare.2 | 2.3.10-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 10 CVEs | 3.0.1-tuxcare.0 up to 3.0.1-tuxcare.3, plus listed versions 3.0.13.0.1-tuxcare.13.0.1-tuxcare.2 | 3.0.1-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 4 CVEs | 3.4.5-tuxcare.0 up to 3.4.5-tuxcare.3, plus listed versions 3.4.53.4.5-tuxcare.13.4.5-tuxcare.2 | 3.4.5-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 10 CVEs | 3.0.2-tuxcare.0 up to 3.0.2-tuxcare.3, plus listed versions 3.0.23.0.2-tuxcare.13.0.2-tuxcare.2 | 3.0.2-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 8 CVEs | 3.0.8-tuxcare.0 up to 3.0.8-tuxcare.3, plus listed versions 3.0.83.0.8-tuxcare.13.0.8-tuxcare.2 | 3.0.8-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 9 CVEs | 3.0.9-tuxcare.0 up to 3.0.9-tuxcare.3, plus listed versions 3.0.93.0.9-tuxcare.13.0.9-tuxcare.2 | 3.0.9-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 7 CVEs | 3.0.11-tuxcare.0 up to 3.0.11-tuxcare.3, plus listed versions 3.0.113.0.11-tuxcare.13.0.11-tuxcare.2 | 3.0.11-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 8 CVEs | 3.1.3-tuxcare.0 up to 3.1.3-tuxcare.3, plus listed versions 3.1.33.1.3-tuxcare.13.1.3-tuxcare.2 | 3.1.3-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 10 CVEs | 3.1.2-tuxcare.0 up to 3.1.2-tuxcare.3, plus listed versions 3.1.23.1.2-tuxcare.13.1.2-tuxcare.2 | 3.1.2-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 11 CVEs | 3.1.1-tuxcare.0 up to 3.1.1-tuxcare.3, plus listed versions 3.1.13.1.1-tuxcare.13.1.1-tuxcare.2 | 3.1.1-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 8 CVEs | 3.1.4-tuxcare.0 up to 3.1.4-tuxcare.3, plus listed versions 3.1.43.1.4-tuxcare.13.1.4-tuxcare.2 | 3.1.4-tuxcare.3 |
dompurifyTuxCare:npm From an advisory covering 5 CVEs | 3.0.6-tuxcare.0 up to 3.0.6-tuxcare.5, plus listed versions 3.0.63.0.6-tuxcare.13.0.6-tuxcare.23.0.6-tuxcare.33.0.6-tuxcare.4 | 3.0.6-tuxcare.5 |
dompurifyTuxCare:npm From an advisory covering 9 CVEs | 3.4.0-tuxcare.0 up to 3.4.0-tuxcare.1, plus listed versions 3.4.0 | 3.4.0-tuxcare.1 |
dompurifyTuxCare:npm From an advisory covering 10 CVEs | 3.0.5-tuxcare.0 up to 3.0.5-tuxcare.4, plus listed versions 3.0.53.0.5-tuxcare.13.0.5-tuxcare.23.0.5-tuxcare.3 | 3.0.5-tuxcare.4 |
dompurifyTuxCare:npm From an advisory covering 10 CVEs | 3.0.4-tuxcare.0 up to 3.0.4-tuxcare.4, plus listed versions 3.0.43.0.4-tuxcare.13.0.4-tuxcare.23.0.4-tuxcare.3 | 3.0.4-tuxcare.4 |
node-dompurifyDebian:12 | All versions, plus listed versions 2.4.1+dfsg+~2.4.0-12.4.1+dfsg+~2.4.0-22.4.1+dfsg+~2.4.0-2+deb12u13.0.9+dfsg+~3.0.5-13.1.6+dfsg+~3.0.5-1 Show 13 moreShow less3.1.7+dfsg+~3.0.5-13.1.7+dfsg+~3.0.5-23.2.5+dfsg-13.3.2+dfsg-13.3.3+dfsg-13.3.3+dfsg-23.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 | None known |
node-dompurifyDebian:13 | All versions, 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 less3.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 | None known |
node-dompurifyDebian:14 | before 3.4.12+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-23.4.1+dfsg-13.4.2+dfsg-13.4.5+dfsg-1 | 3.4.12+dfsg-1 |
grafana12.4Red Hat:hummingbird:1 From an advisory covering 8 CVEs | before 0:12.4.8-0.1.2.hum1 | 0:12.4.8-0.1.2.hum1 |
grafana13.1Red Hat:hummingbird:1 From an advisory covering 4 CVEs | before 0:13.1.3-0.1.3.hum1 | 0:13.1.3-0.1.3.hum1 |
node-dompurifyUbuntu:22.04:LTS | All versions, plus listed versions 2.3.0+dfsg-22.3.3+dfsg-1 | None known |
node-dompurifyUbuntu: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-dompurifyUbuntu: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-dompurifyUbuntu:26.04:LTS | All versions, plus listed versions 3.1.7+dfsg+~3.0.5-23.3.3+dfsg-1 | None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, aliases, published, references | ||
| affected | ||
| facts | OSV | |
| affected | ||
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-65901 is a medium vulnerability (CVSS 5.1) in Cure53 Dompurify, published June 15, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.29%, the 21st percentile. Fixed in dompurify 2.5.8-tuxcare.5.
References
github.com/cure53/DOMPurify/security/advisories/GHSA-x4vx-rjvf-j5p4
vulncheck.com/advisories/dompurify-cross-site-scripting-via-in-place-nodename
github.com/advisories/GHSA-x4vx-rjvf-j5p4
github.com/CVEProject/cvelistV5/tree/main/cves/2026/65xxx/CVE-2026-65901.json
nvd.nist.gov/vuln/detail/CVE-2026-65901
security-tracker.debian.org/tracker/CVE-2026-65901
Show 55 moreShow less
github.com/cure53/DOMPurify
access.redhat.com/errata/RHSA-2026:58500
access.redhat.com/security/cve/CVE-2026-65898
access.redhat.com/security/cve/CVE-2026-65899
access.redhat.com/security/cve/CVE-2026-65901
access.redhat.com/security/cve/CVE-2026-65902
access.redhat.com/security/cve/CVE-2026-65911
access.redhat.com/security/cve/CVE-2026-65912
access.redhat.com/security/cve/CVE-2026-65913
access.redhat.com/security/cve/CVE-2026-65914
access.redhat.com/security/updates/classification
images.redhat.com
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58500.json
bugzilla.redhat.com/show_bug.cgi?id=2506436
cve.org/CVERecord?id=CVE-2026-65898
nvd.nist.gov/vuln/detail/CVE-2026-65898
github.com/cure53/DOMPurify/security/advisories/GHSA-cmwh-pvxp-8882
vulncheck.com/advisories/dompurify-before-permanent-attribute-allowlist-pollution-via-setconfig
bugzilla.redhat.com/show_bug.cgi?id=2506428
cve.org/CVERecord?id=CVE-2026-65899
nvd.nist.gov/vuln/detail/CVE-2026-65899
github.com/cure53/DOMPurify/commit/825e617753ac1169306a542d3174a77f717a0cf6
github.com/cure53/DOMPurify/security/advisories/GHSA-vxr8-fq34-vvx9
vulncheck.com/advisories/dompurify-before-trusted-types-policy-state-contamination
bugzilla.redhat.com/show_bug.cgi?id=2506432
cve.org/CVERecord?id=CVE-2026-65901
bugzilla.redhat.com/show_bug.cgi?id=2506431
cve.org/CVERecord?id=CVE-2026-65902
nvd.nist.gov/vuln/detail/CVE-2026-65902
github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36
github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm
vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags
bugzilla.redhat.com/show_bug.cgi?id=2506434
cve.org/CVERecord?id=CVE-2026-65911
nvd.nist.gov/vuln/detail/CVE-2026-65911
github.com/cure53/DOMPurify/security/advisories/GHSA-9p3w-6h5p-cv75
vulncheck.com/advisories/dompurify-before-xss-via-add-attr-add-tags-state-leakage
bugzilla.redhat.com/show_bug.cgi?id=2506427
cve.org/CVERecord?id=CVE-2026-65912
nvd.nist.gov/vuln/detail/CVE-2026-65912
github.com/cure53/DOMPurify/security/advisories/GHSA-cjmm-f4jc-qw8r
vulncheck.com/advisories/dompurify-before-uri-validation-bypass-via-add-attr
bugzilla.redhat.com/show_bug.cgi?id=2506429
cve.org/CVERecord?id=CVE-2026-65913
nvd.nist.gov/vuln/detail/CVE-2026-65913
github.com/cure53/DOMPurify/security/advisories/GHSA-cj63-jhhr-wcxv
vulncheck.com/advisories/dompurify-before-prototype-pollution-via-use-profiles
bugzilla.redhat.com/show_bug.cgi?id=2506430
cve.org/CVERecord?id=CVE-2026-65914
nvd.nist.gov/vuln/detail/CVE-2026-65914
github.com/cure53/DOMPurify/security/advisories/GHSA-h8r8-wccr-v5f2
vulncheck.com/advisories/dompurify-before-mutation-xss-via-re-contextualization
access.redhat.com/errata/RHSA-2026:58502
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58502.json
ubuntu.com/security/CVE-2026-65901
Left out here: the rest of 2 source descriptions. The JSON record has them.