All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marian Marinov <mm-108MBtLGafw@public.gmane.org>
To: Serge Hallyn
	<serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org>,
	Theodore Ts'o <tytso-3s7WtUTddSA@public.gmane.org>,
	containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
	LXC development mailing-list
	<lxc-devel-cunTk1MwBs9qMoObBWhMNEqPaTDuhLve2LY78lusg7I@public.gmane.org>,
	"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: ioctl CAP_LINUX_IMMUTABLE is checked in the wrong namespace
Date: Wed, 30 Apr 2014 00:49:15 +0300	[thread overview]
Message-ID: <53601E5B.5050004@1h.com> (raw)
In-Reply-To: <20140429185251.GA27969@ubuntumail>

On 04/29/2014 09:52 PM, Serge Hallyn wrote:
> Quoting Theodore Ts'o (tytso-3s7WtUTddSA@public.gmane.org):
>> On Tue, Apr 29, 2014 at 04:49:14PM +0300, Marian Marinov wrote:
>>>
>>> I'm proposing a fix to this, by replacing the capable(CAP_LINUX_IMMUTABLE)
>>> check with ns_capable(current_cred()->user_ns, CAP_LINUX_IMMUTABLE).
>>
>> Um, wouldn't it be better to simply fix the capable() function?
>>
>> /**
>>   * capable - Determine if the current task has a superior capability in effect
>>   * @cap: The capability to be tested for
>>   *
>>   * Return true if the current task has the given superior capability currently
>>   * available for use, false if not.
>>   *
>>   * This sets PF_SUPERPRIV on the task if the capability is available on the
>>   * assumption that it's about to be used.
>>   */
>> bool capable(int cap)
>> {
>> 	return ns_capable(&init_user_ns, cap);
>> }
>> EXPORT_SYMBOL(capable);
>>
>> The documentation states that it is for "the current task", and I
>> can't imagine any use case, where user namespaces are in effect, where
>> using init_user_ns would ever make sense.
>
> the init_user_ns represents the user_ns owning the object, not the
> subject.
>
> The patch by Marian is wrong.  Anyone can do 'clone(CLONE_NEWUSER)',
> setuid(0), execve, and end up satisfying 'ns_capable(current_cred()->userns,
> CAP_SYS_IMMUTABLE)' by definition.
>
> So NACK to that particular patch.  I'm not sure, but IIUC it should be
> safe to check against the userns owning the inode?
>

So what you are proposing is to replace 'ns_capable(current_cred()->userns, CAP_SYS_IMMUTABLE)' with
'inode_capable(inode, CAP_SYS_IMMUTABLE)' ?

I agree that this is more sane.

Marian

>> No?  Otherwise, pretty much every single use of capable() would be
>> broken, not just this once instances in ext4/ioctl.c.
>>
>> 					- Ted
>> _______________________________________________
>> Containers mailing list
>> Containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
>> https://lists.linuxfoundation.org/mailman/listinfo/containers
>


-- 
Marian Marinov
Founder & CEO of 1H Ltd.
Jabber/GTalk: hackman-/eSpBmjxGS4dnm+yROfE0A@public.gmane.org
ICQ: 7556201
Mobile: +359 886 660 270

WARNING: multiple messages have this Message-ID (diff)
From: Marian Marinov <mm@1h.com>
To: Serge Hallyn <serge.hallyn@ubuntu.com>,
	"Theodore Ts'o" <tytso@mit.edu>,
	containers@lists.linux-foundation.org,
	LXC development mailing-list 
	<lxc-devel@lists.linuxcontainers.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: ioctl CAP_LINUX_IMMUTABLE is checked in the wrong namespace
Date: Wed, 30 Apr 2014 00:49:15 +0300	[thread overview]
Message-ID: <53601E5B.5050004@1h.com> (raw)
In-Reply-To: <20140429185251.GA27969@ubuntumail>

On 04/29/2014 09:52 PM, Serge Hallyn wrote:
> Quoting Theodore Ts'o (tytso@mit.edu):
>> On Tue, Apr 29, 2014 at 04:49:14PM +0300, Marian Marinov wrote:
>>>
>>> I'm proposing a fix to this, by replacing the capable(CAP_LINUX_IMMUTABLE)
>>> check with ns_capable(current_cred()->user_ns, CAP_LINUX_IMMUTABLE).
>>
>> Um, wouldn't it be better to simply fix the capable() function?
>>
>> /**
>>   * capable - Determine if the current task has a superior capability in effect
>>   * @cap: The capability to be tested for
>>   *
>>   * Return true if the current task has the given superior capability currently
>>   * available for use, false if not.
>>   *
>>   * This sets PF_SUPERPRIV on the task if the capability is available on the
>>   * assumption that it's about to be used.
>>   */
>> bool capable(int cap)
>> {
>> 	return ns_capable(&init_user_ns, cap);
>> }
>> EXPORT_SYMBOL(capable);
>>
>> The documentation states that it is for "the current task", and I
>> can't imagine any use case, where user namespaces are in effect, where
>> using init_user_ns would ever make sense.
>
> the init_user_ns represents the user_ns owning the object, not the
> subject.
>
> The patch by Marian is wrong.  Anyone can do 'clone(CLONE_NEWUSER)',
> setuid(0), execve, and end up satisfying 'ns_capable(current_cred()->userns,
> CAP_SYS_IMMUTABLE)' by definition.
>
> So NACK to that particular patch.  I'm not sure, but IIUC it should be
> safe to check against the userns owning the inode?
>

So what you are proposing is to replace 'ns_capable(current_cred()->userns, CAP_SYS_IMMUTABLE)' with
'inode_capable(inode, CAP_SYS_IMMUTABLE)' ?

I agree that this is more sane.

Marian

>> No?  Otherwise, pretty much every single use of capable() would be
>> broken, not just this once instances in ext4/ioctl.c.
>>
>> 					- Ted
>> _______________________________________________
>> Containers mailing list
>> Containers@lists.linux-foundation.org
>> https://lists.linuxfoundation.org/mailman/listinfo/containers
>


-- 
Marian Marinov
Founder & CEO of 1H Ltd.
Jabber/GTalk: hackman@jabber.org
ICQ: 7556201
Mobile: +359 886 660 270

  reply	other threads:[~2014-04-29 21:49 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 [this message]
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
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
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
     [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=53601E5B.5050004@1h.com \
    --to=mm-108mbtlgafw@public.gmane.org \
    --cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=lxc-devel-cunTk1MwBs9qMoObBWhMNEqPaTDuhLve2LY78lusg7I@public.gmane.org \
    --cc=serge.hallyn-GeWIH/nMZzLQT0dZR+AlfA@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.