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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
af22f94ae02ab9dd4fd7fe628c8434a59cc293be to < 4817c8974315b666e895b7d1bb83cd3664c323b1affectedaf22f94ae02ab9dd4fd7fe628c8434a59cc293be to < cb148a2762d644bff1894728e8835a9a4b84f9eaaffectedaf22f94ae02ab9dd4fd7fe628c8434a59cc293be to < 30fdf4df6c3c00efec947e4ddf97f0fdd4473628affectedaf22f94ae02ab9dd4fd7fe628c8434a59cc293be to < 22c1fd1355ad4ca27aa7f0fa02719122dd92d9deaffectedaf22f94ae02ab9dd4fd7fe628c8434a59cc293be to < 6bd7d0a06b53c4e797e1a9cea0d2d41aa1b26230affectedaf22f94ae02ab9dd4fd7fe628c8434a59cc293be to < a937e92c1d00534b5c2e3e9f4381b7e988180797affectedaf22f94ae02ab9dd4fd7fe628c8434a59cc293be to < e36501b7d4abdcd6d69a7cb901b2f286b7a3d041affectedaf22f94ae02ab9dd4fd7fe628c8434a59cc293be to < 5140f099ecd8a2f2808b7f7b720ee1bad8468974affected
Linux Linux
Default version status: affected
2.6.24affected0 to < 2.6.24unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.96 to ≤ 6.12.*unaffected6.18.39 to ≤ 6.18.*unaffected7.1.4 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- 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 ↗