From: Serge Hallyn <serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org>
To: Andy Lutomirski <luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org>
Cc: Ted Ts'o <tytso-3s7WtUTddSA@public.gmane.org>,
Linux Containers
<containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>,
Linux Kernel Mailing List
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"Eric W. Biederman"
<ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>,
lxc-devel
<lxc-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>
Subject: Re: ioctl CAP_LINUX_IMMUTABLE is checked in the wrong namespace
Date: Wed, 30 Apr 2014 00:44:53 +0000 [thread overview]
Message-ID: <20140430004453.GD28969@ubuntumail> (raw)
In-Reply-To: <CALCETrVh0hCtiK=9fmEYfUWuz4C1dPq22kvyd=OWFMH5pXGaZw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
Quoting Andy Lutomirski (luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org):
> On Tue, Apr 29, 2014 at 5:21 PM, Serge Hallyn <serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org> wrote:
> > Quoting Andy Lutomirski (luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org):
> >> > It should be a nonissue so long as we make sure that a file owned by a
> >> > uid outside the scope of the container may not be changed even though
> >> > fs_owner_uid is set. Otherwise, it's just a matter of chmod +S on say
> >> > a shell and anyone who can see the fs from the host will be getting a
> >> > root shell (assuming said file is owned by the host's uid 0).
> >>
> >> I feel like that's too fragile. I'd rather add a rule that one of
> >
> > yeah I don't wnat to rush something like that. I'd rather stash
> > the userns of the task which did the mounting and check against
> > that. Note that would make it worthless unless and until we allowed
> > mounting from non-init userns, but then we can only claim "our fs
> > superblock readers suck and therefore containers can't mount an fs"
> > so long before we start to feel some shame and audit them...
> >
> >> these filesystems always acts like it's nosuid unless you're inside a
> >> user namespace that matches fs_owner_uid.
> >>
> >> Maybe even that is too weird. How about setuid, setgid, and fcaps
> >> only work on mounts that are in mount namespaces that are owned by the
> >> current user namespace or one of its parents? IOW, a struct mount is
> >> only trusted if mnt->mnt_ns->user_ns == current user ns or one of its
> >> parents?
> >>
> >> Untrusted mounts would act like they are nosuid,nodev. Someone can
> >> try to figure out a safe way to relax nodev at some point.
>
> Do you like this variant? We could add a way for global root to mount
> an fs on behalf of a userns. I'd rather this be more explicit than
> just mounting it in a mount ns owned by the user namespace, though.
I'm missing something. Which mnt are you talking about? A user
can just clone a new userns and then clone(CLONE_NEWNS) to get a set
of mounts owned by himself... We need to get a mnt (or a cred or
straight to a userns) tied to the first mount of the superblock, istm.
-serge
WARNING: multiple messages have this Message-ID (diff)
From: Serge Hallyn <serge.hallyn@ubuntu.com>
To: Andy Lutomirski <luto@amacapital.net>
Cc: "Stéphane Graber" <stgraber@ubuntu.com>,
"Ted Ts'o" <tytso@mit.edu>,
"Linux Containers" <containers@lists.linux-foundation.org>,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
lxc-devel <lxc-devel@lists.sourceforge.net>,
"Eric W. Biederman" <ebiederm@xmission.com>
Subject: Re: ioctl CAP_LINUX_IMMUTABLE is checked in the wrong namespace
Date: Wed, 30 Apr 2014 00:44:53 +0000 [thread overview]
Message-ID: <20140430004453.GD28969@ubuntumail> (raw)
In-Reply-To: <CALCETrVh0hCtiK=9fmEYfUWuz4C1dPq22kvyd=OWFMH5pXGaZw@mail.gmail.com>
Quoting Andy Lutomirski (luto@amacapital.net):
> On Tue, Apr 29, 2014 at 5:21 PM, Serge Hallyn <serge.hallyn@ubuntu.com> wrote:
> > Quoting Andy Lutomirski (luto@amacapital.net):
> >> > It should be a nonissue so long as we make sure that a file owned by a
> >> > uid outside the scope of the container may not be changed even though
> >> > fs_owner_uid is set. Otherwise, it's just a matter of chmod +S on say
> >> > a shell and anyone who can see the fs from the host will be getting a
> >> > root shell (assuming said file is owned by the host's uid 0).
> >>
> >> I feel like that's too fragile. I'd rather add a rule that one of
> >
> > yeah I don't wnat to rush something like that. I'd rather stash
> > the userns of the task which did the mounting and check against
> > that. Note that would make it worthless unless and until we allowed
> > mounting from non-init userns, but then we can only claim "our fs
> > superblock readers suck and therefore containers can't mount an fs"
> > so long before we start to feel some shame and audit them...
> >
> >> these filesystems always acts like it's nosuid unless you're inside a
> >> user namespace that matches fs_owner_uid.
> >>
> >> Maybe even that is too weird. How about setuid, setgid, and fcaps
> >> only work on mounts that are in mount namespaces that are owned by the
> >> current user namespace or one of its parents? IOW, a struct mount is
> >> only trusted if mnt->mnt_ns->user_ns == current user ns or one of its
> >> parents?
> >>
> >> Untrusted mounts would act like they are nosuid,nodev. Someone can
> >> try to figure out a safe way to relax nodev at some point.
>
> Do you like this variant? We could add a way for global root to mount
> an fs on behalf of a userns. I'd rather this be more explicit than
> just mounting it in a mount ns owned by the user namespace, though.
I'm missing something. Which mnt are you talking about? A user
can just clone a new userns and then clone(CLONE_NEWNS) to get a set
of mounts owned by himself... We need to get a mnt (or a cred or
straight to a userns) tied to the first mount of the superblock, istm.
-serge
next prev parent reply other threads:[~2014-04-30 0:44 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-29 13:49 ioctl CAP_LINUX_IMMUTABLE is checked in the wrong namespace Marian Marinov
2014-04-29 13:49 ` Marian Marinov
2014-04-29 18:35 ` Theodore Ts'o
[not found] ` <20140429183534.GB19325-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2014-04-29 18:52 ` Serge Hallyn
2014-04-29 18:52 ` Serge Hallyn
2014-04-29 21:49 ` Marian Marinov
2014-04-29 21:49 ` Marian Marinov
[not found] ` <53601E5B.5050004-108MBtLGafw@public.gmane.org>
2014-04-29 22:02 ` Serge Hallyn
2014-04-29 22:02 ` Serge Hallyn
2014-04-29 22:24 ` Marian Marinov
2014-04-29 22:24 ` Marian Marinov
[not found] ` <536026B3.1020905-108MBtLGafw@public.gmane.org>
2014-04-29 22:29 ` Serge Hallyn
2014-04-29 22:29 ` Serge Hallyn
2014-04-29 22:45 ` Andy Lutomirski
2014-04-29 22:45 ` Andy Lutomirski
[not found] ` <53602B84.1020304-3s7WtUTddSA@public.gmane.org>
2014-04-29 23:06 ` Theodore Ts'o
2014-04-29 23:06 ` Theodore Ts'o
[not found] ` <20140429230624.GA28966-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2014-04-29 23:07 ` Andy Lutomirski
2014-04-29 23:07 ` Andy Lutomirski
2014-04-29 23:20 ` Marian Marinov
2014-04-29 23:20 ` Marian Marinov
[not found] ` <536033A9.5070504-108MBtLGafw@public.gmane.org>
2014-04-29 23:22 ` Andy Lutomirski
2014-04-29 23:22 ` Andy Lutomirski
[not found] ` <CALCETrVJY6SWjdbqSSCeOo9oid22TnL83v9oDVg06XLZfPkLCw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-29 23:47 ` Stéphane Graber
2014-04-29 23:47 ` Stéphane Graber
2014-04-29 23:51 ` Andy Lutomirski
2014-04-29 23:51 ` Andy Lutomirski
[not found] ` <CALCETrXK6N8CLjPtnHVXB-BM_bxNU6e1xYGd=_UKcjKMrR3j0g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-30 0:01 ` Stéphane Graber
2014-04-30 0:01 ` Stéphane Graber
2014-04-30 0:10 ` Marian Marinov
2014-04-30 0:10 ` Marian Marinov
[not found] ` <53603F8F.6070304-108MBtLGafw@public.gmane.org>
2014-04-30 0:12 ` Andy Lutomirski
2014-04-30 0:12 ` Andy Lutomirski
2014-04-30 0:11 ` Andy Lutomirski
2014-04-30 0:11 ` Andy Lutomirski
[not found] ` <CALCETrWz2i1xE_t982yA8GG4a-rD4AnU_43YA8cNdC9NpSD4Sg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-30 0:21 ` Serge Hallyn
2014-04-30 0:21 ` Serge Hallyn
2014-04-30 0:23 ` Andy Lutomirski
2014-04-30 0:23 ` Andy Lutomirski
[not found] ` <CALCETrVh0hCtiK=9fmEYfUWuz4C1dPq22kvyd=OWFMH5pXGaZw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-04-30 0:44 ` Serge Hallyn [this message]
2014-04-30 0:44 ` Serge Hallyn
2014-04-30 1:03 ` Andy Lutomirski
2014-04-30 1:03 ` Andy Lutomirski
2014-04-30 0:16 ` Serge Hallyn
2014-04-30 0:16 ` Serge Hallyn
2014-04-30 0:32 ` Theodore Ts'o
[not found] ` <20140430003236.GA6472-AKGzg7BKzIDYtjvyW6yDsg@public.gmane.org>
2014-04-30 0:33 ` Andy Lutomirski
2014-04-30 0:33 ` Andy Lutomirski
2014-04-30 0:40 ` Serge Hallyn
2014-04-30 0:40 ` Serge Hallyn
2014-04-30 7:48 ` Eric W. Biederman
2014-04-30 7:48 ` Eric W. Biederman
[not found] ` <87ha5bntqm.fsf-JOvCrm2gF+uungPnsOpG7nhyD016LWXt@public.gmane.org>
2014-04-30 13:33 ` Serge Hallyn
2014-04-30 13:33 ` Serge Hallyn
2014-04-30 0:32 ` Theodore Ts'o
[not found] ` <535FADDA.2070803-108MBtLGafw@public.gmane.org>
2014-04-29 18:35 ` Theodore Ts'o
2014-04-29 18:37 ` Andy Lutomirski
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=20140430004453.GD28969@ubuntumail \
--to=serge.hallyn-gewih/nmzzlqt0dzr+alfa@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org \
--cc=lxc-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=tytso-3s7WtUTddSA@public.gmane.org \
/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.