From: Eric Paris <eparis-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: Serge Hallyn <serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
Cc: richard-/L3Ra7n9ekc@public.gmane.org,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org
Subject: Re: [PATCH 6/6] protect cap_netlink_recv from user namespaces
Date: Mon, 07 Nov 2011 14:35:10 -0500 [thread overview]
Message-ID: <1320694510.10093.23.camel@localhost> (raw)
In-Reply-To: <1320445482-8459-7-git-send-email-serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
On Fri, 2011-11-04 at 22:24 +0000, Serge Hallyn wrote:
> From: Serge E. Hallyn <serge.hallyn-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
>
> cap_netlink_recv() was granting privilege if a capability is in
> current_cap(), regardless of the user namespace. Fix that by
> targeting the capability check against the user namespace which
> owns the skb.
>
> Caller passes the user ns down because sock_net is static inline defined in
> net/sock.h, which we'd rather not #include at the cap_netlink_recv function.
This is wrong at least in relation to audit. I don't know the other
code well enough to know if I think it's ok there. Lets say I have
(CAP_SYS_ADMIN | CAP_SETUID | CAP_SETGID) and I create a new task with
CLONE_NEWNAME. This task then immediately does the needful to remove
all audit rules (which supposedly requires CAP_AUDIT_CONTROL). That's
going to succeed because the task is init in it's namespace, aka:
/* The creator of the user namespace has all caps. */
if (targ_ns != &init_user_ns && targ_ns->creator == cred->user)
return 0;
But it just screwed with a global resource. aka audit. I don't know
the meaning of these others, but it seems to me probably most or all of
them should be against the init_user_ns, not the namespace the skb came
from....
What am I missing?
-Eric
WARNING: multiple messages have this Message-ID (diff)
From: Eric Paris <eparis@redhat.com>
To: Serge Hallyn <serge@hallyn.com>
Cc: linux-kernel@vger.kernel.org,
containers@lists.linux-foundation.org, oleg@redhat.com,
richard@nod.at, akpm@linux-foundation.org, ebiederm@xmission.com,
dhowells@redhat.com,
"Serge E. Hallyn" <serge.hallyn@canonical.com>
Subject: Re: [PATCH 6/6] protect cap_netlink_recv from user namespaces
Date: Mon, 07 Nov 2011 14:35:10 -0500 [thread overview]
Message-ID: <1320694510.10093.23.camel@localhost> (raw)
In-Reply-To: <1320445482-8459-7-git-send-email-serge@hallyn.com>
On Fri, 2011-11-04 at 22:24 +0000, Serge Hallyn wrote:
> From: Serge E. Hallyn <serge.hallyn@canonical.com>
>
> cap_netlink_recv() was granting privilege if a capability is in
> current_cap(), regardless of the user namespace. Fix that by
> targeting the capability check against the user namespace which
> owns the skb.
>
> Caller passes the user ns down because sock_net is static inline defined in
> net/sock.h, which we'd rather not #include at the cap_netlink_recv function.
This is wrong at least in relation to audit. I don't know the other
code well enough to know if I think it's ok there. Lets say I have
(CAP_SYS_ADMIN | CAP_SETUID | CAP_SETGID) and I create a new task with
CLONE_NEWNAME. This task then immediately does the needful to remove
all audit rules (which supposedly requires CAP_AUDIT_CONTROL). That's
going to succeed because the task is init in it's namespace, aka:
/* The creator of the user namespace has all caps. */
if (targ_ns != &init_user_ns && targ_ns->creator == cred->user)
return 0;
But it just screwed with a global resource. aka audit. I don't know
the meaning of these others, but it seems to me probably most or all of
them should be against the init_user_ns, not the namespace the skb came
from....
What am I missing?
-Eric
next prev parent reply other threads:[~2011-11-07 19:35 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-04 22:24 user namespaces: fix some uid/privilege leaks Serge Hallyn
2011-11-04 22:24 ` Serge Hallyn
[not found] ` <1320445482-8459-1-git-send-email-serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
2011-11-04 22:24 ` [PATCH 1/6] user namespace: make signal.c respect user namespaces (v4) Serge Hallyn
2011-11-04 22:24 ` Serge Hallyn
[not found] ` <1320445482-8459-2-git-send-email-serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
2011-11-09 0:22 ` Andrew Morton
2011-11-09 0:22 ` Andrew Morton
2011-11-09 14:18 ` Serge E. Hallyn
2011-11-10 1:41 ` Matt Helsley
2011-11-10 1:41 ` Matt Helsley
[not found] ` <20111110014114.GB26567-52DBMbEzqgQ/wnmkkaCWp/UQ3DHhIser@public.gmane.org>
2011-11-10 14:27 ` Serge E. Hallyn
2011-11-10 14:27 ` Serge E. Hallyn
[not found] ` <20111108162216.1ffb3e9a.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2011-11-09 14:18 ` Serge E. Hallyn
2011-11-04 22:24 ` [PATCH 2/6] User namespace: don't allow sysctl in non-init user ns (v2) Serge Hallyn
2011-11-04 22:24 ` Serge Hallyn
2011-11-04 22:24 ` [PATCH 3/6] user namespace: clamp down users of cap_raised Serge Hallyn
2011-11-04 22:24 ` Serge Hallyn
[not found] ` <1320445482-8459-4-git-send-email-serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
2011-11-06 1:14 ` Andrew G. Morgan
2011-11-06 1:14 ` Andrew G. Morgan
2011-11-04 22:24 ` [PATCH 4/6] Add Documentation/namespaces/user_namespace.txt (v3) Serge Hallyn
2011-11-04 22:24 ` Serge Hallyn
2011-11-04 22:24 ` [PATCH 5/6] user namespace: make each net (net_ns) belong to a user_ns Serge Hallyn
2011-11-04 22:24 ` Serge Hallyn
2011-11-04 22:24 ` [PATCH 6/6] protect cap_netlink_recv from user namespaces Serge Hallyn
2011-11-04 22:24 ` Serge Hallyn
[not found] ` <1320445482-8459-7-git-send-email-serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
2011-11-07 19:35 ` Eric Paris [this message]
2011-11-07 19:35 ` Eric Paris
2011-11-08 3:29 ` Serge E. Hallyn
2011-11-08 3:29 ` Serge E. Hallyn
[not found] ` <20111108032902.GA29433-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>
2011-11-09 14:19 ` Eric Paris
2011-11-09 14:19 ` Eric Paris
2011-11-09 14:44 ` Serge E. Hallyn
2011-11-09 14:44 ` Serge E. Hallyn
2011-11-19 9:10 ` Eric W. Biederman
2011-11-19 9:10 ` Eric W. Biederman
[not found] ` <m11ut41nqy.fsf-+imSwln9KH6u2/kzUuoCbdi2O/JbrIOy@public.gmane.org>
2011-11-19 23:25 ` Serge E. Hallyn
2011-11-19 23:25 ` Serge E. Hallyn
2011-11-11 4:13 ` user namespaces: fix some uid/privilege leaks Serge E. Hallyn
2011-11-11 4:13 ` 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=1320694510.10093.23.camel@localhost \
--to=eparis-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=ebiederm-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=richard-/L3Ra7n9ekc@public.gmane.org \
--cc=serge-A9i7LUbDfNHQT0dZR+AlfA@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.