All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Serge E. Hallyn" <serge.hallyn@canonical.com>
To: Eric Paris <eparis@redhat.com>
Cc: "Andrew G. Morgan" <morgan@kernel.org>,
	"Serge E. Hallyn" <serge@hallyn.com>,
	David Howells <dhowells@redhat.com>,
	linux-kernel@vger.kernel.org, ebiederm@xmission.com,
	akpm@linux-foundation.org, oleg@redhat.com, richard@nod.at,
	mikevs@xs4all.net, segoon@openwall.com, gregkh@suse.de
Subject: Re: [PATCH 05/10] user namespace: clamp down users of cap_raised
Date: Tue, 25 Oct 2011 15:09:35 -0500	[thread overview]
Message-ID: <20111025200935.GA13187@sergelap> (raw)
In-Reply-To: <1319564009.3280.22.camel@localhost>

Quoting Eric Paris (eparis@redhat.com):
> On Mon, 2011-10-24 at 22:03 -0500, Serge E. Hallyn wrote:
> > Quoting Andrew G. Morgan (morgan@kernel.org):
> > > On Mon, Oct 24, 2011 at 10:28 AM, Serge E. Hallyn
> > > <serge.hallyn@canonical.com> wrote:
> > > > Quoting Andrew G. Morgan (morgan@kernel.org):
> > > >> Serge,
> > > >>
> > > >> It seems as if this whole thing is really idiomatic. How about?
> > > >>
> > > >> #define IN_ROOT_USER_NS_CAPABLE(cap)  \
> > > >>    ((current_user_ns() == &init_user_ns) && cap_raised(current_cap(), cap))
> > > >
> > > > My objection to this was that it seems to encourage others to use it :)  I'm
> > > > not sure we want that.  Also, IN_ROOT_USER_NS seems more generally useful.
> > > 
> > > What is driving the choice of when its appropriate? How can a
> > 
> > I'd like to say it's never appropriate.  The reason is that it bypasses
> > the whole security_ops->capable() sequence, so for instance SELinux is
> > kept in the dark.
> > 
> > > developer determine this? If you make it hard, presumably folk won't
> > > do it by default, but will that create a burdon on others to go round
> > > patching things like this up?
> > > 
> > > > But if I'm the only one who feels this way I'll go ahead and do it...
> > > 
> > > I'm more of a optimize for a human to read the source code (ie. debug
> > > a problem) kind of person. If IN_ROOT_USER_NS is useful, you could
> > > always define IN_ROOT_USER_NS_CAPABLE in terms of IN_ROOT_USER_NS &&
> > 
> > My other objection is that, in contrast to IN_ROOT_USER_NS(), which is
> > very clear, IN_ROOT_USER_NS_CAPABLE() is not as helpful.  I'm sure a
> > better name is out there somewhere, though.
> > 
> > > ... and provide both.
> > > 
> > > I guess I'm unclear, however, when you want developers to use one or
> > > the other variant of the basic capable() functionality. Since I'm not
> > > clear, I'm suspecting this is a fragile situation.
> > 
> > I think only security code (LSMs) should be using cap_raised directly.
> > Everything else should go through the capable()/has_capability() family
> > of functions.  Which, incidentally, have been (or are about to be) made
> > less of a mess and thus less fragile by Eric Paris' patchset starting at
> > http://www.spinics.net/linux/fedora/linux-security-module/msg11896.html
> 
> (sorry out all last week)
> 
> I was going to ask why we have these user at all.  Is there a reason
> they are bypassing the LSM and not setting PF_PRIV?  Is the best
> solution to just bring them back into the capable fold?

Probably, but I didn't really want to tackle that - and risk
regressions - just then.  The most important issue for now is
that anyone who can create a new user namespace can pass this
test, so I wanted to fix that first.  (Creating a new user ns
takes quite a bit of privilege, but of course userspace loves
to bypass that with setuid)

Maybe, since everyone is calling me on it, I'm wrong and we should
consider it after all :)

-serge

  reply	other threads:[~2011-10-25 20:09 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-18 21:54 user namespaces: fix some uid/privilege leaks Serge Hallyn
2011-10-18 21:54 ` [PATCH 1/9] pid_ns: ensure pid is not freed during kill_pid_info_as_uid Serge Hallyn
2011-10-18 21:54 ` [PATCH 2/9] user namespace: usb: make usb urbs user namespace aware (v2) Serge Hallyn
2011-10-18 21:54 ` [PATCH 3/9] user namespace: make signal.c respect user namespaces (v4) Serge Hallyn
2011-10-18 21:54 ` [PATCH 4/9] User namespace: don't allow sysctl in non-init user ns (v2) Serge Hallyn
2011-10-18 21:54 ` [PATCH 5/9] user namespace: clamp down users of cap_raised Serge Hallyn
2011-10-19  4:33   ` Andrew G. Morgan
2011-10-19  9:01     ` David Howells
2011-10-20 13:16       ` Serge E. Hallyn
2011-10-24 14:43       ` [PATCH 05/10] " Serge E. Hallyn
2011-10-24 15:47         ` Andrew G. Morgan
2011-10-24 17:28           ` Serge E. Hallyn
2011-10-25  0:43             ` Andrew G. Morgan
2011-10-25  3:03               ` Serge E. Hallyn
2011-10-25 17:33                 ` Eric Paris
2011-10-25 20:09                   ` Serge E. Hallyn [this message]
2011-10-20 13:01     ` [PATCH 5/9] " Serge E. Hallyn
2011-10-18 21:54 ` [PATCH 6/9] Add Documentation/namespaces/user_namespace.txt (v3) Serge Hallyn
2011-10-19  9:36   ` David Howells
2011-10-20 12:58     ` Serge E. Hallyn
2011-10-26 20:33     ` [PATCH 06/10] Add Documentation/namespaces/user_namespace.txt (v4) Serge E. Hallyn
2011-10-18 21:54 ` [PATCH 7/9] user namespace: make each net (net_ns) belong to a user_ns Serge Hallyn
2011-10-18 21:54 ` [PATCH 8/9] protect cap_netlink_recv from user namespaces Serge Hallyn
2011-10-18 21:54 ` [PATCH 9/9] make net/core/scm.c uid comparisons user namespace aware Serge Hallyn
2011-10-18 22:14   ` Joe Perches
2011-10-18 23:22     ` Serge E. Hallyn
2011-10-19  2:25       ` [PATCH 9/9] make net/core/scm.c uid comparisons user namespace aware (v2) Serge E. Hallyn
2011-10-19 13:52   ` [PATCH 9/9] make net/core/scm.c uid comparisons user namespace aware Eric W. Biederman
2011-10-20 12:58     ` Serge E. Hallyn
2011-10-20 13:35       ` Eric W. Biederman
2011-10-20 14:14         ` Serge E. Hallyn
2011-10-24  4:15           ` Serge E. Hallyn
2011-10-24  4:27             ` Eric W. Biederman
2011-10-20 14:24         ` Serge E. Hallyn

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=20111025200935.GA13187@sergelap \
    --to=serge.hallyn@canonical.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=eparis@redhat.com \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mikevs@xs4all.net \
    --cc=morgan@kernel.org \
    --cc=oleg@redhat.com \
    --cc=richard@nod.at \
    --cc=segoon@openwall.com \
    --cc=serge@hallyn.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.