Lucene search
+L

AlmaLinux 9.2 [TuxCare] Security Update: jq / jq-devel Multiple Vulnerabilities (ALMALINUX9.2:CLSA-2026:1779123410)

🗓️ 01 Oct 2026 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 9 Views

Multiple vulnerabilities in jq allow memory disclosure, DoS, or CPU exhaustion.

Related
Refs
Code
ReporterTitlePublishedViews
Family
attackerkb
attackerkb
CVE-2026-43894
11 May 202617:20
–attackerkb
attackerkb
attackerkb
CVE-2026-40612
11 May 202617:16
–attackerkb
attackerkb
attackerkb
CVE-2026-41257
11 May 202617:14
–attackerkb
attackerkb
attackerkb
CVE-2026-39979
13 Apr 202622:18
–attackerkb
attackerkb
attackerkb
CVE-2026-41256
11 May 202617:18
–attackerkb
attackerkb
attackerkb
CVE-2026-43896
11 May 202617:24
–attackerkb
attackerkb
attackerkb
CVE-2026-44777
11 May 202617:23
–attackerkb
attackerkb
attackerkb
CVE-2026-43895
11 May 202617:24
–attackerkb
attackerkb
attackerkb
CVE-2026-40164
13 Apr 202623:40
–attackerkb
nessus
Tenable Nessus
Amazon Linux 2023 : jq, jq-devel (ALAS2023-2026-1815)
8 Jun 202600:00
–nessus
Rows per page
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

if (description)
{
  script_id(362160);
  script_version("1.1");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/10/01");

  script_cve_id(
    "CVE-2026-39979",
    "CVE-2026-40164",
    "CVE-2026-40612",
    "CVE-2026-41256",
    "CVE-2026-41257",
    "CVE-2026-43894",
    "CVE-2026-43895",
    "CVE-2026-43896",
    "CVE-2026-44777"
  );
  script_xref(name:"CLSA", value:"2026:1779123410");

  script_name(english:"AlmaLinux 9.2 [TuxCare] Security Update: jq / jq-devel Multiple Vulnerabilities (ALMALINUX9.2:CLSA-2026:1779123410)");

  script_set_attribute(attribute:"synopsis", value:
"The AlmaLinux host is missing one or more security updates.");
  script_set_attribute(attribute:"description", value:
"The AlmaLinux 9.2 host has packages installed that are affected by multiple vulnerabilities as referenced in the TuxCare
ALMALINUX9.2:CLSA-2026:1779123410 advisory.

  - jq is a command-line JSON processor. In commits before 2f09060afab23fe9390cce7cb860b10416e1bf5f, the
    jv_parse_sized() API in libjq accepts a counted buffer with an explicit length parameter, but its error-
    handling path formats the input buffer using %s in jv_string_fmt(), which reads until a NUL terminator is
    found rather than respecting the caller-supplied length. This means that when malformed JSON is passed in
    a non-NUL-terminated buffer, the error construction logic performs an out-of-bounds read past the end of
    the buffer. The vulnerability is reachable by any libjq consumer calling jv_parse_sized() with untrusted
    input, and depending on memory layout, can result in memory disclosure or process termination. The issue
    has been patched in commit 2f09060afab23fe9390cce7cb860b10416e1bf5f. (CVE-2026-39979)

  - jq is a command-line JSON processor. Before commit 0c7d133c3c7e37c00b6d46b658a02244fdd3c784, jq used
    MurmurHash3 with a hardcoded, publicly visible seed (0x432A9843) for all JSON object hash table
    operations, which allowed an attacker to precompute key collisions offline. By supplying a crafted JSON
    object (~100 KB) where all keys hashed to the same bucket, hash table lookups degraded from O(1) to O(n),
    turning any jq expression into an O(n) operation and causing significant CPU exhaustion. This affected
    common jq use cases such as CI/CD pipelines, web services, and data processing scripts, and was far more
    practical to exploit than existing heap overflow issues since it required only a small payload. This issue
    has been patched in commit 0c7d133c3c7e37c00b6d46b658a02244fdd3c784. (CVE-2026-40164)

  - jq is a command-line JSON processor. In 1.8.1 and earlier, jv_contains recurses into nested arrays/objects
    with no depth limit. With a sufficiently nested input structure (built programmatically with reduce, since
    the JSON parser caps at depth 10000), the C stack is exhausted. (CVE-2026-40612)

  - jq is a command-line JSON processor. In 1.8.1 and earlier, Top-level jq programs loaded from a file with
    -f are truncated at the first embedded NUL byte on current upstream HEAD. A crafted filter file such as .
    followed by \x00 and arbitrary suffix compiles and executes as only the prefix before the NUL. This leaves
    jq with a post-CVE-2026-33948 prefix/full-buffer mismatch on the compilation path even though the JSON
    parser path has already been fixed. (CVE-2026-41256)

  - jq is a command-line JSON processor. In 1.8.1 and earlier, the jq bytecode VM's data stack tracks its
    allocation size in a signed int. When the stack grows beyond 1 GiB (via deeply nested generator forks),
    the doubling arithmetic overflows. The wrapped value is passed to realloc and then used for a memmove with
    attacker-influenced offsets. (CVE-2026-41257)

Note that Nessus has not tested for these issues but has instead relied only on the application's self-reported version
number.");
  # https://security.tuxcare.com/csaf/v2/els_os/almalinux9.2esu/advisories/2026/clsa-2026_1779123410.json
  script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?36d7667a");
  script_set_attribute(attribute:"see_also", value:"https://cve.tuxcare.com/els/releases/CLSA-2026:1779123410");
  script_set_attribute(attribute:"solution", value:
"Update the affected packages based on the guidance in TuxCare advisory ALMALINUX9.2:CLSA-2026:1779123410.");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:P/I:N/A:P");
  script_set_cvss_temporal_vector("CVSS2#E:POC/RL:OF/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:L");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:P/RL:O/RC:C");
  script_set_attribute(attribute:"cvss4_vector", value:"CVSS:4.0/AV:L/AC:H/AT:N/PR:N/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N");
  script_set_attribute(attribute:"cvss4_threat_vector", value:"CVSS:4.0/E:P");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2026-39979");
  script_set_attribute(attribute:"cvss4_score_source", value:"CVE-2026-41257");

  script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
  script_set_attribute(attribute:"exploit_available", value:"true");
  script_set_attribute(attribute:"vendor_severity", value:"Important");

  script_set_attribute(attribute:"vuln_publication_date", value:"2026/04/13");
  script_set_attribute(attribute:"patch_publication_date", value:"2026/05/18");
  script_set_attribute(attribute:"plugin_publication_date", value:"2026/10/01");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Alma Linux Local Security Checks");

  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");
  script_require_keys("Host/OS/extended-third-party", "Host/local_checks_enabled", "Host/AlmaLinux/release", "Host/AlmaLinux/rpm-list", "Host/cpu");

  exit(0);
}
include('rpm2.inc');

var third_party_support = get_kb_item('Host/OS/extended-third-party');
if (empty_or_null(third_party_support) || third_party_support != 'TuxCare') exit(0, 'TuxCare support not enabled.');

if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_product = get_kb_item('installed_os/local/SSH/0/product');
if (isnull(os_product) || 'AlmaLinux' >!< os_product) audit(AUDIT_OS_NOT, 'AlmaLinux');
var os_version = get_kb_item('installed_os/local/SSH/0/version');
if (isnull(os_version)) audit(AUDIT_UNKNOWN_APP_VER, 'AlmaLinux');
if (! preg(pattern:"^9.2([^0-9]|$)", string:os_version)) audit(AUDIT_OS_NOT, 'AlmaLinux 9.2', 'AlmaLinux ' + os_version);

if (!get_kb_item('Host/AlmaLinux/rpm-list')) audit(AUDIT_PACKAGE_LIST_MISSING);

var cpu = get_kb_item('Host/cpu');
if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
if (cpu !~ "^i[3-6]86$" && 'x86_64' >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'AlmaLinux', cpu);


var constraints = [
  {
    'release': '9',
    'sp': '2',
    'pkgs': [
      {'reference':'jq-1.6-14.el9.tuxcare.els6', 'sp':'2', 'cpu':'i686', 'rpm_spec_vers_cmp':TRUE},
      {'reference':'jq-1.6-14.el9.tuxcare.els6', 'sp':'2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE},
      {'reference':'jq-devel-1.6-14.el9.tuxcare.els6', 'sp':'2', 'cpu':'i686', 'rpm_spec_vers_cmp':TRUE},
      {'reference':'jq-devel-1.6-14.el9.tuxcare.els6', 'sp':'2', 'cpu':'x86_64', 'rpm_spec_vers_cmp':TRUE}
    ]
  }
];

var os_release = get_one_kb_item('installed_os/local/SSH/0/release');
var os_sp = get_one_kb_item('Host/*/minor_release');

var flag = 0;
var reference;
var sp;
var _cpu;
var el_string;
var rpm_spec_vers_cmp;
var epoch;
var allowmaj;
var exists_check;
var cves;
foreach var constraint ( constraints ) {
  # Check that the target release is equal to the affected release
  if (!empty_or_null(constraint['release'])){
    if (constraint['release'] != os_release) continue;
  }
  if (!empty_or_null(constraint['sp'])){
    if (constraint['sp'] != os_sp) continue;
  }
  foreach var pkg ( constraint['pkgs'] ) {
    reference = NULL;
    sp = NULL;
    _cpu = NULL;
    el_string = NULL;
    rpm_spec_vers_cmp = NULL;
    epoch = NULL;
    allowmaj = NULL;
    exists_check = NULL;
    cves = NULL;
    if (!empty_or_null(pkg['reference'])) reference = pkg['reference'];
    if (!empty_or_null(pkg['sp'])) sp = pkg['sp'];
    if (!empty_or_null(pkg['cpu'])) _cpu = pkg['cpu'];
    if (!empty_or_null(pkg['el_string'])) el_string = pkg['el_string'];
    if (!empty_or_null(pkg['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = pkg['rpm_spec_vers_cmp'];
    if (!empty_or_null(pkg['epoch'])) epoch = pkg['epoch'];
    if (!empty_or_null(pkg['allowmaj'])) allowmaj = pkg['allowmaj'];
    if (!empty_or_null(pkg['exists_check'])) exists_check = pkg['exists_check'];
    if (!empty_or_null(pkg['cves'])) cves = pkg['cves'];
    if (reference &&
        ## (no known rpm to check OR known rpm_exists)
        (!exists_check || rpm_exists(rpm:exists_check)) &&
        rpm_check(sp:sp, cpu:_cpu, reference:reference, epoch:epoch, el_string:el_string, rpm_spec_vers_cmp:rpm_spec_vers_cmp, allowmaj:allowmaj, cves:cves)) flag++;
  }
}


if (flag)
{
  security_report_v4(
      port       : 0,
      severity   : SECURITY_WARNING,
      extra      : rpm_report_get()
  );
  exit(0);
}
else
{
  var tested = pkg_tests_get();
  if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
  else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'jq / jq-devel');
}

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

01 Oct 2026 00:00Current
7High risk
Vulners AI Score7
CVSS 3.16.5 - 8.2
CVSS 47.3
EPSS0.00824
SSVC
9