{"id":"CVE-2026-72379","state":"PUBLISHED","title":"fs: refuse O_TMPFILE creation with an unmapped fsuid or fsgid","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nfs: refuse O_TMPFILE creation with an unmapped fsuid or fsgid\n\nvfs_tmpfile() never checked that the caller's fsuid and fsgid map into\nthe filesystem.  On an idmapped mount whose idmapping does not cover the\ncaller's fs{u,g}id, the ->tmpfile() instance initializes the new inode\nthrough inode_init_owner(), where mapped_fsuid()/mapped_fsgid() return\nINVALID_UID/INVALID_GID, and the tmpfile ends up owned by (uid_t)-1.\n\nEvery other creation path already refuses this: may_o_create() (O_CREAT)\nand may_create_dentry() (mkdir, mknod, symlink, link) bail out with\n-EOVERFLOW via fsuidgid_has_mapping() precisely so that an object cannot\nbe created with an owner the filesystem cannot represent.  An O_TMPFILE\nis no exception: it is created I_LINKABLE and linkat(2) can splice it\ninto the namespace afterwards, so the same guarantee must hold.\n\nAdd the missing fsuidgid_has_mapping() check to vfs_tmpfile().  On a\nnon-idmapped mount the caller's fs{u,g}id always map in the superblock's\nuser namespace, so this is a no-op there and only takes effect on an\nidmapped mount that does not map the caller.  It applies to every\nfilesystem that sets FS_ALLOW_IDMAP and implements ->tmpfile() (tmpfs,\next4, btrfs, xfs, f2fs, ...), and to overlayfs, whose upper-layer\ntmpfile creation funnels through vfs_tmpfile() via backing_tmpfile_open().","publishedAt":"2026-08-15T05:56:12.251Z","updatedAt":"2026-10-30T12:29:11.407Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"74365c6e367725728d5ce36d38ca116c9f77a254","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"bac8fb0d60254846f3b56957435dcd870ae12948","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"503d0568a525b168d9aa5ca046ec72fc5477df84","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"a2038514e69371eb493083a6a897ed20fcbb8acb","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"47e434da476b5a8bcd1e6e52ab03c5ee7764ee78","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"539dce1144651f7976fa418e618b0b574bf15eeb","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/namei.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.13","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.13","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/namei.c"]}],"references":["https://git.kernel.org/stable/c/74365c6e367725728d5ce36d38ca116c9f77a254","https://git.kernel.org/stable/c/bac8fb0d60254846f3b56957435dcd870ae12948","https://git.kernel.org/stable/c/503d0568a525b168d9aa5ca046ec72fc5477df84","https://git.kernel.org/stable/c/a2038514e69371eb493083a6a897ed20fcbb8acb","https://git.kernel.org/stable/c/47e434da476b5a8bcd1e6e52ab03c5ee7764ee78","https://git.kernel.org/stable/c/539dce1144651f7976fa418e618b0b574bf15eeb"],"weaknesses":[],"ingestedAt":"2026-10-30T12:48:04.825Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/72xxx/CVE-2026-72379.json","commit":"1f312381e38164a43607eebab851b151dd16861e","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-72379","state":"PUBLISHED","datePublished":"2026-08-15T05:56:12.251Z","dateUpdated":"2026-10-30T12:29:11.407Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-08-09T03:40:39.922Z"},"containers":{"cna":{"title":"fs: refuse O_TMPFILE creation with an unmapped fsuid or fsgid","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nfs: refuse O_TMPFILE creation with an unmapped fsuid or fsgid\n\nvfs_tmpfile() never checked that the caller's fsuid and fsgid map into\nthe filesystem.  On an idmapped mount whose idmapping does not cover the\ncaller's fs{u,g}id, the ->tmpfile() instance initializes the new inode\nthrough inode_init_owner(), where mapped_fsuid()/mapped_fsgid() return\nINVALID_UID/INVALID_GID, and the tmpfile ends up owned by (uid_t)-1.\n\nEvery other creation path already refuses this: may_o_create() (O_CREAT)\nand may_create_dentry() (mkdir, mknod, symlink, link) bail out with\n-EOVERFLOW via fsuidgid_has_mapping() precisely so that an object cannot\nbe created with an owner the filesystem cannot represent.  An O_TMPFILE\nis no exception: it is created I_LINKABLE and linkat(2) can splice it\ninto the namespace afterwards, so the same guarantee must hold.\n\nAdd the missing fsuidgid_has_mapping() check to vfs_tmpfile().  On a\nnon-idmapped mount the caller's fs{u,g}id always map in the superblock's\nuser namespace, so this is a no-op there and only takes effect on an\nidmapped mount that does not map the caller.  It applies to every\nfilesystem that sets FS_ALLOW_IDMAP and implements ->tmpfile() (tmpfs,\next4, btrfs, xfs, f2fs, ...), and to overlayfs, whose upper-layer\ntmpfile creation funnels through vfs_tmpfile() via backing_tmpfile_open()."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"74365c6e367725728d5ce36d38ca116c9f77a254","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"bac8fb0d60254846f3b56957435dcd870ae12948","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"503d0568a525b168d9aa5ca046ec72fc5477df84","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"a2038514e69371eb493083a6a897ed20fcbb8acb","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"47e434da476b5a8bcd1e6e52ab03c5ee7764ee78","versionType":"git"},{"version":"8e5389132ab429604c1a2459b52f0c849a71cc61","status":"affected","lessThan":"539dce1144651f7976fa418e618b0b574bf15eeb","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/namei.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"5.13","status":"affected"},{"version":"0","status":"unaffected","lessThan":"5.13","versionType":"semver"},{"version":"6.1.191","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.145","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.97","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.40","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.1.5","status":"unaffected","lessThanOrEqual":"7.1.*","versionType":"semver"},{"version":"7.2","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/namei.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/74365c6e367725728d5ce36d38ca116c9f77a254"},{"url":"https://git.kernel.org/stable/c/bac8fb0d60254846f3b56957435dcd870ae12948"},{"url":"https://git.kernel.org/stable/c/503d0568a525b168d9aa5ca046ec72fc5477df84"},{"url":"https://git.kernel.org/stable/c/a2038514e69371eb493083a6a897ed20fcbb8acb"},{"url":"https://git.kernel.org/stable/c/47e434da476b5a8bcd1e6e52ab03c5ee7764ee78"},{"url":"https://git.kernel.org/stable/c/539dce1144651f7976fa418e618b0b574bf15eeb"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-30T12:29:11.407Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.1.191"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.6.145"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.12.97"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"6.18.40"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"7.1.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.13","versionEndExcluding":"7.2"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}