CVE-2026-64298: NFSv4: include MAY_WRITE in open permission mask for O_TRUNC
Greg Kroah-Hartman <[email protected]> Sat, 25 Jul 2026 10:48:35 +0200
| Newsgroups | org.kernel.vger.linux-cve-announce |
|---|---|
| Message-ID | <2026072506-CVE-2026-64298-f748@gregkh> |
From: Greg Kroah-Hartman <[email protected]> Description =========== In the Linux kernel, the following vulnerability has been resolved: NFSv4: include MAY_WRITE in open permission mask for O_TRUNC POSIX requires write permission to truncate a file, so an open() that specifies O_TRUNC must be authorized for write access regardless of the O_ACCMODE access mode. nfs_open_permission_mask() builds the access mask passed to nfs_may_open(), which is the local authorization gate for OPENs the client serves itself from a cached write delegation via the can_open_delegated() path in nfs4_try_open_cached(). The mask is derived from O_ACCMODE alone, so an open(O_RDONLY | O_TRUNC) against a file the caller cannot write requests only MAY_READ and passes the local check. The OPEN is then satisfied locally and the truncation is issued to the server as a SETATTR(size=0) over the delegation stateid, which the server accepts under standard write-delegation semantics. POSIX requires that this open fail with EACCES. Include MAY_WRITE in the mask whenever O_TRUNC is set so the local check matches the access the server would have enforced. The Linux kernel CVE team has assigned CVE-2026-64298 to this issue. Affected and fixed versions =========================== Issue introduced in 2.6.24 with commit af22f94ae02ab9dd4fd7fe628c8434a59cc293be and fixed in 5.10.261 with commit 4817c8974315b666e895b7d1bb83cd3664c323b1 Issue introduced in 2.6.24 with commit af22f94ae02ab9dd4fd7fe628c8434a59cc293be and fixed in 5.15.212 with commit cb148a2762d644bff1894728e8835a9a4b84f9ea Issue introduced in 2.6.24 with commit af22f94ae02ab9dd4fd7fe628c8434a59cc293be and fixed in 6.1.178 with commit 30fdf4df6c3c00efec947e4ddf97f0fdd4473628 Issue introduced in 2.6.24 with commit af22f94ae02ab9dd4fd7fe628c8434a59cc293be and fixed in 6.6.145 with commit 22c1fd1355ad4ca27aa7f0fa02719122dd92d9de Issue introduced in 2.6.24 with commit af22f94ae02ab9dd4fd7fe628c8434a59cc293be and fixed in 6.12.96 with commit 6bd7d0a06b53c4e797e1a9cea0d2d41aa1b26230 Issue introduced in 2.6.24 with commit af22f94ae02ab9dd4fd7fe628c8434a59cc293be and fixed in 6.18.39 with commit a937e92c1d00534b5c2e3e9f4381b7e988180797 Issue introduced in 2.6.24 with commit af22f94ae02ab9dd4fd7fe628c8434a59cc293be and fixed in 7.1.4 with commit e36501b7d4abdcd6d69a7cb901b2f286b7a3d041 Issue introduced in 2.6.24 with commit af22f94ae02ab9dd4fd7fe628c8434a59cc293be and fixed in 7.2-rc3 with commit 5140f099ecd8a2f2808b7f7b720ee1bad8468974 Please see https://www.kernel.org for a full list of currently supported kernel versions by the kernel community. Unaffected versions might change over time as fixes are backported to older supported kernel versions. The official CVE entry at https://cve.org/CVERecord/?id=CVE-2026-64298 will be updated if fixes are backported, please check that for the most up to date information about this issue. Affected files ============== The file(s) affected by this issue are: fs/nfs/dir.c Mitigation ========== The Linux kernel CVE team recommends that you update to the latest stable kernel version for this, and many other bugfixes. Individual changes are never tested alone, but rather are part of a larger kernel release. Cherry-picking individual commits is not recommended or supported by the Linux kernel community at all. If however, updating to the latest release is impossible, the individual changes to resolve this issue can be found at these commits: https://git.kernel.org/stable/c/4817c8974315b666e895b7d1bb83cd3664c323b1 https://git.kernel.org/stable/c/cb148a2762d644bff1894728e8835a9a4b84f9ea https://git.kernel.org/stable/c/30fdf4df6c3c00efec947e4ddf97f0fdd4473628 https://git.kernel.org/stable/c/22c1fd1355ad4ca27aa7f0fa02719122dd92d9de https://git.kernel.org/stable/c/6bd7d0a06b53c4e797e1a9cea0d2d41aa1b26230 https://git.kernel.org/stable/c/a937e92c1d00534b5c2e3e9f4381b7e988180797 https://git.kernel.org/stable/c/e36501b7d4abdcd6d69a7cb901b2f286b7a3d041 https://git.kernel.org/stable/c/5140f099ecd8a2f2808b7f7b720ee1bad8468974