Vulnerable Library - @carbon/ibmdotcom-utilities-2.50.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/js-cookie-npm-2.2.1-e879cd2148-4387f5f569.zip
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Vulnerabilities
| Vulnerability |
Severity |
CVSS |
Dependency |
Type |
Fixed in (@carbon/ibmdotcom-utilities version) |
Remediation Possible** |
| CVE-2026-46625 |
High |
7.5 |
js-cookie-2.2.1.tgz |
Transitive |
N/A* |
❌ |
| CVE-2026-2229 |
High |
7.5 |
undici-7.21.0.tgz |
Transitive |
N/A* |
❌ |
| CVE-2026-1526 |
High |
7.5 |
undici-7.21.0.tgz |
Transitive |
N/A* |
❌ |
| CVE-2026-41238 |
Medium |
6.9 |
dompurify-3.3.1.tgz |
Transitive |
N/A* |
❌ |
| CVE-2026-41239 |
Medium |
6.8 |
dompurify-3.3.1.tgz |
Transitive |
N/A* |
❌ |
| CVE-2026-41240 |
Medium |
6.5 |
dompurify-3.3.1.tgz |
Transitive |
N/A* |
❌ |
| CVE-2026-1525 |
Medium |
6.5 |
undici-7.21.0.tgz |
Transitive |
N/A* |
❌ |
| CVE-2026-0540 |
Medium |
6.1 |
dompurify-3.3.1.tgz |
Transitive |
N/A* |
❌ |
| CVE-2026-2581 |
Medium |
5.9 |
undici-7.21.0.tgz |
Transitive |
N/A* |
❌ |
| CVE-2026-1527 |
Medium |
4.6 |
undici-7.21.0.tgz |
Transitive |
N/A* |
❌ |
*For some transitive vulnerabilities, there is no version of direct dependency with a fix. Check the "Details" section below to see if there is a version of transitive dependency where vulnerability is fixed.
**In some cases, Remediation PR cannot be created automatically for a vulnerability despite the availability of remediation
Details
CVE-2026-46625
Vulnerable Library - js-cookie-2.2.1.tgz
A simple, lightweight JavaScript API for handling cookies
Library home page: https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/js-cookie-npm-2.2.1-e879cd2148-4387f5f569.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- ❌ js-cookie-2.2.1.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
Summary "js-cookie"'s internal "assign()" helper copies properties with "for...in" + plain assignment. When the source object is produced by "JSON.parse", the JSON object's ""proto"" member is an own enumerable property, so the "for…in" enumerates it and the "target[key] = source[key]" write triggers the "Object.prototype.proto" setter on the fresh "target" ("{}"). The result is a per-instance prototype hijack: "Object.prototype" itself is untouched, but the merged "attributes" object now inherits attacker-controlled keys. Because the consuming "set()" function then enumerates the merged object with another "for...in", every key the attacker placed on the polluted prototype lands in the resulting "Set-Cookie" string as an attribute pair. The attacker can set "domain=", "secure=", "samesite=", "expires=", and "path=" on cookies whose attributes the developer thought were locked down. Impact Any application that forwards a JSON-derived object as the "attributes" argument to "Cookies.set", "Cookies.remove", "Cookies.withAttributes", or "Cookies.withConverter" is vulnerable. This is the standard pattern when cookie configuration comes from a backend: const cfg = await fetch('/config').then(r => r.json()); Cookies.set('session', token, cfg.cookieAttrs); // cfg.cookieAttrs influenced by attacker A payload of "{"proto":{"domain":"evil.example","secure":"false","samesite":"None"}}" causes js-cookie to emit: Set-Cookie: session=TOKEN; path=/; domain=evil.example; secure=false; samesite=None Affected code // src/assign.mjs — full file export default function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] for (var key in source) { // includes own enumerable 'proto' target[key] = source[key] // [[Set]] form - fires proto setter } } return target } Proof of concept Node 22.11.0, no third-party deps: Environment setup mkdir -p /tmp/jscookie-poc && cd /tmp/jscookie-poc npm init -y npm i js-cookie PoC ubuntu@kuber:/tmp/jscookie-poc$ cat poc.mjs let lastSetCookie = ''; globalThis.document = { get cookie() { return ''; }, set cookie(v) { lastSetCookie = v; } }; const { default: Cookies } = await import('js-cookie'); const attackerAttrs = JSON.parse( '{"proto":{"secure":"false","domain":"evil.com","samesite":"None","expires":-1}}' ); Cookies.set('session', 'TOKEN', attackerAttrs); console.log('Set-Cookie that js-cookie wrote to document.cookie:'); console.log(lastSetCookie); Execution:
Suggested patch --- a/src/assign.mjs +++ b/src/assign.mjs @@ export default function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] - for (var key in source) { - target[key] = source[key] - } + for (var key in source) { + if (key === 'proto' || key === 'constructor' || key === 'prototype') continue + Object.defineProperty(target, key, { + value: source[key], + writable: true, + enumerable: true, + configurable: true, + }) + } } return target } Equivalent one-liner alternative - iterate own names only and filter: for (const key of Object.getOwnPropertyNames(source)) { if (key === 'proto') continue target[key] = source[key] }
Publish Date: 2026-05-23
URL: CVE-2026-46625
CVSS 3 Score Details (7.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: High
- Availability Impact: None
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-qjx8-664m-686j
Release Date: 2026-05-23
Fix Resolution: js-cookie - 3.0.7,js-cookie - 3.0.7,https://github.com/js-cookie/js-cookie.git - v3.0.7
CVE-2026-2229
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- isomorphic-dompurify-2.36.0.tgz
- jsdom-28.0.0.tgz
- ❌ undici-7.21.0.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
ImpactThe undici WebSocket client is vulnerable to a denial-of-service attack due to improper validation of the server_max_window_bits parameter in the permessage-deflate extension. When a WebSocket client connects to a server, it automatically advertises support for permessage-deflate compression. A malicious server can respond with an out-of-range server_max_window_bits value (outside zlib's valid range of 8-15). When the server subsequently sends a compressed frame, the client attempts to create a zlib InflateRaw instance with the invalid windowBits value, causing a synchronous RangeError exception that is not caught, resulting in immediate process termination.
The vulnerability exists because:
- The isValidClientWindowBits() function only validates that the value contains ASCII digits, not that it falls within the valid range 8-15
- The createInflateRaw() call is not wrapped in a try-catch block
- The resulting exception propagates up through the call stack and crashes the Node.js process
Publish Date: 2026-03-12
URL: CVE-2026-2229
CVSS 3 Score Details (7.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-v9p9-hfj2-hcw8
Release Date: 2026-03-12
Fix Resolution: undici - 6.24.0,undici - 7.24.0
CVE-2026-1526
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- isomorphic-dompurify-2.36.0.tgz
- jsdom-28.0.0.tgz
- ❌ undici-7.21.0.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
The undici WebSocket client is vulnerable to a denial-of-service attack via unbounded memory consumption during permessage-deflate decompression. When a WebSocket connection negotiates the permessage-deflate extension, the client decompresses incoming compressed frames without enforcing any limit on the decompressed data size. A malicious WebSocket server can send a small compressed frame (a "decompression bomb") that expands to an extremely large size in memory, causing the Node.js process to exhaust available memory and crash or become unresponsive.
The vulnerability exists in the PerMessageDeflate.decompress() method, which accumulates all decompressed chunks in memory and concatenates them into a single Buffer without checking whether the total size exceeds a safe threshold.
Publish Date: 2026-03-12
URL: CVE-2026-1526
CVSS 3 Score Details (7.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-vrm6-8vpv-qv8q
Release Date: 2026-03-12
Fix Resolution: undici - 7.24.0,undici - 6.24.0
CVE-2026-41238
Vulnerable Library - dompurify-3.3.1.tgz
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else usin
Library home page: https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/dompurify-npm-3.3.1-5bbe58c5ff-f71cca489e.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- isomorphic-dompurify-2.36.0.tgz
- ❌ dompurify-3.3.1.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
Summary DOMPurify versions 3.0.1 through 3.3.3 (latest) are vulnerable to a prototype pollution-based XSS bypass. When an application uses "DOMPurify.sanitize()" with the default configuration (no "CUSTOM_ELEMENT_HANDLING" option), a prior prototype pollution gadget can inject permissive "tagNameCheck" and "attributeNameCheck" regex values into "Object.prototype", causing DOMPurify to allow arbitrary custom elements with arbitrary attributes — including event handlers — through sanitization. Affected Versions - 3.0.1 through 3.3.3 (current latest) — all affected - 3.0.0 and all 2.x versions — NOT affected (used "Object.create(null)" for initialization, no "|| {}" reassignment) - The vulnerable "|| {}" reassignment was introduced in the 3.0.0→3.0.1 refactor - This is distinct from GHSA-cj63-jhhr-wcxv (USE_PROFILES Array.prototype pollution, fixed in 3.3.2) - This is distinct from CVE-2024-45801 / GHSA-mmhx-hmjr-r674 (__depth prototype pollution, fixed in 3.1.3) Root Cause In "purify.js" at line 590, during config parsing: CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; When no "CUSTOM_ELEMENT_HANDLING" is specified in the config (the default usage pattern), "cfg.CUSTOM_ELEMENT_HANDLING" is "undefined", and the fallback "{}" is used. This plain object inherits from "Object.prototype". Lines 591-598 then check "cfg.CUSTOM_ELEMENT_HANDLING" (the original config property) — which is "undefined" — so the conditional blocks that would set "tagNameCheck" and "attributeNameCheck" from the config are never entered. As a result, "CUSTOM_ELEMENT_HANDLING.tagNameCheck" and "CUSTOM_ELEMENT_HANDLING.attributeNameCheck" resolve via the prototype chain. If an attacker has polluted "Object.prototype.tagNameCheck" and "Object.prototype.attributeNameCheck" with permissive values (e.g., "/.*/"), these polluted values flow into DOMPurify's custom element validation at lines 973-977 and attribute validation, causing all custom elements and all attributes to be allowed. Impact - Attack type: XSS bypass via prototype pollution chain - Prerequisites: Attacker must have a prototype pollution primitive in the same execution context (e.g., vulnerable version of lodash, jQuery.extend, query-string parser, deep merge utility, or any other PP gadget) - Config required: Default. No special DOMPurify configuration needed. The standard "DOMPurify.sanitize(userInput)" call is affected. - Payload: Any HTML custom element (name containing a hyphen) with event handler attributes survives sanitization.
Mend Note: The description of this vulnerability differs from MITRE.
Publish Date: 2026-04-23
URL: CVE-2026-41238
CVSS 3 Score Details (6.9)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: High
- Privileges Required: None
- User Interaction: Required
- Scope: Changed
- Impact Metrics:
- Confidentiality Impact: High
- Integrity Impact: Low
- Availability Impact: None
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-v9jr-rg53-9pgp
Release Date: 2026-04-22
Fix Resolution: dompurify - 3.4.0,dompurify - 3.4.0
CVE-2026-41239
Vulnerable Library - dompurify-3.3.1.tgz
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else usin
Library home page: https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/dompurify-npm-3.3.1-5bbe58c5ff-f71cca489e.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- isomorphic-dompurify-2.36.0.tgz
- ❌ dompurify-3.3.1.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
Summary | Field | Value | |:------|:------| | Severity | Medium | | Affected | DOMPurify "main" at ""883ac15"" (https://github.com/cure53/DOMPurify/tree/883ac15d47f907cb1a3b5a152fe90c4d8c10f9e6), introduced in v1.0.10 (""7fc196db"" (cure53/DOMPurify@7fc196d)) | "SAFE_FOR_TEMPLATES" strips "{{...}}" expressions from untrusted HTML. This works in string mode but not with "RETURN_DOM" or "RETURN_DOM_FRAGMENT", allowing XSS via template-evaluating frameworks like Vue 2. Technical Details DOMPurify strips template expressions in two passes: 1. Per-node — each text node is checked during the tree walk (""purify.ts:1179-1191"" (https://github.com/cure53/DOMPurify/blob/883ac15d47f907cb1a3b5a152fe90c4d8c10f9e6/src/purify.ts#L1179-L1191)): // pass #1: runs on every text node during tree walk if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) { content = currentNode.textContent; content = content.replace(MUSTACHE_EXPR, ' '); // {{...}} -> ' ' content = content.replace(ERB_EXPR, ' '); // <%...%> -> ' ' content = content.replace(TMPLIT_EXPR, ' '); // ${... -> ' ' currentNode.textContent = content; } 2. Final string scrub — after serialization, the full HTML string is scrubbed again (""purify.ts:1679-1683"" (https://github.com/cure53/DOMPurify/blob/883ac15d47f907cb1a3b5a152fe90c4d8c10f9e6/src/purify.ts#L1679-L1683)). This is the safety net that catches expressions that only form after the DOM settles. The "RETURN_DOM" path returns before pass #2 ever runs (""purify.ts:1637-1661"" (https://github.com/cure53/DOMPurify/blob/883ac15d47f907cb1a3b5a152fe90c4d8c10f9e6/src/purify.ts#L1637-L1661)): // purify.ts (simplified) if (RETURN_DOM) { // ... build returnNode ... return returnNode; // <-- exits here, pass #2 never runs } // pass #2: only reached by string-mode callers if (SAFE_FOR_TEMPLATES) { serializedHTML = serializedHTML.replace(MUSTACHE_EXPR, ' '); } return serializedHTML; The payload "{{constructor.constructor('alert(1)')()}}" exploits this: 3. Parser creates: "TEXT("{")" → "" → "TEXT("{payload}")" → "" → "TEXT("}")" — no single node contains "{{", so pass #1 misses it 4. "" is not allowed, so DOMPurify removes it but keeps surrounding text 5. The three text nodes are now adjacent — ".outerHTML" reads them as "{{payload}}", which Vue 2 compiles and executes
Mend Note: The description of this vulnerability differs from MITRE.
Publish Date: 2026-04-23
URL: CVE-2026-41239
CVSS 3 Score Details (6.8)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: High
- Privileges Required: None
- User Interaction: Required
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: None
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-crv5-9vww-q3g8
Release Date: 2026-04-22
Fix Resolution: dompurify - 3.4.0,dompurify - 3.4.0
CVE-2026-41240
Vulnerable Library - dompurify-3.3.1.tgz
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else usin
Library home page: https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/dompurify-npm-3.3.1-5bbe58c5ff-f71cca489e.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- isomorphic-dompurify-2.36.0.tgz
- ❌ dompurify-3.3.1.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
There is an inconsistency between FORBID_TAGS and FORBID_ATTR handling when function-based ADD_TAGS is used. Commit "c361baa" (cure53/DOMPurify@c361baa) added an early exit for FORBID_ATTR at line 1214: /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it / if (FORBID_ATTR[lcName]) { return false; } The same fix was not applied to FORBID_TAGS. At line 1118-1123, when EXTRA_ELEMENT_HANDLING.tagCheck returns true, the short-circuit evaluation skips the FORBID_TAGS check entirely: if ( !( EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName) // true -> short-circuits ) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) // never evaluated ) { This allows forbidden elements to survive sanitization with their attributes intact.
Mend Note: The description of this vulnerability differs from MITRE.
Publish Date: 2026-04-23
URL: CVE-2026-41240
CVSS 3 Score Details (6.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: High
- Availability Impact: None
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-h7mw-gpvr-xq4m
Release Date: 2026-04-23
Fix Resolution: dompurify - 3.4.0,dompurify - 3.4.0
CVE-2026-1525
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- isomorphic-dompurify-2.36.0.tgz
- jsdom-28.0.0.tgz
- ❌ undici-7.21.0.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
Undici allows duplicate HTTP Content-Length headers when they are provided in an array with case-variant names (e.g., Content-Length and content-length). This produces malformed HTTP/1.1 requests with multiple conflicting Content-Length values on the wire.
Who is impacted:
- Applications using undici.request(), undici.Client, or similar low-level APIs with headers passed as flat arrays
- Applications that accept user-controlled header names without case-normalization
Potential consequences:
- Denial of Service: Strict HTTP parsers (proxies, servers) will reject requests with duplicate Content-Length headers (400 Bad Request)
- HTTP Request Smuggling: In deployments where an intermediary and backend interpret duplicate headers inconsistently (e.g., one uses the first value, the other uses the last), this can enable request smuggling attacks leading to ACL bypass, cache poisoning, or credential hijacking
Publish Date: 2026-03-12
URL: CVE-2026-1525
CVSS 3 Score Details (6.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: Low
- Availability Impact: Low
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-2mjp-6q6p-2qxm
Release Date: 2026-03-12
Fix Resolution: undici - 6.24.0,undici - 7.24.0
CVE-2026-0540
Vulnerable Library - dompurify-3.3.1.tgz
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else usin
Library home page: https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/dompurify-npm-3.3.1-5bbe58c5ff-f71cca489e.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- isomorphic-dompurify-2.36.0.tgz
- ❌ dompurify-3.3.1.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
DOMPurify 3.1.3 through 3.3.1 and 2.5.3 through 2.5.8, fixed in commit 729097f, contain a cross-site scripting vulnerability that allows attackers to bypass attribute sanitization by exploiting five missing rawtext elements (noscript, xmp, noembed, noframes, iframe) in the SAFE_FOR_XML regex. Attackers can include payloads like
in attribute values to execute JavaScript when sanitized output is placed inside these unprotected rawtext contexts.
Mend Note: The description of this vulnerability differs from MITRE.
Publish Date: 2026-03-03
URL: CVE-2026-0540
CVSS 3 Score Details (6.1)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required
- Scope: Changed
- Impact Metrics:
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-v2wj-7wpq-c8vv
Release Date: 2026-03-03
Fix Resolution: dompurify - 3.3.2,dompurify - 2.5.9
CVE-2026-2581
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- isomorphic-dompurify-2.36.0.tgz
- jsdom-28.0.0.tgz
- ❌ undici-7.21.0.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
This is an uncontrolled resource consumption vulnerability (CWE-400) that can lead to Denial of Service (DoS).
In vulnerable Undici versions, when interceptors.deduplicate() is enabled, response data for deduplicated requests could be accumulated in memory for downstream handlers. An attacker-controlled or untrusted upstream endpoint can exploit this with large/chunked responses and concurrent identical requests, causing high memory usage and potential OOM process termination.
Impacted users are applications that use Undici’s deduplication interceptor against endpoints that may produce large or long-lived response bodies.
PatchesThe issue has been patched by changing deduplication behavior to stream response chunks to downstream handlers as they arrive (instead of full-body accumulation), and by preventing late deduplication when body streaming has already started.
Users should upgrade to the first official Undici (and Node.js, where applicable) releases that include this patch.
Publish Date: 2026-03-12
URL: CVE-2026-2581
CVSS 3 Score Details (5.9)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: High
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-phc3-fgpg-7m6h
Release Date: 2026-03-12
Fix Resolution: undici - 7.24.0
CVE-2026-1527
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
- @carbon/ibmdotcom-utilities-2.50.1.tgz (Root Library)
- isomorphic-dompurify-2.36.0.tgz
- jsdom-28.0.0.tgz
- ❌ undici-7.21.0.tgz (Vulnerable Library)
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
ImpactWhen an application passes user-controlled input to the upgrade option of client.request(), an attacker can inject CRLF sequences (\r\n) to:
- Inject arbitrary HTTP headers
- Terminate the HTTP request prematurely and smuggle raw data to non-HTTP services (Redis, Memcached, Elasticsearch)
The vulnerability exists because undici writes the upgrade value directly to the socket without validating for invalid header characters:
// lib/dispatcher/client-h1.js:1121
if (upgrade) {
header += "connection: upgrade\r\nupgrade: ${upgrade}\r\n"
}
Publish Date: 2026-03-12
URL: CVE-2026-1527
CVSS 3 Score Details (4.6)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low
- User Interaction: Required
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
For more information on CVSS3 Scores, click here.
Suggested Fix
Type: Upgrade version
Origin: GHSA-4992-7rv2-5pvq
Release Date: 2026-03-12
Fix Resolution: undici - 7.24.0,undici - 6.24.0
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/js-cookie-npm-2.2.1-e879cd2148-4387f5f569.zip
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Vulnerabilities
*For some transitive vulnerabilities, there is no version of direct dependency with a fix. Check the "Details" section below to see if there is a version of transitive dependency where vulnerability is fixed.
**In some cases, Remediation PR cannot be created automatically for a vulnerability despite the availability of remediation
Details
Vulnerable Library - js-cookie-2.2.1.tgz
A simple, lightweight JavaScript API for handling cookies
Library home page: https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/js-cookie-npm-2.2.1-e879cd2148-4387f5f569.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
Summary "js-cookie"'s internal "assign()" helper copies properties with "for...in" + plain assignment. When the source object is produced by "JSON.parse", the JSON object's ""proto"" member is an own enumerable property, so the "for…in" enumerates it and the "target[key] = source[key]" write triggers the "Object.prototype.proto" setter on the fresh "target" ("{}"). The result is a per-instance prototype hijack: "Object.prototype" itself is untouched, but the merged "attributes" object now inherits attacker-controlled keys. Because the consuming "set()" function then enumerates the merged object with another "for...in", every key the attacker placed on the polluted prototype lands in the resulting "Set-Cookie" string as an attribute pair. The attacker can set "domain=", "secure=", "samesite=", "expires=", and "path=" on cookies whose attributes the developer thought were locked down. Impact Any application that forwards a JSON-derived object as the "attributes" argument to "Cookies.set", "Cookies.remove", "Cookies.withAttributes", or "Cookies.withConverter" is vulnerable. This is the standard pattern when cookie configuration comes from a backend: const cfg = await fetch('/config').then(r => r.json()); Cookies.set('session', token, cfg.cookieAttrs); // cfg.cookieAttrs influenced by attacker A payload of "{"proto":{"domain":"evil.example","secure":"false","samesite":"None"}}" causes js-cookie to emit: Set-Cookie: session=TOKEN; path=/; domain=evil.example; secure=false; samesite=None Affected code // src/assign.mjs — full file export default function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] for (var key in source) { // includes own enumerable 'proto' target[key] = source[key] // [[Set]] form - fires proto setter } } return target } Proof of concept Node 22.11.0, no third-party deps: Environment setup mkdir -p /tmp/jscookie-poc && cd /tmp/jscookie-poc npm init -y npm i js-cookie PoC ubuntu@kuber:/tmp/jscookie-poc$ cat poc.mjs let lastSetCookie = ''; globalThis.document = { get cookie() { return ''; }, set cookie(v) { lastSetCookie = v; } }; const { default: Cookies } = await import('js-cookie'); const attackerAttrs = JSON.parse( '{"proto":{"secure":"false","domain":"evil.com","samesite":"None","expires":-1}}' ); Cookies.set('session', 'TOKEN', attackerAttrs); console.log('Set-Cookie that js-cookie wrote to document.cookie:'); console.log(lastSetCookie); Execution:
Suggested patch --- a/src/assign.mjs +++ b/src/assign.mjs @@ export default function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] - for (var key in source) { - target[key] = source[key] - } + for (var key in source) { + if (key === 'proto' || key === 'constructor' || key === 'prototype') continue + Object.defineProperty(target, key, { + value: source[key], + writable: true, + enumerable: true, + configurable: true, + }) + } } return target } Equivalent one-liner alternative - iterate own names only and filter: for (const key of Object.getOwnPropertyNames(source)) { if (key === 'proto') continue target[key] = source[key] }
Publish Date: 2026-05-23
URL: CVE-2026-46625
CVSS 3 Score Details (7.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: High
- Availability Impact: None
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-qjx8-664m-686j
Release Date: 2026-05-23
Fix Resolution: js-cookie - 3.0.7,js-cookie - 3.0.7,https://github.com/js-cookie/js-cookie.git - v3.0.7
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
ImpactThe undici WebSocket client is vulnerable to a denial-of-service attack due to improper validation of the server_max_window_bits parameter in the permessage-deflate extension. When a WebSocket client connects to a server, it automatically advertises support for permessage-deflate compression. A malicious server can respond with an out-of-range server_max_window_bits value (outside zlib's valid range of 8-15). When the server subsequently sends a compressed frame, the client attempts to create a zlib InflateRaw instance with the invalid windowBits value, causing a synchronous RangeError exception that is not caught, resulting in immediate process termination.
The vulnerability exists because:
Publish Date: 2026-03-12
URL: CVE-2026-2229
CVSS 3 Score Details (7.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-v9p9-hfj2-hcw8
Release Date: 2026-03-12
Fix Resolution: undici - 6.24.0,undici - 7.24.0
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
The undici WebSocket client is vulnerable to a denial-of-service attack via unbounded memory consumption during permessage-deflate decompression. When a WebSocket connection negotiates the permessage-deflate extension, the client decompresses incoming compressed frames without enforcing any limit on the decompressed data size. A malicious WebSocket server can send a small compressed frame (a "decompression bomb") that expands to an extremely large size in memory, causing the Node.js process to exhaust available memory and crash or become unresponsive.
The vulnerability exists in the PerMessageDeflate.decompress() method, which accumulates all decompressed chunks in memory and concatenates them into a single Buffer without checking whether the total size exceeds a safe threshold.
Publish Date: 2026-03-12
URL: CVE-2026-1526
CVSS 3 Score Details (7.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-vrm6-8vpv-qv8q
Release Date: 2026-03-12
Fix Resolution: undici - 7.24.0,undici - 6.24.0
Vulnerable Library - dompurify-3.3.1.tgz
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else usin
Library home page: https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/dompurify-npm-3.3.1-5bbe58c5ff-f71cca489e.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
Summary DOMPurify versions 3.0.1 through 3.3.3 (latest) are vulnerable to a prototype pollution-based XSS bypass. When an application uses "DOMPurify.sanitize()" with the default configuration (no "CUSTOM_ELEMENT_HANDLING" option), a prior prototype pollution gadget can inject permissive "tagNameCheck" and "attributeNameCheck" regex values into "Object.prototype", causing DOMPurify to allow arbitrary custom elements with arbitrary attributes — including event handlers — through sanitization. Affected Versions - 3.0.1 through 3.3.3 (current latest) — all affected - 3.0.0 and all 2.x versions — NOT affected (used "Object.create(null)" for initialization, no "|| {}" reassignment) - The vulnerable "|| {}" reassignment was introduced in the 3.0.0→3.0.1 refactor - This is distinct from GHSA-cj63-jhhr-wcxv (USE_PROFILES Array.prototype pollution, fixed in 3.3.2) - This is distinct from CVE-2024-45801 / GHSA-mmhx-hmjr-r674 (__depth prototype pollution, fixed in 3.1.3) Root Cause In "purify.js" at line 590, during config parsing: CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {}; When no "CUSTOM_ELEMENT_HANDLING" is specified in the config (the default usage pattern), "cfg.CUSTOM_ELEMENT_HANDLING" is "undefined", and the fallback "{}" is used. This plain object inherits from "Object.prototype". Lines 591-598 then check "cfg.CUSTOM_ELEMENT_HANDLING" (the original config property) — which is "undefined" — so the conditional blocks that would set "tagNameCheck" and "attributeNameCheck" from the config are never entered. As a result, "CUSTOM_ELEMENT_HANDLING.tagNameCheck" and "CUSTOM_ELEMENT_HANDLING.attributeNameCheck" resolve via the prototype chain. If an attacker has polluted "Object.prototype.tagNameCheck" and "Object.prototype.attributeNameCheck" with permissive values (e.g., "/.*/"), these polluted values flow into DOMPurify's custom element validation at lines 973-977 and attribute validation, causing all custom elements and all attributes to be allowed. Impact - Attack type: XSS bypass via prototype pollution chain - Prerequisites: Attacker must have a prototype pollution primitive in the same execution context (e.g., vulnerable version of lodash, jQuery.extend, query-string parser, deep merge utility, or any other PP gadget) - Config required: Default. No special DOMPurify configuration needed. The standard "DOMPurify.sanitize(userInput)" call is affected. - Payload: Any HTML custom element (name containing a hyphen) with event handler attributes survives sanitization.
Mend Note: The description of this vulnerability differs from MITRE.
Publish Date: 2026-04-23
URL: CVE-2026-41238
CVSS 3 Score Details (6.9)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: High
- Privileges Required: None
- User Interaction: Required
- Scope: Changed
- Impact Metrics:
- Confidentiality Impact: High
- Integrity Impact: Low
- Availability Impact: None
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-v9jr-rg53-9pgp
Release Date: 2026-04-22
Fix Resolution: dompurify - 3.4.0,dompurify - 3.4.0
Vulnerable Library - dompurify-3.3.1.tgz
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else usin
Library home page: https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/dompurify-npm-3.3.1-5bbe58c5ff-f71cca489e.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
Summary | Field | Value | |:------|:------| | Severity | Medium | | Affected | DOMPurify "main" at ""883ac15"" (https://github.com/cure53/DOMPurify/tree/883ac15d47f907cb1a3b5a152fe90c4d8c10f9e6), introduced in v1.0.10 (""7fc196db"" (cure53/DOMPurify@7fc196d)) | "SAFE_FOR_TEMPLATES" strips "{{...}}" expressions from untrusted HTML. This works in string mode but not with "RETURN_DOM" or "RETURN_DOM_FRAGMENT", allowing XSS via template-evaluating frameworks like Vue 2. Technical Details DOMPurify strips template expressions in two passes: 1. Per-node — each text node is checked during the tree walk (""purify.ts:1179-1191"" (https://github.com/cure53/DOMPurify/blob/883ac15d47f907cb1a3b5a152fe90c4d8c10f9e6/src/purify.ts#L1179-L1191)): // pass #1: runs on every text node during tree walk if (SAFE_FOR_TEMPLATES && currentNode.nodeType === NODE_TYPE.text) { content = currentNode.textContent; content = content.replace(MUSTACHE_EXPR, ' '); // {{...}} -> ' ' content = content.replace(ERB_EXPR, ' '); // <%...%> -> ' ' content = content.replace(TMPLIT_EXPR, ' '); // ${... -> ' ' currentNode.textContent = content; } 2. Final string scrub — after serialization, the full HTML string is scrubbed again (""purify.ts:1679-1683"" (https://github.com/cure53/DOMPurify/blob/883ac15d47f907cb1a3b5a152fe90c4d8c10f9e6/src/purify.ts#L1679-L1683)). This is the safety net that catches expressions that only form after the DOM settles. The "RETURN_DOM" path returns before pass #2 ever runs (""purify.ts:1637-1661"" (https://github.com/cure53/DOMPurify/blob/883ac15d47f907cb1a3b5a152fe90c4d8c10f9e6/src/purify.ts#L1637-L1661)): // purify.ts (simplified) if (RETURN_DOM) { // ... build returnNode ... return returnNode; // <-- exits here, pass #2 never runs } // pass #2: only reached by string-mode callers if (SAFE_FOR_TEMPLATES) { serializedHTML = serializedHTML.replace(MUSTACHE_EXPR, ' '); } return serializedHTML; The payload "{{constructor.constructor('alert(1)')()}}" exploits this: 3. Parser creates: "TEXT("{")" → "" → "TEXT("{payload}")" → "" → "TEXT("}")" — no single node contains "{{", so pass #1 misses it 4. "" is not allowed, so DOMPurify removes it but keeps surrounding text 5. The three text nodes are now adjacent — ".outerHTML" reads them as "{{payload}}", which Vue 2 compiles and executes
Mend Note: The description of this vulnerability differs from MITRE.
Publish Date: 2026-04-23
URL: CVE-2026-41239
CVSS 3 Score Details (6.8)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: High
- Privileges Required: None
- User Interaction: Required
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: High
- Integrity Impact: High
- Availability Impact: None
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-crv5-9vww-q3g8
Release Date: 2026-04-22
Fix Resolution: dompurify - 3.4.0,dompurify - 3.4.0
Vulnerable Library - dompurify-3.3.1.tgz
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else usin
Library home page: https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/dompurify-npm-3.3.1-5bbe58c5ff-f71cca489e.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
There is an inconsistency between FORBID_TAGS and FORBID_ATTR handling when function-based ADD_TAGS is used. Commit "c361baa" (cure53/DOMPurify@c361baa) added an early exit for FORBID_ATTR at line 1214: /* FORBID_ATTR must always win, even if ADD_ATTR predicate would allow it / if (FORBID_ATTR[lcName]) { return false; } The same fix was not applied to FORBID_TAGS. At line 1118-1123, when EXTRA_ELEMENT_HANDLING.tagCheck returns true, the short-circuit evaluation skips the FORBID_TAGS check entirely: if ( !( EXTRA_ELEMENT_HANDLING.tagCheck instanceof Function && EXTRA_ELEMENT_HANDLING.tagCheck(tagName) // true -> short-circuits ) && (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) // never evaluated ) { This allows forbidden elements to survive sanitization with their attributes intact.
Mend Note: The description of this vulnerability differs from MITRE.
Publish Date: 2026-04-23
URL: CVE-2026-41240
CVSS 3 Score Details (6.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: High
- Availability Impact: None
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-h7mw-gpvr-xq4m
Release Date: 2026-04-23
Fix Resolution: dompurify - 3.4.0,dompurify - 3.4.0
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
Undici allows duplicate HTTP Content-Length headers when they are provided in an array with case-variant names (e.g., Content-Length and content-length). This produces malformed HTTP/1.1 requests with multiple conflicting Content-Length values on the wire.
Who is impacted:
Potential consequences:
Publish Date: 2026-03-12
URL: CVE-2026-1525
CVSS 3 Score Details (6.5)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: Low
- Availability Impact: Low
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-2mjp-6q6p-2qxm
Release Date: 2026-03-12
Fix Resolution: undici - 6.24.0,undici - 7.24.0
Vulnerable Library - dompurify-3.3.1.tgz
DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else usin
Library home page: https://registry.npmjs.org/dompurify/-/dompurify-3.3.1.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/dompurify-npm-3.3.1-5bbe58c5ff-f71cca489e.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
DOMPurify 3.1.3 through 3.3.1 and 2.5.3 through 2.5.8, fixed in commit 729097f, contain a cross-site scripting vulnerability that allows attackers to bypass attribute sanitization by exploiting five missing rawtext elements (noscript, xmp, noembed, noframes, iframe) in the SAFE_FOR_XML regex. Attackers can include payloads like
in attribute values to execute JavaScript when sanitized output is placed inside these unprotected rawtext contexts.
Mend Note: The description of this vulnerability differs from MITRE.
Publish Date: 2026-03-03
URL: CVE-2026-0540
CVSS 3 Score Details (6.1)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required
- Scope: Changed
- Impact Metrics:
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-v2wj-7wpq-c8vv
Release Date: 2026-03-03
Fix Resolution: dompurify - 3.3.2,dompurify - 2.5.9
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
This is an uncontrolled resource consumption vulnerability (CWE-400) that can lead to Denial of Service (DoS).
In vulnerable Undici versions, when interceptors.deduplicate() is enabled, response data for deduplicated requests could be accumulated in memory for downstream handlers. An attacker-controlled or untrusted upstream endpoint can exploit this with large/chunked responses and concurrent identical requests, causing high memory usage and potential OOM process termination.
Impacted users are applications that use Undici’s deduplication interceptor against endpoints that may produce large or long-lived response bodies.
PatchesThe issue has been patched by changing deduplication behavior to stream response chunks to downstream handlers as they arrive (instead of full-body accumulation), and by preventing late deduplication when body streaming has already started.
Users should upgrade to the first official Undici (and Node.js, where applicable) releases that include this patch.
Publish Date: 2026-03-12
URL: CVE-2026-2581
CVSS 3 Score Details (5.9)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: High
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: None
- Integrity Impact: None
- Availability Impact: High
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-phc3-fgpg-7m6h
Release Date: 2026-03-12
Fix Resolution: undici - 7.24.0
Vulnerable Library - undici-7.21.0.tgz
An HTTP/1.1 client, written from scratch for Node.js
Library home page: https://registry.npmjs.org/undici/-/undici-7.21.0.tgz
Path to dependency file: /package.json
Path to vulnerable library: /.yarn/cache/undici-npm-7.21.0-babfc213f0-2025ba33bd.zip
Dependency Hierarchy:
Found in HEAD commit: 709ae4e8c6bd803e458b8d1a1873963feb91fb79
Found in base branch: main
Vulnerability Details
ImpactWhen an application passes user-controlled input to the upgrade option of client.request(), an attacker can inject CRLF sequences (\r\n) to:
The vulnerability exists because undici writes the upgrade value directly to the socket without validating for invalid header characters:
// lib/dispatcher/client-h1.js:1121
if (upgrade) {
header += "connection: upgrade\r\nupgrade: ${upgrade}\r\n"
}
Publish Date: 2026-03-12
URL: CVE-2026-1527
CVSS 3 Score Details (4.6)
Base Score Metrics:
- Exploitability Metrics:
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low
- User Interaction: Required
- Scope: Unchanged
- Impact Metrics:
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
For more information on CVSS3 Scores, click here.Suggested Fix
Type: Upgrade version
Origin: GHSA-4992-7rv2-5pvq
Release Date: 2026-03-12
Fix Resolution: undici - 7.24.0,undici - 6.24.0