From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
To: Jann Horn <jannh@google.com>
Cc: "David Hildenbrand (Arm)" <david@kernel.org>,
"Paul Moore" <paul@paul-moore.com>,
"James Morris" <jmorris@namei.org>,
"Serge E. Hallyn" <serge@hallyn.com>,
"Stephen Smalley" <stephen.smalley.work@gmail.com>,
"Jeff Xu" <jeffxu@google.com>,
"Thiébaud Weksteen" <tweek@google.com>,
"Alexander Viro" <viro@zeniv.linux.org.uk>,
"Christian Brauner" <brauner@kernel.org>,
"Jan Kara" <jack@suse.cz>,
linux-fsdevel@vger.kernel.org,
linux-security-module@vger.kernel.org,
"Ondrej Mosnacek" <omosnace@redhat.com>,
selinux@vger.kernel.org,
"Andrew Morton" <akpm@linux-foundation.org>,
"Liam R. Howlett" <liam@infradead.org>,
"Vlastimil Babka" <vbabka@kernel.org>,
"Pedro Falcato" <pfalcato@suse.de>,
linux-mm@kvack.org
Subject: Re: [PATCH 2/3] proc: query LSMs for introspective mem access (if PROC_MEM_FORCE_ALWAYS)
Date: Wed, 26 Aug 2026 14:05:27 +0100 [thread overview]
Message-ID: <ao7khhTMwYEGLAXC@gremlin> (raw)
In-Reply-To: <CAG48ez1ttTOf6wobCpRK+upYJqU82jgmxGSX_e7xWuxU7xYoYg@mail.gmail.com>
On Tue, Aug 25, 2026 at 05:00:59PM +0200, Jann Horn wrote:
> On Tue, Aug 25, 2026 at 4:24 PM Lorenzo Stoakes (ARM) <ljs@kernel.org> wrote:
> > On Tue, Aug 25, 2026 at 04:08:42PM +0200, Jann Horn wrote:
> > > On Tue, Aug 25, 2026 at 3:42 PM Lorenzo Stoakes (ARM) <ljs@kernel.org> wrote:
> > > > On Mon, Aug 24, 2026 at 07:43:02PM +0200, Jann Horn wrote:
> > > > > On Mon, Aug 24, 2026 at 7:33 PM Lorenzo Stoakes (ARM) <ljs@kernel.org> wrote:
> > > > > > On Mon, Aug 24, 2026 at 07:06:04PM +0200, Jann Horn wrote:
> > > > > > > On Fri, Aug 21, 2026 at 8:52 PM Lorenzo Stoakes (ARM) <ljs@kernel.org> wrote:
> > > > > > > > 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...
> > > > > >
> > > > > > Yup :)) but I guess we have to account for people doing weird stuff...
> > > > > >
> > > > > > In this case (I do mention it in a reply elsewhere I think) it does seem
> > > > > > like perhaps you should separately check for current->mm != mm of (what was
> > > > > > originally /proc/self/mm)?
> > > > >
> > > > > I wouldn't want to do it for this access check, since that could lead
> > > > > to "confused deputy" problems.
> > > >
> > > > I guess if it got the decision wrong somehow that'd be a problem? Or wrongly
> > > > OK'd it on one level but then that led to the fd being passed on assumption it
> > > > was OK to do it or something?
> > >
> > > The problematic scenario would be something like:
> > >
> > > 1. process A opens fd1=open("/proc/self/mem",O_RDWR)
> > > 2. process A does lseek(fd1, <address of libc>, SEEK_SET)
> > > 3. A sends fd1 to privileged daemon B as a "log output" FD
> > > 4. privileged daemon B write()s into fd1
> > >
> > > In this scenario, daemon B is just trying to write log output into a
> > > file descriptor. If we checked the current credentials on write(), we
> > > might enable FOLL_FORCE just because daemon B is generally permitted
> > > to use ptrace.
> > >
> > > This illustrates why, in general, the "ambient privilege" that a
> > > process has must not influence write() access decisions.
> >
> > Ahh. That makes sense.
> >
> > But I mean in this case the check would be that the mm is the one belonging to
> > the process in question so wouldn't you need in the first place to have obtained
> > a privileged mm anyway?
> >
> > If the check is literally mm of /proc/$pid/mem == current->mm?
>
> Ah, right, true.
>
> Still, I think I want to generally avoid looking at the current
> process in write(). If I did add such a check, and the check failed,
> I'm also not sure what I'd do with this information.
True it's not a blocker!
>
> > And wouldn't prilileged process -> fd to /proc/$pid/mem -> less privileged
> > process be a fail in itself?
>
> Yes, true.
Yeah just food for thought I guess :)
--
Cheers, Lorenzo
next prev parent reply other threads:[~2026-08-26 13:05 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-18 19:51 [PATCH 0/3] proc,security,selinux: let SELinux block FOLL_FORCE for /proc/self/mem Jann Horn
2026-08-18 19:51 ` [PATCH 1/3] proc: refactor /proc/$pid/mem to use struct as private_data Jann Horn
2026-08-18 19:58 ` sashiko-bot
2026-08-20 11:20 ` Jan Kara
2026-08-20 17:18 ` David Hildenbrand (Arm)
2026-08-21 18:34 ` Lorenzo Stoakes (ARM)
2026-08-18 19:51 ` [PATCH 2/3] proc: query LSMs for introspective mem access (if PROC_MEM_FORCE_ALWAYS) Jann Horn
2026-08-18 20:00 ` sashiko-bot
2026-08-20 17:22 ` David Hildenbrand (Arm)
2026-08-20 18:44 ` Jann Horn
2026-08-21 14:18 ` David Hildenbrand (Arm)
2026-08-21 14:48 ` Jann Horn
2026-08-21 18:52 ` Lorenzo Stoakes (ARM)
2026-08-24 17:06 ` Jann Horn
2026-08-24 17:32 ` Lorenzo Stoakes (ARM)
2026-08-24 17:43 ` Jann Horn
2026-08-25 13:42 ` Lorenzo Stoakes (ARM)
2026-08-25 14:08 ` Jann Horn
2026-08-25 14:24 ` Lorenzo Stoakes (ARM)
2026-08-25 15:00 ` Jann Horn
2026-08-26 13:05 ` Lorenzo Stoakes (ARM) [this message]
2026-08-21 19:00 ` Lorenzo Stoakes (ARM)
2026-08-24 17:28 ` Jann Horn
2026-08-25 14:02 ` Lorenzo Stoakes (ARM)
2026-08-25 13:13 ` Christian Brauner
2026-08-25 13:46 ` Jann Horn
2026-08-26 10:26 ` Christian Brauner
2026-08-25 13:19 ` Christian Brauner
2026-08-25 14:00 ` Jann Horn
2026-08-26 10:29 ` Christian Brauner
2026-08-26 13:01 ` Christian Brauner
2026-08-26 16:17 ` Jann Horn
2026-08-18 19:51 ` [PATCH 3/3] selinux: require EXECMEM or PTRACE for FOLL_FORCE introspection Jann Horn
2026-08-18 19:58 ` sashiko-bot
2026-08-19 14:54 ` Stephen Smalley
2026-08-20 15:23 ` Jann Horn
2026-08-21 13:52 ` Stephen Smalley
2026-08-21 15:07 ` Jann Horn
2026-08-21 18:56 ` Lorenzo Stoakes (ARM)
2026-08-24 17:17 ` Jann Horn
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ao7khhTMwYEGLAXC@gremlin \
--to=ljs@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=brauner@kernel.org \
--cc=david@kernel.org \
--cc=jack@suse.cz \
--cc=jannh@google.com \
--cc=jeffxu@google.com \
--cc=jmorris@namei.org \
--cc=liam@infradead.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-security-module@vger.kernel.org \
--cc=omosnace@redhat.com \
--cc=paul@paul-moore.com \
--cc=pfalcato@suse.de \
--cc=selinux@vger.kernel.org \
--cc=serge@hallyn.com \
--cc=stephen.smalley.work@gmail.com \
--cc=tweek@google.com \
--cc=vbabka@kernel.org \
--cc=viro@zeniv.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.