From: Seth Forshee <seth.forshee@canonical.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>,
"Serge H. Hallyn" <serge.hallyn@ubuntu.com>,
Andy Lutomirski <luto@amacapital.net>,
Michael j Theall <mtheall@us.ibm.com>,
fuse-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org,
linux-fsdevel@vger.kernel.org, seth.forshee@canonical.com
Subject: Re: [PATCH v5 2/4] fuse: Support fuse filesystems outside of init_user_ns
Date: Tue, 18 Nov 2014 09:21:56 -0600 [thread overview]
Message-ID: <20141118152156.GA21726@ubuntu-mba51> (raw)
In-Reply-To: <20141112162254.GB31775@ubuntu-hedt>
On Wed, Nov 12, 2014 at 10:22:54AM -0600, Seth Forshee wrote:
> On Wed, Nov 12, 2014 at 02:09:15PM +0100, Miklos Szeredi wrote:
> > On Tue, Nov 11, 2014 at 09:37:10AM -0600, Eric W. Biederman wrote:
> >
> > > > Maybe I'm being dense, but can someone give a concrete example of such an
> > > > attack?
> > >
> > > There are two variants of things at play here.
> > >
> > > There is the classic if you don't freeze your context at open time when
> > > you pass that file descriptor to another process unexpected things can
> > > happen.
> > >
> > > An essentially harmless but extremely confusing example is what happens
> > > to a partial read when it stops halfway through a uid value and the next
> > > read on the same file descriptor is from a process in a different user
> > > namespace. Which uid value should be returned to userspace.
> >
> > Fuse device doesn't currently do partial reads, so that's a non-issue.
> >
> > > Now if I am in a nefarious mood I can create a unprivileged user
> > > namespace, open /dev/fuse and mount a fuse filesystem. Pass the file
> > > descriptor to /dev/fuse to a processes that is in the default user
> > > namespace (and thus can use any uid/gid). With that file desctipor
> > > report that there is a setuid 0 exectuable on that file system.
> >
> > Yes, and this would also be prevented by MNT_NOSUID, which would be a good idea
> > anyway. I just don't see the reason we'd want to allow clearing MNT_NOSUID in a
> > private namespace.
> >
> > So we don't currently see a use case for relaxing either the MNT_NOSUID
> > restriction or for relaxing the requirement on the user namespace the fuse
> > server is in. Is that correct?
> >
> > If so, we should leave both restrictions in place since that allows the greatest
> > flexibility in the future, is either of those needs to be relaxed.
>
> I'm not aware of specific use cases for either at this point. However,
> Andy's patch [1] will limit suid to the set of namespaces where the user
> who mounted the filesystem already has privileges. Enforcing MNT_NOSUID
> will require enforcement in the vfs, and in that case we definitely need
> to decide whether the policy is to implicitly add the flag or fail the
> mount attempt if the flag is not present [2].
I asked around a bit, and it turns out there are use cases for nested
containers (i.e. a container within a container) where the rootfs for
the outer container mounts a filesystem containing the rootfs for the
inner container. If that mount is nosuid then suid utilities like ping
aren't going to work in the inner container.
So since there's a use case for suid in a userns mount and we have what
we belive are sufficient protections against using this as a vector to
get privileges outside the container, I'm planning to move ahead without
the MNT_NOSUID restriction. Any objections?
Thanks,
Seth
next prev parent reply other threads:[~2014-11-18 15:21 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-22 21:24 [PATCH v5 0/4] fuse: Add support for mounts from pid/user namespaces Seth Forshee
[not found] ` <1414013060-137148-1-git-send-email-seth.forshee-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
2014-10-22 21:24 ` [PATCH v5 1/4] fuse: Add support for pid namespaces Seth Forshee
2014-10-22 21:24 ` Seth Forshee
2014-11-11 13:27 ` Miklos Szeredi
2014-11-11 15:24 ` Seth Forshee
2014-11-11 15:39 ` Andy Lutomirski
[not found] ` <CALCETrUzkyu85BtM=Zn8+x6NqyZj+-d2u-1EiPkOO8-dwzYN_g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-11-11 16:26 ` Seth Forshee
2014-11-11 16:26 ` Seth Forshee
2014-11-12 12:07 ` Miklos Szeredi
2014-11-12 14:33 ` Seth Forshee
2014-10-22 21:24 ` [PATCH v5 2/4] fuse: Support fuse filesystems outside of init_user_ns Seth Forshee
2014-10-22 21:47 ` Andy Lutomirski
2014-11-11 14:04 ` Miklos Szeredi
2014-11-11 15:27 ` Seth Forshee
2014-11-11 15:37 ` Eric W. Biederman
2014-11-12 13:09 ` Miklos Szeredi
2014-11-12 16:22 ` Seth Forshee
2014-11-18 15:21 ` Seth Forshee [this message]
2014-11-18 17:09 ` Andy Lutomirski
2014-11-18 17:13 ` Seth Forshee
2014-11-18 17:19 ` Andy Lutomirski
2014-11-19 8:50 ` Miklos Szeredi
2014-11-19 10:38 ` Miklos Szeredi
2014-11-19 14:09 ` Serge E. Hallyn
2014-11-21 16:44 ` Seth Forshee
2014-11-21 17:19 ` Andy Lutomirski
2014-11-21 18:14 ` Eric W. Biederman
2014-11-21 18:14 ` Eric W. Biederman
2014-11-21 18:25 ` Andy Lutomirski
2014-11-21 18:27 ` Seth Forshee
2014-11-21 18:38 ` Andy Lutomirski
2014-10-22 21:24 ` [PATCH v5 3/4] fuse: Restrict allow_other to the superblock's namespace or a descendant Seth Forshee
2014-10-22 21:48 ` Andy Lutomirski
2014-11-11 15:27 ` Miklos Szeredi
2014-11-11 15:37 ` Seth Forshee
2014-10-22 21:24 ` [PATCH v5 4/4] fuse: Allow user namespace mounts Seth Forshee
2014-10-22 21:51 ` Andy Lutomirski
2014-10-23 0:22 ` Seth Forshee
2014-10-23 2:19 ` Andy Lutomirski
2014-10-23 2:19 ` Andy Lutomirski
2014-11-03 17:15 ` [PATCH v5 0/4] fuse: Add support for mounts from pid/user namespaces Seth Forshee
2014-11-03 17:17 ` 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=20141118152156.GA21726@ubuntu-mba51 \
--to=seth.forshee@canonical.com \
--cc=ebiederm@xmission.com \
--cc=fuse-devel@lists.sourceforge.net \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=miklos@szeredi.hu \
--cc=mtheall@us.ibm.com \
--cc=serge.hallyn@ubuntu.com \
/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.