Skip to content

vivid-5.9.0.tgz: 3 vulnerabilities (highest severity is: 7.5) #99

@mend-for-github-com

Description

@mend-for-github-com
Vulnerable Library - vivid-5.9.0.tgz

Path to dependency file: /package.json

Path to vulnerable library: /package.json

Found in HEAD commit: 9e46d67b86f46339ecc0d6e70236da26187a1734

Vulnerabilities

Vulnerability Severity CVSS Exploit Maturity EPSS Dependency Type Fixed in (vivid version) Remediation Possible** Reachability
CVE-2025-27789 Medium 6.2 Not Defined 0.1% runtime-7.23.2.tgz Transitive 5.10.0

Unreachable

CVE-2026-34601 High 7.5 Not Defined xmldom-0.8.11.tgz Transitive N/A*
CVE-2026-0540 Medium 6.1 Not Defined 0.0% dompurify-3.3.1.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-2025-27789

Vulnerable Library - runtime-7.23.2.tgz

Library home page: https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz

Path to dependency file: /package.json

Path to vulnerable library: /package.json

Dependency Hierarchy:

  • vivid-5.9.0.tgz (Root Library)
    • video.js-8.23.4.tgz
      • runtime-7.23.2.tgz (Vulnerable Library)

Found in HEAD commit: 9e46d67b86f46339ecc0d6e70236da26187a1734

Found in base branch: master

Reachability Analysis

The vulnerable code is unreachable

Vulnerability Details

Babel is a compiler for writing next generation JavaScript. When using versions of Babel prior to 7.26.10 and 8.0.0-alpha.17 to compile regular expression named capturing groups, Babel will generate a polyfill for the ".replace" method that has quadratic complexity on some specific replacement pattern strings (i.e. the second argument passed to ".replace"). Generated code is vulnerable if all the following conditions are true: Using Babel to compile regular expression named capturing groups, using the ".replace" method on a regular expression that contains named capturing groups, and the code using untrusted strings as the second argument of ".replace". This problem has been fixed in "@babel/helpers" and "@babel/runtime" 7.26.10 and 8.0.0-alpha.17. It's likely that individual users do not directly depend on "@babel/helpers", and instead depend on "@babel/core" (which itself depends on "@babel/helpers"). Upgrading to "@babel/core" 7.26.10 is not required, but it guarantees use of a new enough "@babel/helpers" version. Note that just updating Babel dependencies is not enough; one will also need to re-compile the code. No known workarounds are available.

Publish Date: 2025-03-11

URL: CVE-2025-27789

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.1%

CVSS 3 Score Details (6.2)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Local
    • 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-968p-4wvh-cqc8

Release Date: 2025-03-11

Fix Resolution (@babel/runtime): 7.26.10

Direct dependency fix Resolution (@vonage/vivid): 5.10.0

In order to enable automatic remediation, please create workflow rules

CVE-2026-34601

Vulnerable Library - xmldom-0.8.11.tgz

A pure JavaScript W3C standard-based (XML DOM Level 2 Core) DOMParser and XMLSerializer module.

Library home page: https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz

Path to dependency file: /package.json

Path to vulnerable library: /package.json

Dependency Hierarchy:

  • vivid-5.9.0.tgz (Root Library)
    • video.js-8.23.4.tgz
      • mpd-parser-1.3.1.tgz
        • xmldom-0.8.11.tgz (Vulnerable Library)

Found in HEAD commit: 9e46d67b86f46339ecc0d6e70236da26187a1734

Found in base branch: master

Vulnerability Details

Summary "@xmldom/xmldom" allows attacker-controlled strings containing the CDATA terminator "]]>" to be inserted into a "CDATASection" node. During serialization, "XMLSerializer" emitted the CDATA content verbatim without rejecting or safely splitting the terminator. As a result, data intended to remain text-only became active XML markup in the serialized output, enabling XML structure injection and downstream business-logic manipulation. The sequence "]]>" is not allowed inside CDATA content and must be rejected or safely handled during serialization. ("MDN Web Docs" (https://developer.mozilla.org/)) Attack surface "Document.createCDATASection(data)" is the most direct entry point, but it is not the only one. The WHATWG DOM spec intentionally does not validate "]]>" in mutation methods — only "createCDATASection" carries that guard. The following paths therefore also allow "]]>" to enter a CDATASection node and reach the serializer: - "CharacterData.appendData()" - "CharacterData.replaceData()" - "CharacterData.insertData()" - Direct assignment to ".data" - Direct assignment to ".textContent" (Note: assigning to ".nodeValue" does not update ".data" in this implementation — the serializer reads ".data" directly — so ".nodeValue" is not an exploitable path.) Parse path Parsing XML that contains a CDATA section is not affected. The SAX parser's non-greedy "CDSect" regex stops at the first "]]>", so parsed CDATA data never contains the terminator. Impact If an application uses "xmldom" to generate "trusted" XML documents that embed untrusted user input inside CDATA (a common pattern in exports, feeds, SOAP/XML integrations, etc.), an attacker can inject additional XML elements/attributes into the generated document. This can lead to: - Integrity violation of generated XML documents. - Business-logic injection in downstream consumers (e.g., injecting "true", "admin", workflow flags, or other security-relevant elements). - Unexpected privilege/workflow decisions if downstream logic assumes injected nodes cannot appear. This issue does not require malformed parsers or browser behavior; it is caused by serialization producing attacker-influenced XML markup. Root Cause (with file + line numbers) File: "lib/dom.js" 1. No validation in "createCDATASection" "createCDATASection: function (data)" accepts any string and appends it directly. - Lines 2216–2221 (0.9.8) 2. Unsafe CDATA serialization Serializer prints CDATA sections as: without handling "]]>" in the data. - Lines 2919–2920 (0.9.8) Because CDATA content is emitted verbatim, an embedded "]]>" closes the CDATA section early and the remainder of the attacker-controlled payload is interpreted as markup in the serialized XML. Proof of Concept — Fix A: "createCDATASection" now throws On patched versions, passing "]]>" directly to "createCDATASection" throws "InvalidCharacterError" instead of silently accepting the payload: const { DOMImplementation } = require('./lib'); const doc = new DOMImplementation().createDocument(null, 'root', null); try { doc.createCDATASection('SAFE]]>'); console.log('VULNERABLE — no error thrown'); } catch (e) { console.log('FIXED — threw:', e.name); // InvalidCharacterError } Expected output on patched versions: FIXED — threw: InvalidCharacterError Proof of Concept — Fix B: mutation vector now safe On patched versions, injecting "]]>" via a mutation method ("appendData", "replaceData", ".data =", ".textContent =") no longer produces injectable output. The serializer splits the terminator so the result round-trips as safe text: const { DOMImplementation, XMLSerializer } = require('./lib'); const { DOMParser } = require('./lib'); const doc = new DOMImplementation().createDocument(null, 'root', null); // Start with safe data, then mutate to include the terminator const cdata = doc.createCDATASection('safe'); doc.documentElement.appendChild(cdata); cdata.appendData(']]>TEXT 0; console.log('Injected element found in reparsed doc:', injected); // VULNERABLE: true | FIXED: false Expected output on patched versions: Serialized: TEXT Injected element found in reparsed doc: false Fix Applied Both mitigations were implemented: Option A — Strict/spec-aligned: reject "]]>" in "createCDATASection()" "Document.createCDATASection(data)" now throws "InvalidCharacterError" (per the "WHATWG DOM spec" (https://dom.spec.whatwg.org/#dom-document-createcdatasection)) when "data" contains "]]>". This closes the direct entry point. Code that previously passed a string containing "]]>" to "createCDATASection" and relied on the silent/unsafe behaviour will now receive "InvalidCharacterError". Use a mutation method such as "appendData" if you intentionally need "]]>" in a CDATASection node's data (the serializer split in Option B will keep the output safe). Option B — Defensive serialization: split the terminator during serialization "XMLSerializer" now replaces every occurrence of "]]>" in CDATA section data with the split sequence "]]]]>" before emitting. This closes all mutation-vector paths that Option A alone cannot guard, and means the serialized output is always well-formed XML regardless of how "]]>" entered the node.

Publish Date: 2026-04-01

URL: CVE-2026-34601

Threat Assessment

Exploit Maturity: Not Defined

EPSS:

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

Release Date: 2026-04-01

Fix Resolution: https://github.com/xmldom/xmldom.git - 0.9.9

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: /package.json

Dependency Hierarchy:

  • vivid-5.9.0.tgz (Root Library)
    • dompurify-3.3.1.tgz (Vulnerable Library)

Found in HEAD commit: 9e46d67b86f46339ecc0d6e70236da26187a1734

Found in base branch: master

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

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.0%

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


In order to enable automatic remediation for this issue, please create workflow rules

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions