Lucene search
+L

Linux Distros Unpatched Vulnerability : CVE-2026-98999

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

Stale pinned_link entry in drm/xe leads to use-after-free and list corruption.

Related
Refs
Code
ReporterTitlePublishedViews
Family
circl
Circl
CVE-2026-98999
23 Oct 202613:39
–circl
cve
CVE
CVE-2026-98999
23 Oct 202612:20
–cve
cvelist
Cvelist
CVE-2026-98999 drm/xe: Fix stale pinned_link entry when fb-pin performs the final unpin
23 Oct 202612:20
–cvelist
debiancve
Debian CVE
CVE-2026-98999
23 Oct 202612:20
–debiancve
euvd
EUVD
EUVD-2026-108793
23 Oct 202612:20
–euvd
nvd
NVD
CVE-2026-98999
23 Oct 202613:17
–nvd
osv_debian
osv_debian
DEBIAN-CVE-2026-98999
23 Oct 202613:17
–osv_debian
ptsecurity
Positive Technologies
PT-2026-121976
23 Oct 202600:00
–ptsecurity
susecve
SUSE CVE
SUSE CVE-2026-98999
23 Oct 202623:52
–susecve
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

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

  script_cve_id("CVE-2026-98999");

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

  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.

  - drm/xe: Fix stale pinned_link entry when fb-pin performs the final unpin xe_bo_pin_external() and
    xe_bo_unpin_external() maintain the bo's pinned_link list membership in xe->pinned.late.external, based on
    whether the current call is the outermost pin or the final unpin. However, the same external bo's
    pin_count can also be raised and lowered directly by __xe_pin_fb_vma()/__xe_unpin_fb_vma(), which pin the
    bo as a display scanout buffer without going through xe_bo_pin_external()/xe_bo_unpin_external() at all,
    and have no notion of, or ownership over, pinned_link. If a bo is pinned both externally (e.g. dma-buf
    export) and as an fb, and the external unpin happens first, xe_bo_unpin_external() correctly observes
    pin_count > 1 and leaves the bo on pinned_link. When the fb unpin later performs the true last unpin
    (pin_count 1 -> 0), it never touches pinned_link, leaving the bo linked on xe->pinned.late.external
    indefinitely. Once the bo is subsequently freed, this stale list entry points into freed memory,
    corrupting the list and risking a use-after-free the next time the list is walked or spliced. The backup
    object pin/unpin sites in xe_bo_notifier_prepare_pinned()/ xe_bo_notifier_unprepare_pinned() have the same
    bypass characteristic, though they never add their bo to a pinned list, so are not affected by this
    particular list-corruption issue. Move the pinned_link removal into xe_bo_account_unpin(), which already
    runs on every unpin path (kernel, external, framebuffer, backup object) right before the true 1 -> 0
    pin_count transition. Since list_del_init() only operates on the node itself, this removal is list-
    agnostic and safe to perform regardless of which list (external or kernel_bo_present) the bo happens to be
    linked on, or which code path is performing the final unpin. Drop the now-redundant explicit
    list_del_init() calls in xe_bo_unpin_external() and xe_bo_unpin(). v2: - New patch v3: - Rebased on
    changes to previous patch. (cherry picked from commit ca58d36a1f93af586ee93b340c9f9fd81312cc01)
    (CVE-2026-98999)

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-98999");
  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:P/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:L/PR:N/UI:N/S:U/C:H/I:H/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-98999");

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

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:debian:debian_linux:13.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-13");

  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-13": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "13",
        "pkgs": [
          {"reference": "bpftool"},
          {"reference": "hyperv-daemons"},
          {"reference": "intel-sdsi"},
          {"reference": "libcpupower-dev"},
          {"reference": "libcpupower1"},
          {"reference": "linux-bpf-dev"},
          {"reference": "linux-config-6.12"},
          {"reference": "linux-cpupower"},
          {"reference": "linux-doc"},
          {"reference": "linux-doc-6.12"},
          {"reference": "linux-headers-4kc-malta"},
          {"reference": "linux-headers-5kc-malta"},
          {"reference": "linux-headers-6.12.107+deb13-4kc-malta"},
          {"reference": "linux-headers-6.12.107+deb13-5kc-malta"},
          {"reference": "linux-headers-6.12.107+deb13-alpha-generic"},
          {"reference": "linux-headers-6.12.107+deb13-alpha-smp"},
          {"reference": "linux-headers-6.12.107+deb13-amd64"},
          {"reference": "linux-headers-6.12.107+deb13-arm64"},
          {"reference": "linux-headers-6.12.107+deb13-arm64-16k"},
          {"reference": "linux-headers-6.12.107+deb13-armmp"},
          {"reference": "linux-headers-6.12.107+deb13-armmp-lpae"},
          {"reference": "linux-headers-6.12.107+deb13-cloud-amd64"},
          {"reference": "linux-headers-6.12.107+deb13-cloud-arm64"},
          {"reference": "linux-headers-6.12.107+deb13-common"},
          {"reference": "linux-headers-6.12.107+deb13-common-rt"},
          {"reference": "linux-headers-6.12.107+deb13-loong64"},
          {"reference": "linux-headers-6.12.107+deb13-loongson-3"},
          {"reference": "linux-headers-6.12.107+deb13-m68k"},
          {"reference": "linux-headers-6.12.107+deb13-mips32r2eb"},
          {"reference": "linux-headers-6.12.107+deb13-mips32r2el"},
          {"reference": "linux-headers-6.12.107+deb13-mips64r2eb"}
        ]
      }
    ]
  }
};

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

23 Oct 2026 00:00Current
6.5Medium risk
Vulners AI Score6.5
CVSS 3.17.8
EPSS0.00219
2