Lucene search
+L

Linux Distros Unpatched Vulnerability : CVE-2026-89517

🗓️ 12 Sep 2026 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 5 Views

rq->core_pick corruption in sched_ext under core scheduling causing NULL deref or deadlock.

Related
Refs
Code
ReporterTitlePublishedViews
Family
cve
CVE
CVE-2026-89517
11 Sep 202619:44
cve
cvelist
Cvelist
CVE-2026-89517 sched_ext: Fix rq->core_pick corruption under core scheduling
11 Sep 202619:44
cvelist
debiancve
Debian CVE
CVE-2026-89517
11 Sep 202619:44
debiancve
euvd
EUVD
EUVD-2026-76423
11 Sep 202619:44
euvd
nvd
NVD
CVE-2026-89517
11 Sep 202620:19
nvd
osv
OSV
DEBIAN-CVE-2026-89517
11 Sep 202620:19
osv
osv
OSV
UBUNTU-CVE-2026-89517
14 Sep 202600:00
osv
ptsecurity
Positive Technologies
PT-2026-90233
11 Sep 202600:00
ptsecurity
redhatcve
RedhatCVE
CVE-2026-89517
11 Sep 202622:15
redhatcve
ubuntucve
UbuntuCve
CVE-2026-89517
14 Sep 202600:00
ubuntucve
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

if (description)
{
  script_id(345269);
  script_version("1.1");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/09/12");

  script_cve_id("CVE-2026-89517");

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

  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.

  - sched_ext: Fix rq->core_pick corruption under core scheduling Core scheduling's pick_next_task() picks
    what to run on every SMT sibling of the core in a single pass under the shared core-wide rq lock. The
    selection state is consistent only while the lock is held continuously, so ->pick_task() originally could
    not release it. However, since 4c95380701f5 (sched/ext: Fold balance_scx() into pick_task_scx()),
    sched_ext runs dispatch from inside the pick and dispatching can drop the rq lock. To support this,
    pick_next_task() has been updated to restart the whole selection when a pick returns RETRY_TASK after
    releasing the lock. When selections on the same core interleave through the dropped lock, they corrupt
    each other's state: one clears the other's rq->core_pick leading to a NULL deref, or invalidates its keep-
    the-previous-task decision leaving a dequeued task running, which deadlocks the next wakeup and matches
    the reported hard hangs. A cookied ping-pong load on an SMT machine makes the interleavings frequent and
    kills the kernel within seconds. Fix it by making the pick return RETRY_TASK whenever dispatch released
    the rq lock, so that a selection only ever commits picks made under a continuously held lock. The previous
    patch's rq->scx.lock_drop_seq counts the releases. A dispatch that touched nothing never releases the lock
    and its verdict, including nothing to run, stands: retries are bounded, each following a dispatch that
    actually did something, and an idle CPU does not loop. If another dispatch is already in flight on the rq,
    skip dispatching and pick from what is already queued locally - the in-flight dispatch has released the
    lock, so its own selection will retry and re-pick this rq, while returning RETRY_TASK here would only spin
    on the lock that dispatch needs to finish. Balance callbacks must run in the context that queued them, so
    they can only be queued on the CPU's own rq. When dispatching for another rq, run the deferred work
    directly instead - that rq may consume all its picks through the core-sched fast path and never queue the
    callback itself. The put_prev_task_scx() warning about a runnable task being left behind assumed that
    dispatch ran as part of the very pick that is switching away. That now only holds on the non-core path, so
    gate it and drop the cookie-match test, which is always true without core scheduling, from its condition.
    (CVE-2026-89517)

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-89517");
  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:L/AC:L/Au:N/C:N/I:N/A:C");
  script_set_cvss_temporal_vector("CVSS2#E:U/RL:U/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:U/RC:C");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2026-89517");

  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/09/11");
  script_set_attribute(attribute:"plugin_publication_date", value:"2026/09/12");

  script_set_attribute(attribute:"plugin_type", value:"local");
  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:linux");
  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-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-14": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "14",
        "pkgs": [
          {"reference": "bpftool"},
          {"reference": "hyperv-daemons"},
          {"reference": "intel-sdsi"},
          {"reference": "libcpupower-dev"},
          {"reference": "libcpupower1"},
          {"reference": "linux-base-7.1.13+deb14-alpha-generic"},
          {"reference": "linux-base-7.1.13+deb14-alpha-smp"},
          {"reference": "linux-base-7.1.13+deb14-amd64"},
          {"reference": "linux-base-7.1.13+deb14-arm64"},
          {"reference": "linux-base-7.1.13+deb14-arm64-16k"},
          {"reference": "linux-base-7.1.13+deb14-armmp"},
          {"reference": "linux-base-7.1.13+deb14-armmp-lpae"},
          {"reference": "linux-base-7.1.13+deb14-cloud-amd64"},
          {"reference": "linux-base-7.1.13+deb14-cloud-arm64"},
          {"reference": "linux-base-7.1.13+deb14-loong64"},
          {"reference": "linux-base-7.1.13+deb14-m68k"},
          {"reference": "linux-base-7.1.13+deb14-parisc"},
          {"reference": "linux-base-7.1.13+deb14-parisc64"},
          {"reference": "linux-base-7.1.13+deb14-powerpc"},
          {"reference": "linux-base-7.1.13+deb14-powerpc-smp"},
          {"reference": "linux-base-7.1.13+deb14-powerpc64"},
          {"reference": "linux-base-7.1.13+deb14-powerpc64-64k"},
          {"reference": "linux-base-7.1.13+deb14-powerpc64le"},
          {"reference": "linux-base-7.1.13+deb14-powerpc64le-64k"},
          {"reference": "linux-base-7.1.13+deb14-riscv64"},
          {"reference": "linux-base-7.1.13+deb14-rt-amd64"},
          {"reference": "linux-base-7.1.13+deb14-rt-arm64"},
          {"reference": "linux-base-7.1.13+deb14-s390x"},
          {"reference": "linux-base-7.1.13+deb14-sh7751r"},
          {"reference": "linux-base-7.1.13+deb14-sparc64"},
          {"reference": "linux-base-7.1.13+deb14-sparc64-smp"}
        ]
      }
    ]
  }
};

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