Lucene search
+L

Linux Distros Unpatched Vulnerability : CVE-2026-89664

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

Linux nfsd leaks posix_acl refs on OP_OPEN short-circuit and replay paths (missing op_release).

Related
Refs
Code
ReporterTitlePublishedViews
Family
cve
CVE
CVE-2026-89664
11 Sep 202619:45
cve
cvelist
Cvelist
CVE-2026-89664 nfsd: release OPEN-decoded posix ACLs via op_release
11 Sep 202619:45
cvelist
debiancve
Debian CVE
CVE-2026-89664
11 Sep 202619:45
debiancve
euvd
EUVD
EUVD-2026-76576
11 Sep 202619:45
euvd
nvd
NVD
CVE-2026-89664
11 Sep 202620:19
nvd
osv
OSV
DEBIAN-CVE-2026-89664
11 Sep 202620:19
osv
ptsecurity
Positive Technologies
PT-2026-90380
11 Sep 202600:00
ptsecurity
redhatcve
RedhatCVE
CVE-2026-89664
12 Sep 202600:12
redhatcve
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

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

  script_cve_id("CVE-2026-89664");

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

  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.

  - nfsd: release OPEN-decoded posix ACLs via op_release nfsd4_decode_createhow4() calls
    nfsd4_decode_fattr4(), which allocates refcounted struct posix_acl objects via posix_acl_alloc() and
    stores them in open->op_pacl and open->op_dpacl. These pointers must be released once the OPEN compound
    finishes. When nfsd4_decode_open_claim4() returns a non-seqid-mutating error, the dispatcher short-
    circuits before op_func runs: nfsd4_proc_compound() if (op->status && op->opnum == OP_OPEN) op->status =
    nfsd4_open_omfg(...) if (!seqid_mutating_err(ntohl(op->status))) return op->status; /* nfsd4_open() never
    runs */ ... opdesc->op_release(&op->u) /* must still release op_pacl/op_dpacl */ Before this change
    OP_OPEN had no .op_release in nfsd4_ops[], and the release pair lived inside nfsd4_open() at its out_err:
    label. On the short-circuit path nfsd4_open() is never invoked, so both posix_acl refs leak on every
    malformed OPEN compound that carries valid POSIX ACL createhow4 attributes. Add nfsd4_open_release() and
    wire it as .op_release for OP_OPEN. posix_acl_release() is NULL-safe, so the single release site covers
    both the normal path and the nfsd4_open_omfg short-circuit. Remove the matching posix_acl_release() pair
    from nfsd4_open()'s out_err: label to avoid double-releasing. The compound loop has two encoding branches:
    nfsd4_encode_operation() for normal ops, and nfsd4_encode_replay() for v4.0 replayed ops. op_release was
    only called from nfsd4_encode_operation(), so resources attached to op->u leak on the replay path. Move
    the op_release() call out of nfsd4_encode_operation() and the replay branch, placing it after the if-else
    in nfsd4_proc_compound(). This gives a single call site in a fairly obviously-correct place, covering both
    the normal encoding and replay paths. (CVE-2026-89664)

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-89664");
  script_set_attribute(attribute:"solution", value:
"There is no known solution at this time.");
  script_set_attribute(attribute:"agent", value:"unix");
  script_set_attribute(attribute:"risk_factor", value:"Medium");

  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