Re: [PATCH 2/3] proc: query LSMs for introspective mem access (if PROC_MEM_FORCE_ALWAYS)
Jann Horn <[email protected]>
| Newsgroups | org.kvack.linux-mm,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-security-module,org.kernel.vger.selinux |
|---|---|
| Message-ID | <CAG48ez0CX-PT5Yk5gYJuB6wPe26j0gHHXQqYoNtTA=iHe_5Wdw@mail.gmail.com> |
On Fri, Aug 21, 2026 at 8:52 PM Lorenzo Stoakes (ARM) <[email protected]> wrote: > OK so the whole thing is: > > mem_open() > -> __mem_open() > -> proc_mem_open() > -> mm_access() > -> may_access_mm() > > And: > > static bool may_access_mm(struct mm_struct *mm, struct task_struct *task, unsigned int mode) > { > if (mm == current->mm) > return true; > ... > } > > And what this flag is carrying is 'hey the reason we allowed the _open_ is > because it's looking at its own address space'. Yes. > I did wonder if what you're protecting against is even a process updating > execmem _it_ owns, no fd shared anywhere, as something LSM might want to > prevent even so? Sorry, can you rephrase that? My goal with this series is to let LSMs block a process that tries to modify its own non-writable executable memory using /proc/self/mem; I'm not sure if that answers your question. For context: In this series, I'm using "execmem" to refer to the SELinux permission PROCESS__EXECMEM, which essentially controls whether a process is allowed to create writable+executable mappings that can contain anonymous pages. Additionally, it blocks creating executable mappings of S_PRIVATE inodes. There are other SELinux permissions for things like making a VMA containing anonymous pages executable (FILE__EXECMOD and others) or mapping files as executable (FILE__EXECUTE). FILE__EXECUTE is granular, it can be granted based on the security labels of the process and the file that is mapped. > The sharing a /proc/mem fd seems like that's a pretty dumb thing to do in > general :) but I guess you have to protect against that. Yeah, it's a kinda weird thing to do...