Lucene search
+L

Linux Distros Unpatched Vulnerability : CVE-2026-98811

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

Race condition in net/sched: cls_api allows memory leak of empty protos.

Related
Refs
Code
ReporterTitlePublishedViews
Family
cve
CVE
CVE-2026-98811
18 Oct 202615:48
–cve
cvelist
Cvelist
CVE-2026-98811 net/sched: cls_api: reclaim an empty proto on the error path
18 Oct 202615:48
–cvelist
debiancve
Debian CVE
CVE-2026-98811
18 Oct 202615:48
–debiancve
euvd
EUVD
EUVD-2026-103896
18 Oct 202615:48
–euvd
nvd
NVD
CVE-2026-98811
18 Oct 202616:17
–nvd
osv_azl
osv_azl
AZL-109377 CVE-2026-98811 affecting package kernel 6.6.157.1-1
18 Oct 202616:17
–osv_azl
osv_debian
osv_debian
DEBIAN-CVE-2026-98811
18 Oct 202617:47
–osv_debian
ptsecurity
Positive Technologies
PT-2026-117030
18 Oct 202600:00
–ptsecurity
ubuntucve
UbuntuCve
CVE-2026-98811
19 Oct 202600:00
–ubuntucve
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

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

  script_cve_id("CVE-2026-98811");

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

  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.

  - net/sched: cls_api: reclaim an empty proto on the error path Two racing tc filter add requests on the same
    chain/prio of an unlocked classifier both run change() on the shared proto and both can fail: the winner's
    tcf_chain_tp_delete_empty() attempt gives up because the loser's handle is still in the idr, and the
    loser's error path drops only its own reference without a second reclamation attempt. The empty proto
    stays linked in the chain, holding the chain reference, a block reference and the classifier module
    reference until the chain or block is torn down. Reclaim the proto on the error path of any failed request
    that holds a proto reference. The reclamation is emptiness-gated: tcf_chain_tp_delete_empty() unlinks the
    proto only when delete_empty() admits it is empty, so a live shared proto is never unlinked. A proto the
    request created is reclaimed unconditionally - it is the only owner, so marking it for deletion is safe
    even without a delete_empty callback. Classifiers without one (the check marks the proto unconditionally)
    are rtnl-serialized, so the raced window this guard closes cannot arise for them. This is a follow-up to
    commit d4e359b3608a (net/sched: cls_api: fix teardown of an adopted proto on insert-race loss), which
    stopped the loser of the insert race from unlinking the winner's live proto but left the empty-proto
    residual in place. Conditions to recreate: - CONFIG_NET_CLS_FLOWER=y; veth pair - tc qdisc add dev veth0
    ingress - two concurrent `tc filter add dev veth0 ingress protocol ip pref 1 flower skip_sw ... action
    drop` (both fail in fl_hw_replace_filter after publishing their handle in the idr); repeat in a loop - an
    empty flower tp stays linked after both requests fail; visible as a bare `filter protocol ip pref 1 flower
    chain 0` header in `tc filter show` with no filter entries - CAP_NET_ADMIN (namespace-local via unshare
    -Urn suffices) (CVE-2026-98811)

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-98811");
  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-98811");

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

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

  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-12": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "12",
        "pkgs": [
          {"reference": "btrfs-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "cdrom-core-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "ext4-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "fat-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "isofs-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "jfs-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "kernel-image-6.1.0-50-alpha-generic-di"},
          {"reference": "linux-doc"},
          {"reference": "linux-doc-6.1"},
          {"reference": "linux-headers-6.1.0"},
          {"reference": "linux-source"},
          {"reference": "linux-source-6.1"},
          {"reference": "linux-support-6.1.0"},
          {"reference": "loop-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "nic-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "nic-shared-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "nic-wireless-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "pata-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "ppp-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "scsi-core-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "scsi-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "scsi-nic-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "serial-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "usb-serial-modules-6.1.0-50-alpha-generic-di"},
          {"reference": "xfs-modules-6.1.0-50-alpha-generic-di"}
        ]
      }
    ]
  }
};

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

18 Oct 2026 00:00Current
5.7Medium risk
Vulners AI Score5.7
EPSS0.00168
2