Lucene search
+L

Linux Distros Unpatched Vulnerability : CVE-2026-72473

🗓️ 15 Aug 2026 00:00:00Reported by TenableType 
nessus
 nessus
🔗 www.tenable.com👁 3 Views

xprtrdma use-after-free frees RPC request buffer while HCA DMA-reads from it.

Related
Refs
Code
ReporterTitlePublishedViews
Family
circl
Circl
CVE-2026-72473
15 Aug 202620:11
circl
cve
CVE
CVE-2026-72473
15 Aug 202605:57
cve
cvelist
Cvelist
CVE-2026-72473 xprtrdma: Decouple req recycling from RPC completion
15 Aug 202605:57
cvelist
debiancve
Debian CVE
CVE-2026-72473
15 Aug 202605:57
debiancve
euvd
EUVD
EUVD-2026-59372
15 Aug 202605:57
euvd
nvd
NVD
CVE-2026-72473
15 Aug 202606:22
nvd
osv
OSV
DEBIAN-CVE-2026-72473
15 Aug 202606:22
osv
osv
OSV
UBUNTU-CVE-2026-72473
17 Aug 202600:00
osv
ptsecurity
Positive Technologies
PT-2026-72661
15 Aug 202600:00
ptsecurity
#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##

include('compat.inc');

if (description)
{
  script_id(335543);
  script_version("1.1");
  script_set_attribute(attribute:"plugin_modification_date", value:"2026/08/15");

  script_cve_id("CVE-2026-72473");

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

  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.

  - xprtrdma: Decouple req recycling from RPC completion rl_kref formerly served two distinct lifetimes
    through a single refcount: it gated when a Reply could wake its RPC task, and it gated when an rpcrdma_req
    could return to its free pool. The marshal path took the Send-side reference only when SGEs needed DMA-
    unmap (sc_unmap_count > 0), which made a Send carrying only pre-registered buffers an exception: the Reply
    handler dropped rl_kref from 1 to 0 and freed the req while the HCA might still be DMA-reading from its
    send buffer. Give rl_kref a narrower job. The RPC layer takes one reference when slot allocation hands a
    req out. rpcrdma_prepare_send_sges() takes a Send-side reference unconditionally after WR preparation
    succeeds. xprt_rdma_free_slot() and xprt_rdma_bc_free_rqst() drop the RPC-layer reference;
    rpcrdma_sendctx_unmap() drops the Send-side reference. The req returns to its free pool only after both
    owners have signed off. The existing kref_init(&req->rl_kref) call in rpcrdma_prepare_send_sges() is
    removed. Initialization moves to the slot-allocation paths (xprt_rdma_alloc_slot and rpcrdma_bc_rqst_get),
    and the release callback re-arms rl_kref before the req returns to a free pool. A re-init in the marshal
    path would discard the RPC-layer reference that already exists on entry. Three invariants follow: - Any
    rpcrdma_req held by an rpc_rqst has rl_kref >= 1. xprt_rdma_alloc_slot(), rpcrdma_bc_rqst_get(), and the
    backlog-wake branch in xprt_rdma_alloc_slot() each kref_init rl_kref before publishing the req. Without
    this invariant, an RPC task that aborts between slot allocation and marshal (gss_refresh failure or signal
    during call_connect, for example) would drive xprt_release() -> xprt_rdma_free_slot() -> kref_put against
    a refcount of zero, saturating refcount_t and stranding the slot. - The Send-side reference is taken only
    after WR prep succeeds. A mapping failure in rpcrdma_prepare_send_sges() runs rpcrdma_sendctx_cancel(),
    which DMA-unmaps the sendctx and clears sc_req without touching rl_kref. The sendctx ring walks in
    rpcrdma_sendctx_put_locked() and rpcrdma_sendctxs_destroy() skip entries with sc_req == NULL, so a burst
    of -EIO marshal failures cannot hold reqs off rb_send_bufs. - The release callback re-arms rl_kref so the
    next consumer enters with the invariant satisfied. Replies now complete the RPC directly.
    rpcrdma_reply_handler() calls rpcrdma_complete_rqst() in place of kref_put on the non-LocalInv branch. The
    LocalInv branch already completes the RPC from frwr_unmap_async() and is unaffected. Because Send-side
    references can now outlive RPC completion, connection teardown drains sendctx entries whose unsignaled
    Sends never had a later signaled completion to walk the ring. rpcrdma_sendctxs_destroy() walks the active
    range and runs rpcrdma_sendctx_unmap() on each entry with a non-NULL sc_req before the request buffers are
    reset, and is moved ahead of rpcrdma_reqs_reset() in rpcrdma_xprt_disconnect() so the reqs are still in
    their pre-reset state when the Send-side refs are released. The drain creates a teardown-ordering hazard
    on the backchannel path. With the new lifetime, releasing a bc_prealloc req from rpcrdma_req_release() re-
    adds it to bc_pa_list. The disconnect in xprt_rdma_destroy() runs after xprt_destroy_backchannel() has
    already emptied bc_pa_list, so the drained reqs would otherwise leak. xprt_rdma_destroy() now runs
    xprt_rdma_bc_destroy(xprt, 0) a second time after the disconnect to reclaim them. (CVE-2026-72473)

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

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

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

  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-11": {
    "package_manager": "dpkg-l",
    "constraints": [
      {
        "release": "11",
        "pkgs": [
          {"reference": "bpftool"},
          {"reference": "btrfs-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "cdrom-core-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "hyperv-daemons"},
          {"reference": "kernel-image-5.10.0-32-alpha-generic-di"},
          {"reference": "libcpupower-dev"},
          {"reference": "libcpupower1"},
          {"reference": "linux-bootwrapper-5.10.0"},
          {"reference": "linux-config-5.10"},
          {"reference": "linux-cpupower"},
          {"reference": "linux-doc"},
          {"reference": "linux-doc-5.10"},
          {"reference": "linux-headers-5.10.0"},
          {"reference": "linux-kbuild-5.10"},
          {"reference": "linux-libc-dev"},
          {"reference": "linux-perf"},
          {"reference": "linux-perf-5.10"},
          {"reference": "linux-source"},
          {"reference": "linux-source-5.10"},
          {"reference": "linux-support-5.10.0"},
          {"reference": "loop-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "nic-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "nic-shared-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "nic-wireless-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "pata-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "ppp-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "scsi-core-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "scsi-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "scsi-nic-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "serial-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "usb-serial-modules-5.10.0-32-alpha-generic-di"},
          {"reference": "usbip"}
        ]
      }
    ]
  }
};

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

15 Aug 2026 00:00Current
5.6Medium risk
Vulners AI Score5.6
CVSS 3.19.8
EPSS0.00206
3