From: Eric Paris <eparis@redhat.com>
To: "Serge E. Hallyn" <serge@canonical.com>
Cc: linux-kernel@vger.kernel.org,
linux-security-module@vger.kernel.org, sgrubb@redhat.com,
Andrew Morgan <morgan@kernel.org>
Subject: Re: [PATCH] System Wide Capability Bounding Set
Date: Fri, 14 Jan 2011 14:50:57 -0500 [thread overview]
Message-ID: <1295034658.2816.16.camel@localhost.localdomain> (raw)
In-Reply-To: <20110111220201.GA6446@localhost>
On Tue, 2011-01-11 at 16:02 -0600, Serge E. Hallyn wrote:
> Quoting Eric Paris (eparis@redhat.com):
> > @@ -305,6 +310,8 @@ static inline int bprm_caps_from_vfs_caps(struct cpu_vfs_cap_data *caps,
> > new->cap_permitted.cap[i] =
> > (new->cap_bset.cap[i] & permitted) |
> > (new->cap_inheritable.cap[i] & inheritable);
> > + /* the global set is global damn it */
> > + new->cap_permitted.cap[i] &= global_cap_bset.cap[i];
>
> [ If I'm thinking right: ]
>
> Global may be global, but you're changing the formula (here, for a
> non-root task executing a file with filecaps) from
>
> pP' = (X & fP) | (pI & fI)
>
> to
>
> A = (X & FP) | (pI & fI)
> pP'= Z & A // Z == global bounding set
>
> In other words, you are not simply enforcing "the intersection of
> the global and per-process bounding sets".
>
> Whereas,
>
> > if (permitted & ~new->cap_permitted.cap[i])
> > /* insufficient to execute correctly */
> > @@ -438,6 +445,9 @@ int cap_bprm_set_creds(struct linux_binprm *bprm)
> > return ret;
> >
> > if (!issecure(SECURE_NOROOT)) {
> > + kernel_cap_t bset = cap_intersect(old->cap_bset,
> > + global_cap_bset);
> > +
> > /*
> > * If the legacy file capability is set, then don't set privs
> > * for a setuid root binary run by a non-root user. Do set it
> > @@ -456,8 +466,7 @@ int cap_bprm_set_creds(struct linux_binprm *bprm)
> > */
> > if (new->euid == 0 || new->uid == 0) {
> > /* pP' = (cap_bset & ~0) | (pI & ~0) */
> > - new->cap_permitted = cap_combine(old->cap_bset,
> > - old->cap_inheritable);
> > + new->cap_permitted = cap_combine(bset, old->cap_inheritable);
>
> here (for a root task) you are using
>
> pP' = (Z & X) | pI
>
> So the inheritable tasks get masked with the global bounding set for
> non-root tasks, but not for root tasks.
I believe you are thinking correctly and I am wrong. Someone else has
some other issues with the patch but would prefer to keep that
conversation offline. I will certainly be back with changes and
explanation of changes (hopefully shortly)
Thanks Serge!
-Eric
next prev parent reply other threads:[~2011-01-14 19:51 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-05 22:25 [PATCH] System Wide Capability Bounding Set Eric Paris
2011-01-06 11:30 ` Tetsuo Handa
2011-01-06 16:44 ` Theodore Tso
2011-01-11 22:02 ` Serge E. Hallyn
2011-01-11 22:12 ` Serge E. Hallyn
2011-01-14 19:50 ` Eric Paris [this message]
2011-01-17 3:16 ` Andrew G. Morgan
2011-01-21 21:25 ` Eric Paris
2011-01-23 3:39 ` Andrew G. Morgan
2011-01-24 21:40 ` Serge Hallyn
2011-01-26 23:34 ` Eric Paris
2011-01-27 14:02 ` Serge E. Hallyn
2011-01-27 14:42 ` Steve Grubb
2011-01-27 16:43 ` Andrew G. Morgan
[not found] ` <AANLkTi=k5QeE_-iNuW3-M5K3BnBtRxk-QYO5624HKrpE@mail.gmail.com>
2011-01-27 16:50 ` Steve Grubb
2011-01-28 18:19 ` Eric Paris
2011-01-28 18:49 ` Serge E. Hallyn
2011-01-28 19:10 ` Steve Grubb
2011-01-28 19:38 ` Serge E. Hallyn
2011-01-28 22:24 ` Eric Paris
2011-02-01 18:17 ` Eric Paris
2011-02-01 21:26 ` Serge E. Hallyn
2011-02-02 4:02 ` Andrew G. Morgan
2011-02-08 2:55 ` Eric Paris
2011-02-14 20:45 ` Eric Paris
2011-02-14 21:24 ` Serge E. Hallyn
2011-02-18 0:29 ` Serge E. Hallyn
2011-01-27 14:26 ` Andrew G. Morgan
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=1295034658.2816.16.camel@localhost.localdomain \
--to=eparis@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=morgan@kernel.org \
--cc=serge@canonical.com \
--cc=sgrubb@redhat.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.