HIGH Introduced in 5.6
nfsd CopyNotify UAF
CVE-2026-89694
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: nfsd: check client ownership when cancelling a copy-notify stateid On the OFFLOAD_CANCEL path (clp != NULL), manage_cpntf_state() freed the target cpntf state without checking ownership. The lookup key st->si_opaque.so_id is allocated cyclically (guessable) and the embedded clientid is the fixed per-net nn->s2s_cp_cl_id, so any authenticated NFSv4.2 client could cancel and free another client's copy-notify stateid. Compare the creating clientid recorded in state->cp_p_clid against the requesting client's cl_clientid and return nfserr_bad_stateid on a mismatch instead of freeing the entry.
02KernelScan AI Analysis
Risk summary
Any authenticated NFSv4.2 client can cancel and free another client's copy-notify stateid when the server-to-server copy offload feature is enabled, creating a use-after-free in the kernel. This can lead to kernel memory corruption, potential code execution, or denial of service on the NFS server. The vulnerability is reachable over the network from any client with basic NFS access.
Vulnerability analysis
The NFS server's server-to-server copy offload feature lets an authenticated NFSv4.2 client cancel a copy-notify stateid via the OFFLOAD_CANCEL operation, but the cancellation path did not verify that the requesting client actually owns the target stateid. The lookup key is cyclically allocated and guessable, and the embedded client identifier is a fixed per-network value, so any authenticated client could cancel and free another client's stateid. Freeing a stateid still in use by its legitimate owner creates a use-after-free condition that can corrupt kernel heap memory. The fix adds an ownership check comparing the creating client's identifier against the requesting client's identifier, returning an error on mismatch instead of freeing the entry. The vulnerable path is reachable from any authenticated NFSv4.2 client over the network when the inter-server copy offload feature is enabled.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 5.6 | 5.10.270 | 88daaed26e17 |
| 5.15 | 5.6 | 5.15.221 | 81b2cfe76794 |
| 6.1 | 5.6 | 6.1.188 | 6bba72b8ee68 |
| 6.12 | 5.6 | 6.12.109 | b1eca0730359 |
| 6.18 | 5.6 | 6.18.50 | b42dc26a14b4 |
| 6.6 | 5.6 | 6.6.157 | 75268f6cfe26 |
| 7.2 | 5.6 | 7.2.4 | d801906165cb |
| mainline | 5.6 | 7.3 | 6bdbfab96e0c |
| cip/5.10 | 5.6 | 5.10.271-cip78 | 88daaed26e17 |
| cip/6.1 | 5.6 | 6.1.189-cip61 | 6bba72b8ee68 |
| cip/6.1-rt | 5.6 | 6.1.189-cip61-rt32 | 6bba72b8ee68 |
| cip/6.12 | 5.6 | 6.12.111-cip32 | b1eca0730359 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.111-cip32 |
| cip/6.1 | Fixed in 6.1.189-cip61 |
| cip/6.1-rt | Fixed in 6.1.189-cip61-rt32 |
| cip/5.10 | Fixed in 5.10.271-cip78 |
| cip/5.10-rt | Affected — no CIP fix yet (latest 5.10.268-cip77-rt34) |