All of lore.kernel.org
 help / color / mirror / Atom feed
From: ebiederm@xmission.com (Eric W. Biederman)
To: Andy Lutomirski <luto@amacapital.net>
Cc: "Serge E. Hallyn" <serge@hallyn.com>,
	Seth Forshee <seth.forshee@canonical.com>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Serge Hallyn <serge.hallyn@canonical.com>,
	James Morris <james.l.morris@oracle.com>,
	Linux FS Devel <linux-fsdevel@vger.kernel.org>,
	LSM List <linux-security-module@vger.kernel.org>,
	SELinux-NSA <selinux@tycho.nsa.gov>,
	"linux-kernel\@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 3/7] fs: Ignore file caps in mounts from other user namespaces
Date: Wed, 15 Jul 2015 17:35:24 -0500	[thread overview]
Message-ID: <87wpy1camr.fsf@x220.int.ebiederm.org> (raw)
In-Reply-To: <CALCETrVTGC8NJdpOhkqDaE8HdD95y-K2-VnsL+Oo4NjVUyovsA@mail.gmail.com> (Andy Lutomirski's message of "Wed, 15 Jul 2015 14:50:46 -0700")

Andy Lutomirski <luto@amacapital.net> writes:

> On Wed, Jul 15, 2015 at 2:48 PM, Serge E. Hallyn <serge@hallyn.com> wrote:
>> On Wed, Jul 15, 2015 at 02:46:04PM -0500, Seth Forshee wrote:
>>> Capability sets attached to files must be ignored except in the
>>> user namespaces where the mounter is privileged, i.e. s_user_ns
>>> and its descendants. Otherwise a vector exists for gaining
>>> privileges in namespaces where a user is not already privileged.
>>>
>>> Add a new helper function, in_user_ns(), to test whether a user
>>> namespace is the same as or a descendant of another namespace.
>>> Use this helper to determine whether a file's capability set
>>> should be applied to the caps constructed during exec.
>>>
>>> Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
>>
>> Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
>>
>> I think it's an ok behavior, though let's just go over the
>> alternatives.
>>
>> It might actually be ok to simply require that the user_ns be
>> equal.  If I unshare a new userns in which a different uid is
>> mapped to root, I may not want file capabilities to be granted
>> to tasks in that ns.  (On the other hand, I might be creating
>> a new user_ns specifically to not have a uid 0 mapped into it
>> at all, and only have file capabilities grant privilege)
>>
>> Conversely, if I unshare one user_ns with a MS_SHARED mnt_ns, mount
>> an ext4fs, and then (from the parent shell) unshare another user_ns
>> with the same mapping, intending it to be a "peer" to the first one
>> I'd unshared and be able to use the ext4fs it mounted.  This won't
>> work here.  That's probably best - the appropriate thing to do was
>> to attach to the existing user_ns.  But it could end up being
>> limiting in some special cases, so I'm bringing it up here.
>>
>> Again I think what you have here is the simplest and most sensible
>> choice, so ack.
>>
>
> I think I'm missing something.  Why is this separate from mount_may_suid?
>
> I can see why it would make sense to check s_user_ns (or maybe
> s_user_ns *and* the vfsmount namespace) in mount_may_suid, but I don't
> see why we need separate checks.

So I don't quite understand your concerns that lead to the mnt_may_suid
patch.  But in my limited understanding there are two distinct issues.

1) What do file capabilities mean on a filesystem mounted with user
   namespace privileges.  Where the unprivileged user can control what
   resides on disk.

   That is what this patch should be about.

   Meaning and restricting those permissions to unprivileged users.

2) The second issue that I think your mnt_may_suid patch is about seems
   to be what to do if a mount winds up in a place we never intended.

   Aka leaks.  I don't think any changes to mnt_may_suid are necessary
   in that sense.  However they may be useful.

   So I think your mnt_may_suid change may be worth having but so far it
   seems unnecessary.

Which is a long way of saying this patch is fundamentally necessary,
and I am not certain about  the mnt_may_suid patch.

Am I right in understanding it's purpose?  Or does this patch actually
succeed in obsoleting it?

Eric

WARNING: multiple messages have this Message-ID (diff)
From: ebiederm@xmission.com (Eric W. Biederman)
To: Andy Lutomirski <luto@amacapital.net>
Cc: Serge Hallyn <serge.hallyn@canonical.com>,
	SELinux-NSA <selinux@tycho.nsa.gov>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Seth Forshee <seth.forshee@canonical.com>,
	LSM List <linux-security-module@vger.kernel.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	James Morris <james.l.morris@oracle.com>,
	Linux FS Devel <linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH 3/7] fs: Ignore file caps in mounts from other user namespaces
Date: Wed, 15 Jul 2015 17:35:24 -0500	[thread overview]
Message-ID: <87wpy1camr.fsf@x220.int.ebiederm.org> (raw)
In-Reply-To: <CALCETrVTGC8NJdpOhkqDaE8HdD95y-K2-VnsL+Oo4NjVUyovsA@mail.gmail.com> (Andy Lutomirski's message of "Wed, 15 Jul 2015 14:50:46 -0700")

Andy Lutomirski <luto@amacapital.net> writes:

> On Wed, Jul 15, 2015 at 2:48 PM, Serge E. Hallyn <serge@hallyn.com> wrote:
>> On Wed, Jul 15, 2015 at 02:46:04PM -0500, Seth Forshee wrote:
>>> Capability sets attached to files must be ignored except in the
>>> user namespaces where the mounter is privileged, i.e. s_user_ns
>>> and its descendants. Otherwise a vector exists for gaining
>>> privileges in namespaces where a user is not already privileged.
>>>
>>> Add a new helper function, in_user_ns(), to test whether a user
>>> namespace is the same as or a descendant of another namespace.
>>> Use this helper to determine whether a file's capability set
>>> should be applied to the caps constructed during exec.
>>>
>>> Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
>>
>> Acked-by: Serge Hallyn <serge.hallyn@canonical.com>
>>
>> I think it's an ok behavior, though let's just go over the
>> alternatives.
>>
>> It might actually be ok to simply require that the user_ns be
>> equal.  If I unshare a new userns in which a different uid is
>> mapped to root, I may not want file capabilities to be granted
>> to tasks in that ns.  (On the other hand, I might be creating
>> a new user_ns specifically to not have a uid 0 mapped into it
>> at all, and only have file capabilities grant privilege)
>>
>> Conversely, if I unshare one user_ns with a MS_SHARED mnt_ns, mount
>> an ext4fs, and then (from the parent shell) unshare another user_ns
>> with the same mapping, intending it to be a "peer" to the first one
>> I'd unshared and be able to use the ext4fs it mounted.  This won't
>> work here.  That's probably best - the appropriate thing to do was
>> to attach to the existing user_ns.  But it could end up being
>> limiting in some special cases, so I'm bringing it up here.
>>
>> Again I think what you have here is the simplest and most sensible
>> choice, so ack.
>>
>
> I think I'm missing something.  Why is this separate from mount_may_suid?
>
> I can see why it would make sense to check s_user_ns (or maybe
> s_user_ns *and* the vfsmount namespace) in mount_may_suid, but I don't
> see why we need separate checks.

So I don't quite understand your concerns that lead to the mnt_may_suid
patch.  But in my limited understanding there are two distinct issues.

1) What do file capabilities mean on a filesystem mounted with user
   namespace privileges.  Where the unprivileged user can control what
   resides on disk.

   That is what this patch should be about.

   Meaning and restricting those permissions to unprivileged users.

2) The second issue that I think your mnt_may_suid patch is about seems
   to be what to do if a mount winds up in a place we never intended.

   Aka leaks.  I don't think any changes to mnt_may_suid are necessary
   in that sense.  However they may be useful.

   So I think your mnt_may_suid change may be worth having but so far it
   seems unnecessary.

Which is a long way of saying this patch is fundamentally necessary,
and I am not certain about  the mnt_may_suid patch.

Am I right in understanding it's purpose?  Or does this patch actually
succeed in obsoleting it?

Eric

  reply	other threads:[~2015-07-15 22:41 UTC|newest]

Thread overview: 210+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-15 19:46 [PATCH 0/7] Initial support for user namespace owned mounts Seth Forshee
2015-07-15 19:46 ` Seth Forshee
2015-07-15 19:46 ` [PATCH 1/7] fs: Add user namesapace member to struct super_block Seth Forshee
2015-07-15 19:46   ` Seth Forshee
2015-07-16  2:47   ` Eric W. Biederman
2015-07-16  2:47     ` Eric W. Biederman
2015-08-05 21:03     ` Seth Forshee
2015-08-05 21:03       ` Seth Forshee
2015-08-05 21:19       ` Eric W. Biederman
2015-08-05 21:19         ` Eric W. Biederman
2015-08-06 14:20         ` Seth Forshee
2015-08-06 14:20           ` Seth Forshee
2015-08-06 14:51           ` Stephen Smalley
2015-08-06 14:51             ` Stephen Smalley
2015-08-06 15:44             ` Seth Forshee
2015-08-06 15:44               ` Seth Forshee
2015-08-06 16:11               ` Stephen Smalley
2015-08-06 16:11                 ` Stephen Smalley
2015-08-07 14:16                 ` Seth Forshee
2015-08-07 14:16                   ` Seth Forshee
2015-08-07 14:32           ` Seth Forshee
2015-08-07 14:32             ` Seth Forshee
2015-08-07 18:35             ` Casey Schaufler
2015-08-07 18:35               ` Casey Schaufler
2015-08-07 18:57               ` Seth Forshee
2015-08-07 18:57                 ` Seth Forshee
2015-07-15 19:46 ` [PATCH 2/7] userns: Simpilify MNT_NODEV handling Seth Forshee
2015-07-15 19:46   ` Seth Forshee
2015-07-15 19:46 ` [PATCH 3/7] fs: Ignore file caps in mounts from other user namespaces Seth Forshee
2015-07-15 19:46   ` Seth Forshee
2015-07-15 21:48   ` Serge E. Hallyn
2015-07-15 21:48     ` Serge E. Hallyn
2015-07-15 21:50     ` Andy Lutomirski
2015-07-15 21:50       ` Andy Lutomirski
2015-07-15 22:35       ` Eric W. Biederman [this message]
2015-07-15 22:35         ` Eric W. Biederman
2015-07-16  1:14         ` Seth Forshee
2015-07-16  1:14           ` Seth Forshee
2015-07-16  1:23           ` Andy Lutomirski
2015-07-16  1:23             ` Andy Lutomirski
2015-07-16 13:06             ` Seth Forshee
2015-07-16 13:06               ` Seth Forshee
2015-07-16  1:19         ` Andy Lutomirski
2015-07-16  1:19           ` Andy Lutomirski
2015-07-16  4:23           ` Eric W. Biederman
2015-07-16  4:23             ` Eric W. Biederman
2015-07-16  4:49             ` Andy Lutomirski
2015-07-16  4:49               ` Andy Lutomirski
2015-07-16  5:04               ` Eric W. Biederman
2015-07-16  5:04                 ` Eric W. Biederman
2015-07-16  5:15                 ` Andy Lutomirski
2015-07-16  5:15                   ` Andy Lutomirski
2015-07-16  5:44                   ` Eric W. Biederman
2015-07-16  5:44                     ` Eric W. Biederman
2015-07-16 13:13                     ` Seth Forshee
2015-07-16 13:13                       ` Seth Forshee
2015-07-17  0:43                       ` Eric W. Biederman
2015-07-17  0:43                         ` Eric W. Biederman
2015-07-29 16:04                 ` Serge E. Hallyn
2015-07-29 16:04                   ` Serge E. Hallyn
2015-07-29 16:18                   ` Serge E. Hallyn
2015-07-29 16:18                     ` Serge E. Hallyn
2015-07-15 19:46 ` [PATCH 4/7] fs: Treat foreign mounts as nosuid Seth Forshee
2015-07-15 19:46   ` Seth Forshee
2015-07-17  6:46   ` Nikolay Borisov
2015-07-17  6:46     ` Nikolay Borisov
2015-07-15 19:46 ` [PATCH 5/7] security: Restrict security attribute updates for userns mounts Seth Forshee
2015-07-15 19:46   ` Seth Forshee
2015-07-15 19:46 ` [PATCH 6/7] selinux: Ignore security labels on user namespace mounts Seth Forshee
2015-07-15 19:46   ` Seth Forshee
2015-07-16 13:23   ` Stephen Smalley
2015-07-22 16:02     ` Stephen Smalley
2015-07-22 16:14       ` Seth Forshee
2015-07-22 16:14         ` Seth Forshee
2015-07-22 20:25         ` Stephen Smalley
2015-07-22 20:25           ` Stephen Smalley
2015-07-22 20:40           ` Stephen Smalley
2015-07-22 20:40             ` Stephen Smalley
2015-07-23 13:57             ` Stephen Smalley
2015-07-23 13:57               ` Stephen Smalley
2015-07-23 14:39               ` Seth Forshee
2015-07-23 14:39                 ` Seth Forshee
2015-07-23 15:36                 ` Stephen Smalley
2015-07-23 15:36                   ` Stephen Smalley
2015-07-23 16:23                   ` Seth Forshee
2015-07-23 16:23                     ` Seth Forshee
2015-07-24 15:11                     ` Seth Forshee
2015-07-24 15:11                       ` Seth Forshee
2015-07-30 15:57                       ` Stephen Smalley
2015-07-30 15:57                         ` Stephen Smalley
2015-07-30 16:24                         ` Seth Forshee
2015-07-30 16:24                           ` Seth Forshee
2015-07-15 19:46 ` [PATCH 7/7] smack: Don't use security labels for " Seth Forshee
2015-07-15 19:46   ` Seth Forshee
2015-07-15 20:43   ` Casey Schaufler
2015-07-15 20:43     ` Casey Schaufler
2015-07-15 20:36 ` [PATCH 0/7] Initial support for user namespace owned mounts Casey Schaufler
2015-07-15 20:36   ` Casey Schaufler
2015-07-15 21:06   ` Eric W. Biederman
2015-07-15 21:06     ` Eric W. Biederman
2015-07-15 21:48     ` Seth Forshee
2015-07-15 21:48       ` Seth Forshee
2015-07-15 22:28       ` Eric W. Biederman
2015-07-15 22:28         ` Eric W. Biederman
2015-07-16  1:05         ` Andy Lutomirski
2015-07-16  1:05           ` Andy Lutomirski
2015-07-16  2:20           ` Eric W. Biederman
2015-07-16  2:20             ` Eric W. Biederman
2015-07-16 13:12           ` Stephen Smalley
2015-07-16 13:12             ` Stephen Smalley
2015-07-15 23:04       ` Casey Schaufler
2015-07-15 23:04         ` Casey Schaufler
2015-07-15 22:39     ` Casey Schaufler
2015-07-15 22:39       ` Casey Schaufler
2015-07-16  1:08       ` Andy Lutomirski
2015-07-16  1:08         ` Andy Lutomirski
2015-07-16  2:54         ` Casey Schaufler
2015-07-16  2:54           ` Casey Schaufler
2015-07-16  4:47           ` Eric W. Biederman
2015-07-16  4:47             ` Eric W. Biederman
2015-07-17  0:09             ` Dave Chinner
2015-07-17  0:09               ` Dave Chinner
2015-07-17  0:42               ` Eric W. Biederman
2015-07-17  0:42                 ` Eric W. Biederman
2015-07-17  2:47                 ` Dave Chinner
2015-07-17  2:47                   ` Dave Chinner
2015-07-21 17:37                   ` J. Bruce Fields
2015-07-21 17:37                     ` J. Bruce Fields
2015-07-22  7:56                     ` Dave Chinner
2015-07-22  7:56                       ` Dave Chinner
2015-07-22 14:09                       ` J. Bruce Fields
2015-07-22 14:09                         ` J. Bruce Fields
2015-07-22 16:52                         ` Austin S Hemmelgarn
2015-07-22 16:52                           ` Austin S Hemmelgarn
2015-07-22 17:41                           ` J. Bruce Fields
2015-07-22 17:41                             ` J. Bruce Fields
2015-07-23  1:51                             ` Dave Chinner
2015-07-23  1:51                               ` Dave Chinner
2015-07-23 13:19                               ` J. Bruce Fields
2015-07-23 13:19                                 ` J. Bruce Fields
2015-07-23 23:48                                 ` Dave Chinner
2015-07-23 23:48                                   ` Dave Chinner
2015-07-18  0:07                 ` Serge E. Hallyn
2015-07-18  0:07                   ` Serge E. Hallyn
2015-07-20 17:54             ` Colin Walters
2015-07-20 17:54               ` Colin Walters
2015-07-16 11:16     ` Lukasz Pawelczyk
2015-07-16 11:16       ` Lukasz Pawelczyk
2015-07-17  0:10       ` Eric W. Biederman
2015-07-17  0:10         ` Eric W. Biederman
2015-07-17 10:13         ` Lukasz Pawelczyk
2015-07-17 10:13           ` Lukasz Pawelczyk
2015-07-16  3:15 ` Eric W. Biederman
2015-07-16  3:15   ` Eric W. Biederman
2015-07-16 13:59   ` Seth Forshee
2015-07-16 13:59     ` Seth Forshee
2015-07-16 15:09     ` Casey Schaufler
2015-07-16 15:09       ` Casey Schaufler
2015-07-16 18:57       ` Seth Forshee
2015-07-16 18:57         ` Seth Forshee
2015-07-16 21:42         ` Casey Schaufler
2015-07-16 21:42           ` Casey Schaufler
2015-07-16 22:27           ` Andy Lutomirski
2015-07-16 22:27             ` Andy Lutomirski
2015-07-16 23:08             ` Casey Schaufler
2015-07-16 23:08               ` Casey Schaufler
2015-07-16 23:29               ` Andy Lutomirski
2015-07-16 23:29                 ` Andy Lutomirski
2015-07-17  0:45                 ` Casey Schaufler
2015-07-17  0:45                   ` Casey Schaufler
2015-07-17  0:59                   ` Andy Lutomirski
2015-07-17  0:59                     ` Andy Lutomirski
2015-07-17 14:28                     ` Serge E. Hallyn
2015-07-17 14:28                       ` Serge E. Hallyn
2015-07-17 14:56                       ` Seth Forshee
2015-07-17 14:56                         ` Seth Forshee
2015-07-21 20:35                     ` Seth Forshee
2015-07-21 20:35                       ` Seth Forshee
2015-07-22  1:52                       ` Casey Schaufler
2015-07-22  1:52                         ` Casey Schaufler
2015-07-22 15:56                         ` Seth Forshee
2015-07-22 15:56                           ` Seth Forshee
2015-07-22 18:10                           ` Casey Schaufler
2015-07-22 18:10                             ` Casey Schaufler
2015-07-22 19:32                             ` Seth Forshee
2015-07-22 19:32                               ` Seth Forshee
2015-07-23  0:05                               ` Casey Schaufler
2015-07-23  0:05                                 ` Casey Schaufler
2015-07-23  0:15                                 ` Eric W. Biederman
2015-07-23  0:15                                   ` Eric W. Biederman
2015-07-23  5:15                                   ` Seth Forshee
2015-07-23  5:15                                     ` Seth Forshee
2015-07-23 21:48                                   ` Casey Schaufler
2015-07-23 21:48                                     ` Casey Schaufler
2015-07-28 20:40                                 ` Seth Forshee
2015-07-28 20:40                                   ` Seth Forshee
2015-07-30 16:18                                   ` Casey Schaufler
2015-07-30 16:18                                     ` Casey Schaufler
2015-07-30 17:05                                     ` Eric W. Biederman
2015-07-30 17:05                                       ` Eric W. Biederman
2015-07-30 17:25                                       ` Seth Forshee
2015-07-30 17:25                                         ` Seth Forshee
2015-07-30 17:33                                         ` Eric W. Biederman
2015-07-30 17:33                                           ` Eric W. Biederman
2015-07-17 13:21           ` Seth Forshee
2015-07-17 13:21             ` Seth Forshee
2015-07-17 17:14             ` Casey Schaufler
2015-07-17 17:14               ` Casey Schaufler
2015-07-16 15:59     ` Seth Forshee
2015-07-16 15:59       ` Seth Forshee

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=87wpy1camr.fsf@x220.int.ebiederm.org \
    --to=ebiederm@xmission.com \
    --cc=james.l.morris@oracle.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=luto@amacapital.net \
    --cc=selinux@tycho.nsa.gov \
    --cc=serge.hallyn@canonical.com \
    --cc=serge@hallyn.com \
    --cc=seth.forshee@canonical.com \
    --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.