{"id":33283,"date":"2026-10-06T20:31:41","date_gmt":"2026-10-06T12:31:41","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98214"},"modified":"2026-10-06T20:31:41","modified_gmt":"2026-10-06T12:31:41","slug":"cve-2026-98214","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98214","title":{"rendered":"CVE-2026-98214 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nselinux: recheck inte"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>selinux: recheck intermediate backing files on mprotect()<\/p>\n<p>mprotect() can be used to bypass the SELinux checks that mmap() performs<br \/>\nagainst the intermediate layers of a stacked filesystem.<\/p>\n<p>mmap() checks every backing layer as the request descends through the<br \/>\nstack.  mprotect() only has the lowest backing file in vma-&gt;vm_file, so it<br \/>\nrechecks the top-level user and the lowest mounter, but skips the mounters<br \/>\nof every layer in between.  With two nested overlayfs mounts and a policy<br \/>\ndenying mounter_t -&gt; middle_file_t:file { execute }, a direct<br \/>\nmmap(PROT_EXEC) is denied:<\/p>\n<p>  avc:  denied  { execute } for  pid=71 comm=&#8221;nested_exec&#8221;<br \/>\n    path=&#8221;\/payload&#8221; dev=&#8221;overlay&#8221; ino=9<br \/>\n    scontext=user_u:base_r:mounter_t<br \/>\n    tcontext=user_u:object_r:middle_file_t tclass=file permissive=0<\/p>\n<p>while mmap(PROT_NONE) followed by mprotect(PROT_EXEC) succeeds.<\/p>\n<p>Preserve each intermediate path, mounter SID and file-description SID in<br \/>\nthe backing-file security blob, copying the saved entries when another<br \/>\nbacking layer is opened.  Allocate the array only for nested backing files,<br \/>\nand release it and the path references in the backing_file_free hook.<\/p>\n<p>During mprotect(), recheck fd { use } and the requested inode permissions<br \/>\nfor every saved mounter, and include the intermediate layers in the execmod<br \/>\nchecks.  Policy for nested stacking may then need to grant intermediate<br \/>\nmounters what a direct mmap() already requires, and execmod on intermediate<br \/>\nlabels for binaries using text relocations.<\/p>\n<p>Tested on arm64 QEMU with a small BusyBox initramfs and a purpose-built<br \/>\nSELinux policy, on a mainline tree containing<br \/>\ncommit f2381b546e7e (&#8220;fs: fix user path of nested backing files&#8221;).<\/p>\n<p>[PM: subject tweak]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>selinux: recheck intermediate backing files on mprotect()<\/p>\n<p>mprotect() can be used to bypass the SELinux checks that mmap() performs<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33283","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=33283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}