Lucene search
+L

Linux Distros Unpatched Vulnerability : CVE-2026-82562

🗓️ 30 Aug 2026 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 4 Views

qs arrayLimit not enforced for comma-split values under []= keys, enabling DoS.

Related
Refs
Code
ReporterTitlePublishedViews
Family
ibm
IBM Security Bulletins
Security Bulletin: DevOps Test Performance contains a vulnerabilty related to use of the qs library
7 Apr 202615:44
ibm
ibm
IBM Security Bulletins
Security Bulletin: DataStage on Cloud Pak for Data has several vulnerabilities due to open source software
22 Jun 202614:27
ibm
ibm
IBM Security Bulletins
Security Bulletin: Multiple Vulnerabilities in IBM Edge Application Manager
17 Mar 202603:46
ibm
ibm
IBM Security Bulletins
Security Bulletin: IBM Datapower Operations Dashboard is vulnerable to Allocation of Resources Without Limits CVE-2025-15284
8 Jun 202613:54
ibm
ibm
IBM Security Bulletins
Security Bulletin: Multiple secuirty vulnerabilies addressed with IBM Business Automation Workflow containers July 2026
5 Aug 202607:34
ibm
ibm
IBM Security Bulletins
Security Bulletin: Platform Navigator and Automation Assets in IBM Cloud Pak for Integration are vulnerable to vulnerability in qs
29 Jun 202613:43
ibm
ibm
IBM Security Bulletins
Security Bulletin: A vulnerability in the qs package affects IBM® Db2® Big SQL on IBM Cloud Pak for Data.
15 May 202614:21
ibm
ibm
IBM Security Bulletins
Security Bulletin: IBM Event Endpoint Management is affected by multiple vulnerabilities
30 Jun 202612:19
ibm
ibm
IBM Security Bulletins
Security Bulletin: IBM Spectrum Control is vulnerable to weaknesses related to qs-6.13.0.tgz (CVE-2026-2391)
21 Aug 202611:07
ibm
ibm
IBM Security Bulletins
Security Bulletin: IBM Event Streams is affected by multiple vulnerabilities
30 Jun 202612:14
ibm
Rows per page
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

if (description)
{
  script_id(341597);
  script_version("1.1");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/08/30");

  script_cve_id("CVE-2026-82562");

  script_name(english:"Linux Distros Unpatched Vulnerability : CVE-2026-82562");

  script_set_attribute(attribute:"synopsis", value:
"The Linux/Unix host has one or more packages installed with a vulnerability that the vendor indicates will not be
patched.");
  script_set_attribute(attribute:"description", value:
"The Linux/Unix host has one or more packages installed that are impacted by a vulnerability without a vendor supplied
patch available.

  - ### Summary When `qs.parse` is called with `comma: true` and `throwOnLimitExceeded: true`, a comma-
    separated value under a bracket-push key (`a[]=1,2,3,4`) is split into an array without being compared
    against `arrayLimit`, while the same value under a flat key (`a=1,2,3,4`), an indexed key (`a[0]=`), a
    nested key (`a[b]=`), or a dotted key (`a.b=` with `allowDots`) throws the documented `RangeError`. A
    single parameter such as `a[]=1,2,2,...` therefore produces an inner array of arbitrary length even though
    the caller opted into the hard limit. This is the `[]=` key form that the fix for CVE-2026-2391 (qs
    6.14.2) did not cover. ### Details In `lib/parse.js`, a comma-separated value under a `[]=` key is split
    and then wrapped as a single nested element (`val = [val]`, so that each `a[]=x,y` group counts as one
    element of the outer array). The `arrayLimit` check that 6.14.2 added for comma values runs after that
    wrap, so for `[]=` parts it only ever saw the wrapper of length 1. 6.15.3 added a pre-split comma count so
    that an oversized value throws before it is allocated, but gated it on an `isFlatArrayValue` flag that
    `parseValues` set to `false` for any part containing `[]=`, and did not pass it for object-valued input,
    so the gap remained. #### PoC ```js var qs = require('qs'); var options = { comma: true, arrayLimit: 3,
    throwOnLimitExceeded: true }; qs.parse('a=1,2,3,4', options); // RangeError: Array limit exceeded. Only 3
    elements allowed in an array. qs.parse('a[]=1,2,3,4', options); // { a: [ [ '1', '2', '3', '4' ] ] } (no
    throw) qs.parse('a[]=' + '1,'.repeat(1000000) + '1', { comma: true, arrayLimit: 20, throwOnLimitExceeded:
    true }); // no throw; a 1,000,001-element inner array is allocated ``` #### Fix `lib/parse.js`, applied in
    8859c37 on `main` and released as v6.16.0: the `isFlatArrayValue` gate is removed, so every comma-split
    value is counted against `arrayLimit` before splitting regardless of key form. An in-limit group under
    `a[]=` still counts as one element of the outer array, and the default (`throwOnLimitExceeded: false`)
    path is unchanged. ### Affected versions `>=6.14.2 <6.16.0`, fixed in v6.16.0. v6.14.2 introduced
    `arrayLimit` enforcement for comma values (the fix for CVE-2026-2391) but only for values not under a
    `[]=` key, and every release from v6.14.2 through v6.15.3 has the same gap. v6.14.0 and v6.14.1, where
    `throwOnLimitExceeded` exists but does not apply to any comma form, are covered by CVE-2026-2391 rather
    than this record. Earlier lines (6.7.x through 6.13.x) have `comma` but no `throwOnLimitExceeded`, so
    there is no hard cap on any comma path to bypass; releases before 6.7.0 have no `comma` option. ### Impact
    An unauthenticated attacker who can reach an application that parses untrusted query strings or urlencoded
    bodies with both `comma: true` and `throwOnLimitExceeded: true` (both non-default) can bypass the
    configured limit with a single `a[]=` parameter and force the parser to allocate an array proportional to
    the request size. The cost is strictly linear in the attacker-supplied bytes (about 0.1 microseconds and 6
    to 7 retained bytes per input byte; the same out-of-memory threshold as the documented default
    `throwOnLimitExceeded: false` path), so a transport-layer request or body size limit bounds it completely
    (and node's default maximum HTTP header size of 16 KB already bounds the request line, so multi-megabyte
    payloads need a body parser). The impact is that an opt-in hard limit fails open on one key spelling, not
    unbounded allocation from a small input. (CVE-2026-82562)

Note that Nessus relies on the presence of the package as reported by the vendor.");
  script_set_attribute(attribute:"see_also", value:"https://security-tracker.debian.org/tracker/CVE-2026-82562");
  script_set_attribute(attribute:"solution", value:
"There is no known solution at this time.");
  script_set_attribute(attribute:"agent", value:"unix");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:N/I:P/A:P");
  script_set_cvss_temporal_vector("CVSS2#E:U/RL:U/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:L");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:U/RC:C");
  script_set_attribute(attribute:"cvss4_vector", value:"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N");
  script_set_attribute(attribute:"cvss4_threat_vector", value:"CVSS:4.0/E:U");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2026-82562");

  script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
  script_set_attribute(attribute:"exploit_available", value:"false");
  script_set_attribute(attribute:"vendor_unpatched", value:"true");

  script_set_attribute(attribute:"vuln_publication_date", value:"2026/08/30");
  script_set_attribute(attribute:"plugin_publication_date", value:"2026/08/30");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:debian:debian_linux:11.0");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:debian:debian_linux:12.0");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:debian:debian_linux:13.0");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:debian:debian_linux:14.0");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:debian:debian_linux:node-qs");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Misc.");

  script_copyright(english:"This script is Copyright (C) 2026 and is owned by Tenable, Inc. or an Affiliate thereof.");

  script_dependencies("ssh_get_info2.nasl", "set_linux_os_id.nasl");
  script_require_keys("Host/cpu", "Host/local_checks_enabled", "global_settings/vendor_unpatched", "Host/OS/identifier");
  script_require_ports("Host/OS/Debian Linux-11", "Host/OS/Debian Linux-12", "Host/OS/Debian Linux-13", "Host/OS/Debian Linux-14");

  exit(0);
}

if (!get_kb_item("global_settings/vendor_unpatched")) exit(0, "Unpatched Vulnerabilities Detection not active.");
if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
if (empty_or_null(get_one_kb_item("Host/Debian/dpkg-l"))) audit(AUDIT_PACKAGE_LIST_MISSING);

include('linux_unpatched.inc');

var distro_constraints_array = {
  "Debian Linux-11": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "11",
        "pkgs": [
          {"reference": "node-qs"}
        ]
      }
    ]
  },
  "Debian Linux-12": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "12",
        "pkgs": [
          {"reference": "node-qs"}
        ]
      }
    ]
  },
  "Debian Linux-13": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "13",
        "pkgs": [
          {"reference": "node-qs"}
        ]
      }
    ]
  },
  "Debian Linux-14": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "14",
        "pkgs": [
          {"reference": "node-qs"}
        ]
      }
    ]
  }
};

var distro_constraints_values = linux_unpatched::get_distro_constraints(distro_constraints_arr:distro_constraints_array);
if (empty_or_null(distro_constraints_values)) audit(AUDIT_HOST_NOT, 'affected');

var third_party_support = get_kb_item('Host/OS/extended-third-party');
if (!empty_or_null(third_party_support)) {
    var third_party_vendors = distro_constraints_values['third_party'];
    if (!empty_or_null(third_party_vendors)) {
        var vendor;
        foreach vendor (third_party_vendors) {
            if (vendor == third_party_support) exit(0, 'A third party management patch is available for this vulnerability from ' + vendor + '.\n');
        }
    }
}

var report = linux_unpatched::check_unpatched_constraints(distro_constraints_values:distro_constraints_values);

if (!empty_or_null(report))
{
  security_report_v4(
      port       : 0,
      severity   : SECURITY_WARNING,
      extra      : report
  );
  exit(0);
}
else
{
  audit(AUDIT_HOST_NOT, 'affected');
}

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

30 Aug 2026 00:00Current
6Medium risk
Vulners AI Score6
CVSS 3.13.7 - 7.5
CVSS 46.3
EPSS0.00478
SSVC
4