ZeroHour

CVE-2026-89703

large

Use-After-Free in Linux Kernel nfsd NFSv4 Delegation Revocation Handling

CVSS 3.1
9.8 critical
EPSS
Published
()
Modified
AI analysis

A use-after-free exists in the Linux kernel's NFS server (nfsd) subsystem, in nfsd4_drop_revoked_stid(), which processes FREE_STATEID operations for admin-revoked NFSv4 delegations. The function fails to set the SC_STATUS_FREED flag before releasing the client lock, so the already-freed delegation structure is re-added to the client's cl_revoked list; when that list is later traversed in __destroy_client(), the kernel dereferences freed memory. An attacker who can act as an NFSv4 client to an affected server (i.e., reach the NFS service and issue stateid operations against an admin-revoked delegation) could trigger this, potentially crashing the kernel or corrupting kernel memory with confidentiality, integrity, and availability impact, per the critical 9.8 CVSS score. Systems affected are Linux machines exporting filesystems via kernel nfsd with NFSv4 delegations in use. No public proof of concept is known and the flaw is not listed in CISA's KEV, so exploitation is presumed absent at this time.

What to do: Apply kernel updates from your distribution as soon as a build containing this nfsd fix is released, and reboot NFS servers to load the patched kernel. Until then, firewall TCP/2049 so only trusted client networks can reach nfsd, and verify that no NFS exports are exposed to the internet — internet-facing NFS should be eliminated regardless of this bug. Check for unexplained kernel oopses or crashes on NFS servers handling delegation revocations, as these would be indicators worth investigating.

Affected
Linux (kernel.org) Linux kernel (nfsd/NFS server subsystem)
Estimated exposure
large≈100,000–300,000 internet-exposed NFS endpoints (TCP/2049), with the truly vulnerable subset (Linux kernel nfsd with NFSv4 delegations) likely smaller — Public internet scan services such as Shodan historically show low hundreds of thousands of devices with the NFS port 2049 open, though many are NAS appliances or NFSv3-only servers rather than Linux kernel nfsd.

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: set SC_STATUS_FREED in nfsd4_drop_revoked_stid for delegations nfsd4_drop_revoked_stid() handles FREE_STATEID for admin-revoked delegations but does not set SC_STATUS_FREED before releasing cl_lock. revoke_delegation() uses this flag to detect whether FREE_STATEID has already processed the delegation -- without it, the freed delegation is added to cl_revoked via list_add(), producing a use-after-free when cl_revoked is later traversed in __destroy_client(). The SC_STATUS_REVOKED path in nfsd4_free_stateid() (line 7983) already sets SC_STATUS_FREED correctly. Apply the same pattern to the SC_STATUS_ADMIN_REVOKED path in nfsd4_drop_revoked_stid().

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

In the news

No ingested article mentions this CVE yet.