CVE-2026-89713NFSD: check truncate permission under inode lock
Updated under an hour ago ()
Does this affect you?
It affects Linux. Add what you run to find out whether that includes you.
No exploitation reported and no EPSS estimate yet.
Do this next
Free account, 1 product
In the Linux kernel, the following vulnerability has been resolved: NFSD: check truncate permission under inode lock nfsd_setattr() checks whether a size update needs NFSD_MAY_TRUNC before it takes inode_lock(). The comparison uses the file size sampled by that unlocked read, but the actual ATTR_SIZE update is applied later under inode_lock() by notify_change(). This leaves a TOCTOU window for append-only files. If a client sends a SETATTR that does not shrink the file at the time of the unlocked sample, a concurrent append can extend the file before nfsd_setattr() takes inode_lock(). notify_change() then applies a real truncation without the NFSD_MAY_TRUNC check that rejects IS_APPEND(inode). The VFS truncate syscall paths perform their own append-only checks before calling notify_change(), so NFSD must make this decision against the locked size it is about to change. Split the write-count acquisition from the truncation permission check. Keep get_write_access() before the locked setattr work, then recheck whether the requested size is below i_size_read(inode) after inode_lock() has been acquired and before notify_change(ATTR_SIZE). This also avoids the plain unlocked inode->i_size load.
- CVSS
- 9.1 CRITICAL (v3.1, CNA)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
- Weakness (CWE)
- Not given
- Known exploited
- Not in CISA's KEV catalog
- EPSS (exploitation in the next 30 days)
- Not loaded for this CVE
- Assigned by
- Linux
- NVD analysis
- Received
- Record last updated
- Oct 19, 2026
- First seen by InfoSec Signals
- Oct 9, 2026
Affected products
Linux Linux linux:linux (from the name) | 783112f7401ff449d979530209b3f6c2594fdb4e builds before 3afa17d93ba8c925f49370c816c6dae5112d8c24; from 783112f7401ff449d979530209b3f6c2594fdb4e before d8352da196349182e1afd5a93308256cddc0a97d; from 783112f7401ff449d979530209b3f6c2594fdb4e before 44086254479035de42ca3d286ecf25521d4e6325; from 783112f7401ff449d979530209b3f6c2594fdb4e before b778e0e0a16759f22a70579c3cf8d254a40d4a7f; 604a3c407026d6162d15300478e63f901e435efc; cc4d5dc73841b98d33cdfb9822d70b0aac4beca5; 3ee4f442e5b37a537297b812557b1163f96b5399; a3c6cbc4eac4473ed5461d5faae2794d3e5c0e44; and 6 more ranges | CNA record |
References
- https://git.kernel.org/stable/c/3afa17d93ba8c925f49370c816c6dae5112d8c24
- https://git.kernel.org/stable/c/d8352da196349182e1afd5a93308256cddc0a97d
- https://git.kernel.org/stable/c/44086254479035de42ca3d286ecf25521d4e6325
- https://git.kernel.org/stable/c/b778e0e0a16759f22a70579c3cf8d254a40d4a7f
The CVE record on cve.org NVD's entry
The CVE record is authoritative. Products marked “from the name” were identified from the CNA's free-text names, not a CPE, and are matched less certainly. This product uses the NVD API but is not endorsed or certified by the NVD.