From: ebiederm@xmission.com (Eric W. Biederman)
To: "Maciej Żenczykowski" <zenczykowski@gmail.com>
Cc: "Maciej Żenczykowski" <maze@google.com>,
linux-security-module@vger.kernel.org,
"Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
"Mahesh Bandewar" <maheshb@google.com>,
"Willem de Bruijn" <willemb@google.com>,
"Linux Containers" <containers@lists.linux-foundation.org>
Subject: Re: [PATCH] userns: honour no_new_privs for cap_bset during user ns creation/switch
Date: Thu, 21 Dec 2017 15:44:53 -0600 [thread overview]
Message-ID: <87wp1foiwa.fsf@xmission.com> (raw)
In-Reply-To: <20171221210605.181720-1-zenczykowski@gmail.com> ("Maciej \=\?utf-8\?Q\?\=C5\=BBenczykowski\=22's\?\= message of "Thu, 21 Dec 2017 13:06:05 -0800")
Maciej Żenczykowski <zenczykowski@gmail.com> writes:
> From: Maciej Żenczykowski <maze@google.com>
>
> This allows locking down user namespaces tighter,
> and it could even be considered a security fix.
No. This makes no logical sense.
A task that enters a user namespace loses all capabilities to everything
outside of the user namespace. Capabilities inside a user namespace are
only valid for objects created inside that user namespace.
So limiting capabilities inside a user namespace when the capability
bounding set is already fully honored by not giving the processes any of
those capabilities makes no logical sense.
If the concern is kernel attack surface versus logical permissions we
can look at ways to reduce the attack surface but that needs to be fully
discussed in the change log.
> Signed-off-by: Maciej Żenczykowski <maze@google.com>
> ---
> kernel/user_namespace.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/kernel/user_namespace.c b/kernel/user_namespace.c
> index 246d4d4ce5c7..2354f7ade78a 100644
> --- a/kernel/user_namespace.c
> +++ b/kernel/user_namespace.c
> @@ -50,11 +50,12 @@ static void set_cred_user_ns(struct cred *cred, struct user_namespace *user_ns)
> * anything as the capabilities are bound to the new user namespace.
> */
> cred->securebits = SECUREBITS_DEFAULT;
> + cred->cap_bset = task_no_new_privs(current) ? current_cred()->cap_bset
> + : CAP_FULL_SET;
> cred->cap_inheritable = CAP_EMPTY_SET;
> - cred->cap_permitted = CAP_FULL_SET;
> - cred->cap_effective = CAP_FULL_SET;
> + cred->cap_permitted = cred->cap_bset;
> + cred->cap_effective = cred->cap_bset;
> cred->cap_ambient = CAP_EMPTY_SET;
> - cred->cap_bset = CAP_FULL_SET;
> #ifdef CONFIG_KEYS
> key_put(cred->request_key_auth);
> cred->request_key_auth = NULL;
next prev parent reply other threads:[~2017-12-21 21:45 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-21 21:06 [PATCH] userns: honour no_new_privs for cap_bset during user ns creation/switch Maciej Żenczykowski
2017-12-21 21:44 ` Eric W. Biederman [this message]
2017-12-22 1:03 ` Maciej Żenczykowski
2017-12-22 1:18 ` Eric W. Biederman
2017-12-22 1:51 ` Maciej Żenczykowski
2017-12-22 14:08 ` Eric W. Biederman
2018-01-03 11:23 ` Christian Brauner
2017-12-22 2:17 ` Aleksa Sarai
2017-12-22 14:21 ` Eric W. Biederman
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=87wp1foiwa.fsf@xmission.com \
--to=ebiederm@xmission.com \
--cc=containers@lists.linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=maheshb@google.com \
--cc=maze@google.com \
--cc=willemb@google.com \
--cc=zenczykowski@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).