Cloudanix VulnDB

CVE-2026-89691

High · 7.1

CVSS

7.1

EPSS

0.1%

Published

Sep 11, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A bug in the Linux kernel's NFS server code can let a local user read pieces of hidden kernel memory that should never be visible.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Data Exposure
Component
OS kernel
Class
Information Disclosure
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Failure to reset opcnt after freeing the dynamic ops buffer in nfsd4_release_compoundargs allows the RPC status dump handler to read beyond the 8-element inline iops array into adjacent slab memory when rq_status_counter is odd, resulting in kernel memory disclosure to userspace via netlink.

Why it matters to the business

Local users can obtain sensitive kernel memory contents, increasing the risk of credential theft, privilege escalation, or further kernel attacks on NFS servers; the low EPSS and lack of KEV listing indicate limited in-the-wild exploitation so far, but the 43-day-old disclosure still requires prompt kernel updates on affected systems.

How an attack unfolds

An attacker with local access triggers an NFSv4 compound RPC that causes nfsd_dispatch to take an error path leaving rq_status_counter odd; after the compound args are released with a stale opcnt value, the status dump handler reads min(opcnt,16) entries from the now-freed buffer, leaking up to 8 additional slab objects through the netlink interface.

How to fix it

Upgrade to a Linux kernel containing the fix that unconditionally zeros opcnt in nfsd4_release_compoundargs; apply the stable backports or distribution updates released after 2026-09-11.

How to confirm the fix worked

Confirm the source change that sets args->opcnt = 0 inside nfsd4_release_compoundargs before the buffer free; run kernel selftests for NFSv4 compound argument handling and verify no out-of-bounds reads occur under error-path conditions.

Typical attack path

  1. Obtain local shell on an NFS server running the vulnerable kernel
  2. Issue a crafted NFSv4.1+ compound request that forces an error path in nfsd_dispatch
  3. Trigger the status dump handler while opcnt remains non-zero after buffer release
  4. Read disclosed slab memory from the netlink response to gather kernel pointers or data

How to detect it

Inspect kernel audit logs and netlink traffic for unexpected reads from the nfsd status interface after compound RPC errors; look for processes invoking nfsd-related netlink calls with elevated opcnt values.

What your security team should do

  • Prioritize kernel updates on all systems exposing NFSv4 services
  • Monitor vendor advisories for the exact backported commit
  • Restrict local access to NFS servers until patched
  • Review netlink and RPC audit logs for unusual status-dump activity

The record

In the Linux kernel, the following vulnerability has been resolved: nfsd: clear opcnt on compound arg release to prevent OOB read nfsd4_release_compoundargs() resets args->ops to the inline iops[8] array when the dynamically-allocated ops buffer is freed, but leaves args->opcnt at its original value (which can be up to 200 for NFSv4.1+ compounds). If rq_status_counter is stuck at an odd value (which can happen when nfsd_dispatch() hits an error path after setting it odd), the RPC status dumpit handler reads min(opcnt, 16) entries from args->ops[]. Since iops only has 8 elements and is the last field in struct nfsd4_compoundargs, reading indices 8-15 accesses adjacent slab memory and leaks it to userspace via netlink. Zero opcnt unconditionally in nfsd4_release_compoundargs() so stale compound metadata is never exposed through the status interface. [ cel: Remove the kvfree_rcu_mightsleep() sleep from the exposure window ]

Affected packages

Ecosystem Package Introduced Fixed