CVE-2026-89560

Summary

In the Linux kernel, the following vulnerability has been resolved:

landlock: Require LANDLOCK_ACCESS_FS_MAKE_REG for whiteout creation

Whiteout objects are used in the upper layer of an OverlayFS to indicate that the file with this name does not exist in the unified view, even if it is present in one of the lower layer file systems.

For the userspace implementations of OverlayFS (fuse-overlayfs), whiteout objects can be created from userspace as well:

  • mknod(2) with S_IFCHR and makedev(0, 0)
  • renameat2(2) with RENAME_WHITEOUT, creating the whiteout in the old place of the moved file.

This commit guards whiteout creation in both of these cases with LANDLOCK_ACCESS_FS_MAKE_REG. Whiteout objects are not considered character devices and are not bound to a driver.

LANDLOCK_ACCESS_FS_MAKE_REG describes the same permission class as a whiteout object: creating one is the only S_IFCHR creation that the VFS exempts from CAP_MKNOD, so it is as unprivileged as creating a regular file, while LANDLOCK_ACCESS_FS_MAKE_CHAR and LANDLOCK_ACCESS_FS_MAKE_BLOCK keep meaning the creation of devices that expose a kernel interface [1].

For the mknod(2) case, introduce a Landlock erratum. The creation of whiteout objects through mknod(2) was previously guarded using LANDLOCK_ACCESS_FS_MAKE_CHAR, and it is now guarded using LANDLOCK_ACCESS_FS_MAKE_REG.

For the renameat2(2) case, fix a bug: Before this commit, renameat2(2) with RENAME_WHITEOUT would create a directory entry even when all LANDLOCK_ACCESS_FS_MAKE_* rights were denied.

This does not affect normal renames within layered OverlayFS mounts: When doing a regular rename() on a mounted fuse-overlayfs, it is the fuse-overlayfs daemon that exercises renameat2() with RENAME_WHITEOUT, and only the Landlock domain of that daemon is checked there.

Depends-on: 49c9e09d9610 ("landlock: Fix handling of disconnected directories") Depends-on: fe72ce6710cb ("landlock: Add errata documentation section") [mic: Record why LANDLOCK_ACCESS_FS_MAKE_REG is the matching right, and add link(2) to the user doc]

Affected Software

VendorProductVersion RangeStatus
LinuxLinuxcb2c7d1a1776057c9a1f48ed1250d85e94d4850d < 627ce4902df1d737e99306daae5a87c68b876d16affected
LinuxLinuxcb2c7d1a1776057c9a1f48ed1250d85e94d4850d < 0c3204aacbe8c07f9e87e3028f28ec6c166a1075affected
LinuxLinuxcb2c7d1a1776057c9a1f48ed1250d85e94d4850d < 672fa082d48b21e1fb62cdb184fee41513e53421affected
LinuxLinux5.13affected
LinuxLinux0 < 5.13unaffected
LinuxLinux6.18.50 <= 6.18.*unaffected
LinuxLinux7.2.4 <= 7.2.*unaffected
LinuxLinux7.3-rc1 <= *unaffected

Weaknesses

References