[RFC PATCH v2 0/2] Fix incorrect overlayfs mmap() and mprotect() LSM access controls
Paul Moore <[email protected]>
| Newsgroups | org.kernel.vger.linux-unionfs,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-security-module,org.kernel.vger.selinux,org.ozlabs.lists.linux-erofs |
|---|---|
| Message-ID | <[email protected]> |
This is a follow-up revision to the patchset[1] posted a week ago. This second version has changed significantly in terms of approach and implementation, as it has become clear that the overlayfs/VFS devs are unable to make the user O_PATH file approach work. Unfortunately, this pushes a lot of the complexity down into the LSM, as opposed to the backing file code, and will likely result in code and state duplication across the different LSMs, but at this point in time it doesn't appear we have any other options. I'm marking this patchset as a RFC since I've only done basic testing on this patchset, and I still haven't satisfied myself that the code covers all of the different cases. Additional inspection and testing is required, however, please feel free to take a look and comment on anything that looks odd. As always, additional testing is welcome and encouraged. [1] https://lore.kernel.org/linux-security-module/[email protected]/ -- CHANGELOG: v2: - remove the user O_PATH file patch from Amir - add the backing_file LSM blob and lifecycle hooks - update the SELinux code to reflect the other changes v1: - initial version -- Paul Moore (2): lsm: add backing_file LSM hooks selinux: fix overlayfs mmap() and mprotect() access checks fs/backing-file.c | 18 +- fs/erofs/ishare.c | 10 + fs/file_table.c | 21 ++ fs/fuse/passthrough.c | 2 fs/internal.h | 3 fs/overlayfs/dir.c | 2 fs/overlayfs/file.c | 2 include/linux/backing-file.h | 4 include/linux/fs.h | 1 include/linux/lsm_audit.h | 2 include/linux/lsm_hook_defs.h | 5 include/linux/lsm_hooks.h | 1 include/linux/security.h | 22 ++ security/lsm.h | 1 security/lsm_init.c | 9 + security/security.c | 100 +++++++++++ security/selinux/hooks.c | 252 +++++++++++++++++++++--------- security/selinux/include/objsec.h | 17 ++ 18 files changed, 387 insertions(+), 85 deletions(-)