ZeroHour

CVE-2026-89691

mass

Linux kernel nfsd OOB read leaks slab memory via RPC status netlink

CVSS 3.1
7.1 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's NFS server (nfsd) fails to reset the compound operation count when releasing NFSv4.1+ compound arguments: nfsd4_release_compoundargs() points args->ops back at the 8-element inline iops array after freeing the dynamically allocated operations buffer, but leaves args->opcnt at its original value (up to 200). If nfsd_dispatch() has hit an error path that leaves the per-request status counter stuck at an odd value, the RPC status dump handler reads up to 16 entries from that array, so indices 8-15 read past the end of struct nfsd4_compoundargs into adjacent slab memory, which is then leaked to userspace over netlink. A local attacker with low privileges on a host running nfsd can leverage this to disclose kernel memory (CVSS 3.1: 7.1, high, with high confidentiality and availability impact). Affected systems are Linux hosts running the kernel NFS server that serve NFSv4.1+ compounds with more than 8 operations, such as enterprise file servers, HPC clusters, and shared storage nodes. No public proof of concept or in-the-wild exploitation is known; the fix zeroes opcnt unconditionally during compound-arg release and also removes a might-sleep call from the exposure window.

What to do: Apply a kernel update containing the fix (nfsd4_release_compoundargs() now zeroes opcnt unconditionally) as soon as your distribution ships it. In the interim, minimize unprivileged local accounts on NFS servers and restrict access to netlink/procfs RPC status interfaces where feasible. Confirm whether nfsd is running and serving NFSv4.1+ (e.g., 'systemctl status nfs-server' or checking /proc/fs/nfsd/versions), prioritizing shared HPC and login nodes with many local users.

Affected
Linux kernel (nfsd NFS server)Kernels whose nfsd serves NFSv4.1+ compounds; specific affected version ranges are not specified in the source data - check distributor advisories for patched k
Estimated exposure
massHundreds of thousands to low millions of Linux hosts running nfsd (internet-wide scans typically show on the order of 200,000 NFS services on TCP/2049, and… — Estimated from public internet-scan counts of exposed NFS services combined with typical enterprise and HPC deployment patterns; note that exploitation requires local low-privileged access on the server, so the practically at-risk…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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 ]

Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H

In the news

No ingested article mentions this CVE yet.