NFSD: Guard admin state-revocation walks with NFSD_NET_UP
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.12.111, 6.18.51, 7.2.5
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: NFSD: Guard admin state-revocation walks with NFSD_NET_UP Writing to /proc/fs/nfsd/unlock_filesystem, or sending the NFSD_CMD_UNLOCK_FILESYSTEM or NFSD_CMD_UNLOCK_EXPORT netlink command, walks the NFSv4 client hash tables to revoke open state and cancel async COPY operations. All three handlers gate that walk on nn->nfsd_serv, but a listener added via portlist or netlink listener_set sets nn->nfsd_serv before any nfsd thread starts. nfsd_startup_net() has not yet allocated nn->conf_id_hashtbl, so the walkers dereference a NULL table. A local administrator with CAP_SYS_ADMIN can crash the kernel this way without ever starting the server. nn->nfsd_serv is set when the service is created, which precedes table allocation. NFSD_NET_UP instead brackets the window where the tables are live: set at the end of nfsd_startup_net() and cleared in nfsd_shutdown_net() after they are freed, both under nfsd_mutex. Gating the three unlock paths on NFSD_NET_UP fixes the startup-time NULL dereference while preserving the earlier post-shutdown use-after-free fix.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From 1ac3629bf012592cb0320e52a1cceb319a05ad17 · fixed in 73bf459d696ecf207a9037bf9bb70c51a459469e; From 1ac3629bf012592cb0320e52a1cceb319a05ad17 · fixed in 104a51265042b4424085741c963cb858ac29ec0b; From 1ac3629bf012592cb0320e52a1cceb319a05ad17 · fixed in 0146467a2fce845cb6629979c3e9c58dd3d3a6a3; From 1ac3629bf012592cb0320e52a1cceb319a05ad17 · fixed in 2f3e6638aebc0ab8afb8b4e9816ea9a1cad85378
- Linux Linux
6.9
- KernelLinux
From 6.9.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.51; From 6.19.0 · fixed in 7.2.5