{"id":"CVE-2026-98215","state":"PUBLISHED","title":"selinux: preserve user SID across nested backing files","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nselinux: preserve user SID across nested backing files\n\nSELinux saves the user file SID in a backing-file security blob so it\nremains available after mmap() replaces vma->vm_file with a backing file.\n\nFor nested backing files (overlayfs over overlayfs, or FUSE passthrough\nbacked by overlayfs), user_file may itself be a backing file.  Its\nfsec->sid is the SID of the mounter that opened it, rather than the user\nthat opened the top-level file.  mprotect() then checks fd { use } against\nthe mounter SID.  This can incorrectly deny access without a domain\ntransition, or check the wrong target SID after one.\n\nCopy the saved user SID when user_file is a backing file.  Keep using the\nregular file SID for the first backing layer.\n\nWith two nested overlayfs mounts and SELinux enforcing,\nmprotect(PROT_READ) returns EACCES with an fd { use } denial against the\nmounter SID.  With this change, mprotect() succeeds.\n\nTested on arm64 QEMU with a small BusyBox initramfs and a purpose-built\nSELinux policy.  The original test was also repeated with Fedora Cloud\nBase 44 userspace and gave the same result.","publishedAt":"2026-10-06T08:44:51.412Z","updatedAt":"2026-10-19T09:15:46.038Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"bc6c380c1159de52a252ed11f19a42c47f60a735","status":"affected","lessThan":"caa1b913d90d5dc07073733326d2af0f0288f089","versionType":"git"},{"version":"8bacd09f12c27710228562e4d13163e58c5f4a45","status":"affected","lessThan":"6aaeec59aadcd1eafc18b049f1b759fb6b9d9569","versionType":"git"},{"version":"d844702198395d3f80222777030f69db6be6b709","status":"affected","lessThan":"9d99b770e7b67b00bdef9005b928aad13e1d679b","versionType":"git"},{"version":"82544d36b1729153c8aeb179e84750f0c085d3b1","status":"affected","lessThan":"ff20d16b2e8230c034e21540043df47222dcc09b","versionType":"git"},{"version":"82544d36b1729153c8aeb179e84750f0c085d3b1","status":"affected","lessThan":"8c0c602202b9a4909b00bc3354e3c0355bc69e65","versionType":"git"},{"version":"cd0e707a927a70cdfd8bc5a512a9719a87f5ed51","status":"affected","versionType":"git"},{"version":"6.6.144","status":"affected","lessThan":"6.6.158","versionType":"semver"},{"version":"6.12.95","status":"affected","lessThan":"6.12.112","versionType":"semver"},{"version":"6.18.38","status":"affected","lessThan":"6.18.54","versionType":"semver"},{"version":"7.0.4","status":"affected","lessThan":"7.1","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["security/selinux/hooks.c","security/selinux/include/objsec.h"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"7.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"7.1","versionType":"semver"},{"version":"6.6.158","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.112","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.54","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.8","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["security/selinux/hooks.c","security/selinux/include/objsec.h"]}],"references":["https://git.kernel.org/stable/c/caa1b913d90d5dc07073733326d2af0f0288f089","https://git.kernel.org/stable/c/6aaeec59aadcd1eafc18b049f1b759fb6b9d9569","https://git.kernel.org/stable/c/9d99b770e7b67b00bdef9005b928aad13e1d679b","https://git.kernel.org/stable/c/ff20d16b2e8230c034e21540043df47222dcc09b","https://git.kernel.org/stable/c/8c0c602202b9a4909b00bc3354e3c0355bc69e65"],"weaknesses":[],"ingestedAt":"2026-10-29T20:13:43.249Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/98xxx/CVE-2026-98215.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-98215","state":"PUBLISHED","datePublished":"2026-10-06T08:44:51.412Z","dateUpdated":"2026-10-19T09:15:46.038Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-25T10:25:14.326Z"},"containers":{"cna":{"title":"selinux: preserve user SID across nested backing files","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nselinux: preserve user SID across nested backing files\n\nSELinux saves the user file SID in a backing-file security blob so it\nremains available after mmap() replaces vma->vm_file with a backing file.\n\nFor nested backing files (overlayfs over overlayfs, or FUSE passthrough\nbacked by overlayfs), user_file may itself be a backing file.  Its\nfsec->sid is the SID of the mounter that opened it, rather than the user\nthat opened the top-level file.  mprotect() then checks fd { use } against\nthe mounter SID.  This can incorrectly deny access without a domain\ntransition, or check the wrong target SID after one.\n\nCopy the saved user SID when user_file is a backing file.  Keep using the\nregular file SID for the first backing layer.\n\nWith two nested overlayfs mounts and SELinux enforcing,\nmprotect(PROT_READ) returns EACCES with an fd { use } denial against the\nmounter SID.  With this change, mprotect() succeeds.\n\nTested on arm64 QEMU with a small BusyBox initramfs and a purpose-built\nSELinux policy.  The original test was also repeated with Fedora Cloud\nBase 44 userspace and gave the same result."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"bc6c380c1159de52a252ed11f19a42c47f60a735","status":"affected","lessThan":"caa1b913d90d5dc07073733326d2af0f0288f089","versionType":"git"},{"version":"8bacd09f12c27710228562e4d13163e58c5f4a45","status":"affected","lessThan":"6aaeec59aadcd1eafc18b049f1b759fb6b9d9569","versionType":"git"},{"version":"d844702198395d3f80222777030f69db6be6b709","status":"affected","lessThan":"9d99b770e7b67b00bdef9005b928aad13e1d679b","versionType":"git"},{"version":"82544d36b1729153c8aeb179e84750f0c085d3b1","status":"affected","lessThan":"ff20d16b2e8230c034e21540043df47222dcc09b","versionType":"git"},{"version":"82544d36b1729153c8aeb179e84750f0c085d3b1","status":"affected","lessThan":"8c0c602202b9a4909b00bc3354e3c0355bc69e65","versionType":"git"},{"version":"cd0e707a927a70cdfd8bc5a512a9719a87f5ed51","status":"affected","versionType":"git"},{"version":"6.6.144","status":"affected","lessThan":"6.6.158","versionType":"semver"},{"version":"6.12.95","status":"affected","lessThan":"6.12.112","versionType":"semver"},{"version":"6.18.38","status":"affected","lessThan":"6.18.54","versionType":"semver"},{"version":"7.0.4","status":"affected","lessThan":"7.1","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["security/selinux/hooks.c","security/selinux/include/objsec.h"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"7.1","status":"affected"},{"version":"0","status":"unaffected","lessThan":"7.1","versionType":"semver"},{"version":"6.6.158","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.112","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.54","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.8","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["security/selinux/hooks.c","security/selinux/include/objsec.h"]}],"references":[{"url":"https://git.kernel.org/stable/c/caa1b913d90d5dc07073733326d2af0f0288f089"},{"url":"https://git.kernel.org/stable/c/6aaeec59aadcd1eafc18b049f1b759fb6b9d9569"},{"url":"https://git.kernel.org/stable/c/9d99b770e7b67b00bdef9005b928aad13e1d679b"},{"url":"https://git.kernel.org/stable/c/ff20d16b2e8230c034e21540043df47222dcc09b"},{"url":"https://git.kernel.org/stable/c/8c0c602202b9a4909b00bc3354e3c0355bc69e65"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-19T09:15:46.038Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6.144","versionEndExcluding":"6.6.158"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.12.95","versionEndExcluding":"6.12.112"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.18.38","versionEndExcluding":"6.18.54"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.1","versionEndExcluding":"7.2.8"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.1","versionEndExcluding":"7.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"7.0.4"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}