Skip to content

nexmo-2.9.1.tgz: 12 vulnerabilities (highest severity is: 9.8) reachable #1

Description

@mend-for-github-com
Vulnerable Library - nexmo-2.9.1.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/request/node_modules/uuid/package.json

Vulnerabilities

Vulnerability Severity CVSS Exploit Maturity EPSS Dependency Type Fixed in (nexmo version) Remediation Possible** Reachability
CVE-2025-7783 High 8.7 Not Defined 1.769% form-data-2.3.3.tgz Transitive N/A* ❌

Reachable

CVE-2026-12143 High 7.5 Not Defined 0.535% form-data-2.3.3.tgz Transitive N/A* ❌

Reachable

CVE-2023-26136 Medium 6.5 Proof of concept 2.542% tough-cookie-2.5.0.tgz Transitive N/A* ❌

Reachable

CVE-2022-23540 Medium 6.4 Not Defined 0.532% jsonwebtoken-8.5.1.tgz Transitive N/A* ❌

Reachable

CVE-2023-28155 Medium 6.1 Not Defined 0.719% request-2.88.2.tgz Transitive N/A* ❌

Reachable

CVE-2022-23539 Medium 5.9 Not Defined 0.479% jsonwebtoken-8.5.1.tgz Transitive N/A* ❌

Reachable

CVE-2026-82417 Medium 5.3 Not Defined 0.261% qs-6.5.5.tgz Transitive N/A* ❌

Reachable

CVE-2022-23541 Medium 5.0 Not Defined 0.753% jsonwebtoken-8.5.1.tgz Transitive N/A* ❌

Reachable

CVE-2025-15284 Low 3.7 Not Defined 0.456% qs-6.5.5.tgz Transitive N/A* ❌

Reachable

CVE-2026-41907 Critical 9.8 Not Defined 0.35% detected in multiple dependencies Transitive N/A* ❌

Unreachable

CVE-2026-93690 High 7.5 Not Defined 0.457% uri-js-4.4.1.tgz Transitive N/A* ❌
CVE-2026-93751 Medium 6.5 Not Defined 0.233% uri-js-4.4.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-7783

Vulnerable Library - form-data-2.3.3.tgz

A library to create readable "multipart/form-data" streams. Can be used to submit forms and file uploads to other web applications.

Library home page: https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/form-data/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • request-2.88.2.tgz
      • ❌ form-data-2.3.3.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

This vulnerability is potentially reachable

ni-node-async-tutorial-1.0.0/index.js (Application)
  -> nexmo-2.9.1/lib/Nexmo.js (Extension)
   -> nexmo-2.9.1/lib/HttpClient.js (Extension)
    -> request-2.88.2/index.js (Extension)
     -> request-2.88.2/request.js (Extension)
      -> ❌ form-data-2.3.3/lib/form_data.js (Vulnerable Component)

Vulnerability Details

Use of Insufficiently Random Values vulnerability in form-data allows HTTP Parameter Pollution (HPP). This vulnerability is associated with program files lib/form_data.Js.
This issue affects form-data: < 2.5.4, 3.0.0 - 3.0.3, 4.0.0 - 4.0.3.
Mend Note: The description of this vulnerability differs from MITRE.

Publish Date: 2025-07-18

URL: CVE-2025-7783

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 1.769%

CVSS 3 Score Details (8.7)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: None
    • User Interaction: None
    • Scope: Changed
  • 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-fjxv-7rqg-78g4

Release Date: 2025-07-18

Fix Resolution: form-data - 2.5.4,form-data - 3.0.4,https://github.com/form-data/form-data.git - v2.5.4,form-data - 4.0.4,https://github.com/form-data/form-data.git - v4.0.4,https://github.com/form-data/form-data.git - v3.0.4

CVE-2026-12143

Vulnerable Library - form-data-2.3.3.tgz

A library to create readable "multipart/form-data" streams. Can be used to submit forms and file uploads to other web applications.

Library home page: https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/form-data/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • request-2.88.2.tgz
      • ❌ form-data-2.3.3.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

This vulnerability is potentially reachable

ni-node-async-tutorial-1.0.0/index.js (Application)
  -> nexmo-2.9.1/lib/Nexmo.js (Extension)
   -> nexmo-2.9.1/lib/HttpClient.js (Extension)
    -> request-2.88.2/index.js (Extension)
     -> request-2.88.2/request.js (Extension)
      -> form-data-2.3.3/lib/form_data.js (Extension)
       -> ❌ form-data-2.3.3/lib/populate.js (Vulnerable Component)

Vulnerability Details

form-data is a library for creating readable multipart/form-data streams. In versions through 4.0.5, the "field" argument to "FormData#append" and the "filename" option are concatenated verbatim into the "Content-Disposition" header without escaping carriage return (CR), line feed (LF), or double-quote (") characters. An application that passes attacker-controlled data as a field name or filename (for example, an API gateway that turns JSON object keys into multipart field names) allows the attacker to terminate the header line and inject additional headers, or to smuggle entire additional multipart parts, into the request the application forwards to a backend. This can let the attacker add or override form fields (e.g. set "is_admin=true") seen by the downstream parser. This is an instance of CWE-93 (CRLF injection). The fix escapes CR, LF, and """ as "%0D", "%0A", and "%22" in field names and filenames, matching the serialization browsers use per the WHATWG HTML multipart/form-data encoding algorithm. Exploitation requires the consuming application to use untrusted input as a field name or filename; applications that use only fixed/trusted field names are not affected. Fixed in 2.5.6, 3.0.5, and 4.0.6.

Publish Date: 2026-06-12

URL: CVE-2026-12143

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.535%

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: https://github.com/form-data/form-data/security/advisories/GHSA-fjwh-7mfq-fhwh

Release Date: 2026-06-12

Fix Resolution: form-data - 3.0.5,form-data - 2.5.6,form-data - 4.0.6

CVE-2023-26136

Vulnerable Library - tough-cookie-2.5.0.tgz

RFC6265 Cookies and Cookie Jar for node.js

Library home page: https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/tough-cookie/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • request-2.88.2.tgz
      • ❌ tough-cookie-2.5.0.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

This vulnerability is potentially reachable

ni-node-async-tutorial-1.0.0/index.js (Application)
  -> nexmo-2.9.1/lib/Nexmo.js (Extension)
   -> nexmo-2.9.1/lib/HttpClient.js (Extension)
    -> request-2.88.2/index.js (Extension)
     -> request-2.88.2/lib/cookies.js (Extension)
      -> tough-cookie-2.5.0/lib/cookie.js (Extension)
       -> ❌ tough-cookie-2.5.0/lib/memstore.js (Vulnerable Component)

Vulnerability Details

Versions of the package tough-cookie before 4.1.3 are vulnerable to Prototype Pollution due to improper handling of Cookies when using CookieJar in rejectPublicSuffixes=false mode. This issue arises from the manner in which the objects are initialized.

Publish Date: 2023-07-01

URL: CVE-2023-26136

Threat Assessment

Exploit Maturity: Proof of concept

EPSS: 2.542%

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: Low
    • Integrity Impact: Low
    • Availability Impact: None

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: https://www.cve.org/CVERecord?id=CVE-2023-26136

Release Date: 2023-07-01

Fix Resolution: tough-cookie - 4.1.3

CVE-2022-23540

Vulnerable Library - jsonwebtoken-8.5.1.tgz

JSON Web Token implementation (symmetric and asymmetric)

Library home page: https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/jsonwebtoken/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • ❌ jsonwebtoken-8.5.1.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

This vulnerability is potentially reachable

ni-node-async-tutorial-1.0.0/index.js (Application)
  -> nexmo-2.9.1/lib/Nexmo.js (Extension)
   -> nexmo-2.9.1/lib/JwtGenerator.js (Extension)
    -> jsonwebtoken-8.5.1/index.js (Extension)
     -> jsonwebtoken-8.5.1/verify.js (Extension)
      -> ❌ jsonwebtoken-8.5.1/lib/psSupported.js (Vulnerable Component)

Vulnerability Details

In versions "<=8.5.1" of "jsonwebtoken" library, lack of algorithm definition in the "jwt.verify()" function can lead to signature validation bypass due to defaulting to the "none" algorithm for signature verification. Users are affected if you do not specify algorithms in the "jwt.verify()" function. This issue has been fixed, please update to version 9.0.0 which removes the default support for the none algorithm in the "jwt.verify()" method. There will be no impact, if you update to version 9.0.0 and you don’t need to allow for the "none" algorithm. If you need 'none' algorithm, you have to explicitly specify that in "jwt.verify()" options.
Mend Note: The description of this vulnerability differs from MITRE.

Publish Date: 2022-12-22

URL: CVE-2022-23540

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.532%

CVSS 3 Score Details (6.4)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: Low
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: Low
    • Integrity Impact: High
    • Availability Impact: Low

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-qwph-4952-7xr6

Release Date: 2022-12-22

Fix Resolution: jsonwebtoken - 9.0.0,jsonwebtoken - 9.0.0

CVE-2023-28155

Vulnerable Library - request-2.88.2.tgz

Simplified HTTP request client.

Library home page: https://registry.npmjs.org/request/-/request-2.88.2.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/request/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • ❌ request-2.88.2.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

This vulnerability is potentially reachable

ni-node-async-tutorial-1.0.0/index.js (Application)
  -> nexmo-2.9.1/lib/Nexmo.js (Extension)
   -> nexmo-2.9.1/lib/HttpClient.js (Extension)
    -> request-2.88.2/index.js (Extension)
     -> request-2.88.2/request.js (Extension)
      -> ❌ request-2.88.2/lib/redirect.js (Vulnerable Component)

Vulnerability Details

The Request package through 2.88.1 for Node.js allows a bypass of SSRF mitigations via an attacker-controller server that does a cross-protocol redirect (HTTP to HTTPS, or HTTPS to HTTP). NOTE: This vulnerability only affects products that are no longer supported by the maintainer.

Publish Date: 2023-03-16

URL: CVE-2023-28155

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.719%

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-p8p7-x288-28g6

Release Date: 2023-03-16

Fix Resolution: @⁠cypress/request - 3.0.0

CVE-2022-23539

Vulnerable Library - jsonwebtoken-8.5.1.tgz

JSON Web Token implementation (symmetric and asymmetric)

Library home page: https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/jsonwebtoken/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • ❌ jsonwebtoken-8.5.1.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

This vulnerability is potentially reachable

ni-node-async-tutorial-1.0.0/index.js (Application)
  -> nexmo-2.9.1/lib/Nexmo.js (Extension)
   -> nexmo-2.9.1/lib/JwtGenerator.js (Extension)
    -> jsonwebtoken-8.5.1/index.js (Extension)
     -> ❌ jsonwebtoken-8.5.1/sign.js (Vulnerable Component)

Vulnerability Details

Versions "<=8.5.1" of "jsonwebtoken" library could be misconfigured so that legacy, insecure key types are used for signature verification. For example, DSA keys could be used with the RS256 algorithm. You are affected if you are using an algorithm and a key type other than a combination listed in the GitHub Security Advisory as unaffected. This issue has been fixed, please update to version 9.0.0. This version validates for asymmetric key type and algorithm combinations. Please refer to the above mentioned algorithm / key type combinations for the valid secure configuration. After updating to version 9.0.0, if you still intend to continue with signing or verifying tokens using invalid key type/algorithm value combinations, you’ll need to set the "allowInvalidAsymmetricKeyTypes" option to "true" in the "sign()" and/or "verify()" functions.
Mend Note: The description of this vulnerability differs from MITRE.

Publish Date: 2022-12-22

URL: CVE-2022-23539

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.479%

CVSS 3 Score Details (5.9)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: Low
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: Low
    • Integrity Impact: High
    • Availability Impact: None

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-8cf7-32gw-wr33

Release Date: 2022-12-22

Fix Resolution: jsonwebtoken - 9.0.0,jsonwebtoken - 9.0.0,jsonwebtoken - 9.0.0

CVE-2026-82417

Vulnerable Library - qs-6.5.5.tgz

A querystring parser that supports nesting and arrays, with a depth limit

Library home page: https://registry.npmjs.org/qs/-/qs-6.5.5.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/request/node_modules/qs/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • request-2.88.2.tgz
      • ❌ qs-6.5.5.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

This vulnerability is potentially reachable

ni-node-async-tutorial-1.0.0/index.js (Application)
  -> nexmo-2.9.1/lib/Nexmo.js (Extension)
   -> nexmo-2.9.1/lib/HttpClient.js (Extension)
    -> request-2.88.2/request.js (Extension)
    ...
      -> qs-6.5.5/lib/index.js (Extension)
       -> qs-6.5.5/lib/parse.js (Extension)
        -> ❌ qs-6.5.5/lib/utils.js (Vulnerable Component)

Vulnerability Details

Summary
"qs.stringify" throws a "TypeError" when it serializes an object whose own "constructor" property has a truthy, non-callable "isBuffer" member. "utils.isBuffer" duck-types buffers by calling "obj.constructor.isBuffer(obj)" after checking only that the property is truthy, so a value such as "{ constructor: { isBuffer: "x" } }" makes the call throw "TypeError: obj.constructor.isBuffer is not a function".
Details
"lib/stringify.js:127" calls "utils.isBuffer" on every non-primitive value it serializes. "utils.isBuffer" ("lib/utils.js:332") reads "obj.constructor.isBuffer" and invokes it without verifying that it is a function. "constructor" and "isBuffer" are ordinary property names, so any object carrying them as own properties reaches the unchecked call.
Such an object can be built from untrusted input. "qs.parse("x[constructor][isBuffer]=y", { plainObjects: true })" or "{ allowPrototypes: true }" keeps the "constructor" key as an own property (the default parse options drop it), and "JSON.parse("{"a":{"constructor":{"isBuffer":"x"}}}")" produces the same shape with no qs option involved. Express 4 with its default "query parser" setting and body-parser with "extended: true" both call "qs.parse" with "allowPrototypes: true", so on those stacks "req.query" and "req.body" can carry the shape directly.
PoC
Fix
"lib/utils.js", applied in e83d321 on "main" and released as v6.16.0:
Real "Buffer", "safer-buffer", and browserify "buffer" polyfill instances serialize exactly as before; only the throw is removed.
Affected versions
">=2.2.5 <6.16.0", fixed in v6.16.0.
The unguarded duck-type was introduced in 3768a75 and first shipped in v2.2.5 (September 2014). v2.2.4 and earlier used "Buffer.isBuffer" and are not affected. Every release from v2.2.5 through v6.15.3 contains the unguarded call.
Impact
An unauthenticated request can make any code path that re-serializes attacker-influenced data with "qs.stringify" (for example, rebuilding a query string from "req.query" for a redirect or an upstream request, or serializing a parsed JSON body) throw synchronously. In a typical Node.js HTTP framework the throw is caught by the framework error boundary and the affected request returns a 500; the process survives and other requests are unaffected. Where the call runs outside an error boundary, such as an "async" Express 4 handler (where the throw becomes an unhandled promise rejection) or a background job, the process exits, so the impact in that case depends on the application error handling rather than on qs.
Mend Note: The description of this vulnerability differs from MITRE.

Publish Date: 2026-08-29

URL: CVE-2026-82417

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.261%

CVSS 3 Score Details (5.3)

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: Low

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-4mjr-xmp4-gh2g

Release Date: 2026-08-29

Fix Resolution: qs - 6.16.0,qs - 6.16.0,https://github.com/ljharb/qs.git - v6.16.0

CVE-2022-23541

Vulnerable Library - jsonwebtoken-8.5.1.tgz

JSON Web Token implementation (symmetric and asymmetric)

Library home page: https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/jsonwebtoken/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • ❌ jsonwebtoken-8.5.1.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

This vulnerability is potentially reachable

ni-node-async-tutorial-1.0.0/index.js (Application)
  -> nexmo-2.9.1/lib/Nexmo.js (Extension)
   -> nexmo-2.9.1/lib/JwtGenerator.js (Extension)
    -> ❌ jsonwebtoken-8.5.1/index.js (Vulnerable Component)

Vulnerability Details

jsonwebtoken is an implementation of JSON Web Tokens. Versions "<= 8.5.1" of "jsonwebtoken" library can be misconfigured so that passing a poorly implemented key retrieval function referring to the "secretOrPublicKey" argument from the readme link will result in incorrect verification of tokens. There is a possibility of using a different algorithm and key combination in verification, other than the one that was used to sign the tokens. Specifically, tokens signed with an asymmetric public key could be verified with a symmetric HS256 algorithm. This can lead to successful validation of forged tokens. If your application is supporting usage of both symmetric key and asymmetric key in jwt.verify() implementation with the same key retrieval function. This issue has been patched, please update to version 9.0.0.
Mend Note: The description of this vulnerability differs from MITRE.

Publish Date: 2022-12-22

URL: CVE-2022-23541

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.753%

CVSS 3 Score Details (5.0)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: High
    • Privileges Required: Low
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: Low
    • Integrity Impact: Low
    • Availability Impact: Low

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-hjrf-2m68-5959

Release Date: 2022-12-22

Fix Resolution: jsonwebtoken - 9.0.0,jsonwebtoken - 9.0.0

CVE-2025-15284

Vulnerable Library - qs-6.5.5.tgz

A querystring parser that supports nesting and arrays, with a depth limit

Library home page: https://registry.npmjs.org/qs/-/qs-6.5.5.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/request/node_modules/qs/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • request-2.88.2.tgz
      • ❌ qs-6.5.5.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

This vulnerability is potentially reachable

ni-node-async-tutorial-1.0.0/index.js (Application)
  -> nexmo-2.9.1/lib/Nexmo.js (Extension)
   -> nexmo-2.9.1/lib/HttpClient.js (Extension)
    -> request-2.88.2/request.js (Extension)
    ...
      -> qs-6.5.5/lib/index.js (Extension)
       -> qs-6.5.5/lib/parse.js (Extension)
        -> ❌ qs-6.5.5/lib/utils.js (Vulnerable Component)

Vulnerability Details

Improper Input Validation vulnerability in qs (parse modules) allows HTTP DoS.This issue affects qs: < 6.14.1.
Summary
The arrayLimit option in qs did not enforce limits for bracket notation (a[]=1&a[]=2), only for indexed notation (a[0]=1). This is a consistency bug; arrayLimit should apply uniformly across all array notations.
Note: The default parameterLimit of 1000 effectively mitigates the DoS scenario originally described. With default options, bracket notation cannot produce arrays larger than parameterLimit regardless of arrayLimit, because each a[]=valueconsumes one parameter slot. The severity has been reduced accordingly.
Details
The arrayLimit option only checked limits for indexed notation (a[0]=1&a[1]=2) but did not enforce it for bracket notation (a[]=1&a[]=2).
Vulnerable code (lib/parse.js:159-162):
if (root === '[]' && options.parseArrays) {
obj = utils.combine([], leaf); // No arrayLimit check
}
Working code (lib/parse.js:175):
else if (index <= options.arrayLimit) { // Limit checked here
obj = [];
obj[index] = leaf;
}
The bracket notation handler at line 159 uses utils.combine([], leaf) without validating against options.arrayLimit, while indexed notation at line 175 checks index <= options.arrayLimit before creating arrays.
PoC
const qs = require('qs');
const result = qs.parse('a[]=1&a[]=2&a[]=3&a[]=4&a[]=5&a[]=6', { arrayLimit: 5 });
console.log(result.a.length); // Output: 6 (should be max 5)
Note on parameterLimit interaction: The original advisory's "DoS demonstration" claimed a length of 10,000, but parameterLimit (default: 1000) caps parsing to 1,000 parameters. With default options, the actual output is 1,000, not 10,000.
Impact
Consistency bug in arrayLimit enforcement. With default parameterLimit, the practical DoS risk is negligible since parameterLimit already caps the total number of parsed parameters (and thus array elements from bracket notation). The risk increases only when parameterLimit is explicitly set to a very high value.

Publish Date: 2025-12-29

URL: CVE-2025-15284

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.456%

CVSS 3 Score Details (3.7)

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: Low

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-6rw7-vpxm-498p

Release Date: 2025-12-29

Fix Resolution: qs - 6.14.1,https://github.com/ljharb/qs.git - v6.14.1

CVE-2026-41907

Vulnerable Libraries - uuid-2.0.3.tgz, uuid-3.4.0.tgz

uuid-2.0.3.tgz

Rigorous implementation of RFC4122 (v1 and v4) UUIDs.

Library home page: https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/uuid/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • ❌ uuid-2.0.3.tgz (Vulnerable Library)

uuid-3.4.0.tgz

RFC4122 (v1, v4, and v5) UUIDs

Library home page: https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/request/node_modules/uuid/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • request-2.88.2.tgz
      • ❌ uuid-3.4.0.tgz (Vulnerable Library)

Found in base branch: main

Reachability Analysis

The vulnerable code is unreachable

Vulnerability Details

uuid is for the creation of RFC9562 (formerly RFC4122) UUIDs. Prior to 14.0.0, v3, v5, and v6 accept external output buffers but do not reject out-of-range writes (small buf or large offset). This allows silent partial writes into caller-provided buffers. This vulnerability is fixed in 14.0.0.

Publish Date: 2026-04-24

URL: CVE-2026-41907

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.35%

CVSS 3 Score Details (9.8)

Base Score Metrics:

  • Exploitability Metrics:
    • Attack Vector: Network
    • Attack Complexity: Low
    • Privileges Required: None
    • User Interaction: None
    • Scope: Unchanged
  • Impact Metrics:
    • Confidentiality Impact: High
    • Integrity Impact: High
    • Availability Impact: High

For more information on CVSS3 Scores, click here.

Suggested Fix

Type: Upgrade version

Origin: GHSA-w5hq-g745-h8pq

Release Date: 2026-04-24

Fix Resolution: https://github.com/uuidjs/uuid.git - v11.1.1,https://github.com/uuidjs/uuid.git - v12.0.1,https://github.com/uuidjs/uuid.git - v13.0.1

CVE-2026-93690

Vulnerable Library - uri-js-4.4.1.tgz

An RFC 3986/3987 compliant, scheme extendable URI/IRI parsing/validating/resolving library for JavaScript.

Library home page: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/uri-js/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • request-2.88.2.tgz
      • har-validator-5.1.5.tgz
        • ajv-6.15.0.tgz
          • ❌ uri-js-4.4.1.tgz (Vulnerable Library)

Found in base branch: main

Vulnerability Details

uri-js through 4.4.1 contains a denial of service vulnerability in the removeDotSegments function that loops infinitely when a path segment begins with Unicode line or paragraph separators. Attackers can trigger this by calling removeDotSegments directly or through normalize/resolve functions with IRI handling enabled, causing the Node.js event loop to block indefinitely until heap exhaustion.

Publish Date: 2026-09-18

URL: CVE-2026-93690

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.457%

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.

CVE-2026-93751

Vulnerable Library - uri-js-4.4.1.tgz

An RFC 3986/3987 compliant, scheme extendable URI/IRI parsing/validating/resolving library for JavaScript.

Library home page: https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz

Sample Path to Dependency File: /package.json

Path to vulnerable library: /node_modules/uri-js/package.json

Dependency Hierarchy:

  • nexmo-2.9.1.tgz (Root Library)
    • request-2.88.2.tgz
      • har-validator-5.1.5.tgz
        • ajv-6.15.0.tgz
          • ❌ uri-js-4.4.1.tgz (Vulnerable Library)

Found in base branch: main

Vulnerability Details

uri-js through 4.4.1 contains an improper UTF-8 decoding vulnerability in pctDecChars() that decodes invalid and overlong percent-encoded sequences into ASCII metacharacters. Attackers can craft percent-encoded payloads to bypass platform decoder validation and inject path traversal or CRLF sequences that downstream consumers process without filtering.

Publish Date: 2026-09-18

URL: CVE-2026-93751

Threat Assessment

Exploit Maturity: Not Defined

EPSS: 0.233%

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: Low
    • Integrity Impact: Low
    • Availability Impact: None

For more information on CVSS3 Scores, click here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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