CVE-2026-89545
massUse-After-Free in Linux Kernel sunrpc/nfsd RPC Status Handling
The Linux kernel's sunrpc subsystem frees the per-request buffers rq_argp and rq_resp synchronously in svc_rqst_free(), while deferring the containing svc_rqst struct to kfree_rcu(), leaving a window in which RCU readers can still traverse the thread list and dereference an already-freed pointer. The flaw is triggered when an nfsd thread exits via svc_exit_thread() and a concurrent reader such as nfsd_nl_rpc_status_get_dumpit() (the NFSD netlink RPC-status dump) accesses rqstp->rq_argp, producing a use-after-free. Exploitation is a local, low-privilege attack (CVSS 3.1: 7.8) that can impact confidentiality, integrity, and availability at high levels, consistent with kernel memory corruption usable for privilege escalation or a system crash. Any host running a kernel with the vulnerable sunrpc/NFSD code path — principally Linux systems running NFS service — is affected; the source data does not enumerate specific affected or fixed kernel versions. No public proof of concept is known and the issue does not appear in the CISA KEV catalog.
What to do: Apply your distribution's kernel update containing the sunrpc fix that moves the kfree of rq_argp and rq_resp into a call_rcu() callback; fixed version numbers vary by vendor, so track distro advisories referencing CVE-2026-89545. Until patched, restrict local untrusted accounts and access to the NFSD netlink RPC-status interface, and watch kernel logs for OOPS/BUG reports in sunrpc/nfsd as a sign of attempted triggering.
| Linux kernel (sunrpc / nfsd) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: sunrpc: defer rq_argp and rq_resp free until after RCU grace period svc_rqst_free() frees rqstp->rq_argp and rqstp->rq_resp synchronously via kfree(), but defers the rqstp struct free via kfree_rcu(). After svc_exit_thread() calls list_del_rcu() and svc_rqst_free(), there is a window where RCU readers that started before list_del_rcu() can still traverse the thread list and find the rqstp. These readers (e.g. nfsd_nl_rpc_status_get_dumpit()) dereference rqstp->rq_argp, which has already been freed — a use-after-free. Fix this by moving the kfree of rq_argp and rq_resp into an explicit call_rcu() callback alongside the struct free. Resources not accessed by RCU readers (bvec, buffer pages, scratch folio, auth_data) remain synchronously freed.
- Vector
- CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
In the news0 stories
No ingested article mentions this CVE yet.