From: Andy Lutomirski <luto@stanford.edu>
To: Michael Glasgow <glasgow@beer.net>
Cc: linux-kernel@vger.kernel.org
Subject: Re: posix capabilities inheritance
Date: Wed, 22 Oct 2003 12:40:54 -0700 [thread overview]
Message-ID: <3F96DD46.2030206@stanford.edu> (raw)
In-Reply-To: <200310220711.h9M7BKAf099719@dark.beer.net>
Michael Glasgow wrote:
>
> Certainly with the current rule as implemented in 2.4, it looks as
> though you can regain permitted flags: pP' = (fP & X) | (fI & pI)
>
> Is this what you mean when you say they can reappear?
yes. Intuitively, a process w/o some permitted capability should _never_
(unless fP != 0) get that capability back by calling exec. This happens in 2.4
and 2.6 in a worse way right now, though. Any uid=0 process that calls exec (if
cap_bset is untouched) will regain all capabilities, making it (mostly)
ineffective to restrict root processes. At the same time, non-root processes
with extra caps can't usefully call helpers. I think this is the problem you
originally noticed.
> [...] WRT the
> spec itself, I don't see this assumption. The rule could just as
> easily be: pP' = (fP & X) | (pP & fI & pI) (just an example)
> The rule in your patch seems like it should be compliant as well.
Maybe I misread the spec, but I thought it explicitly stated
pP' = (fP & X) | (fI & pI)
(I can't find it right now, though...)
>>2. If a process has pE < pP (i.e. some caps disabled, e.g. uid=0,
>>euid!=0), and exec's fE=full, then its capabilities get re-enabled.
>>This seems like a pretty serious breakage of userspace.
>
>
> How is this any different from traditional *nix setuid semantics?
> I suppose I can see your point somewhat if you are concerned
> specifically about the case where pE < pP execs fE=full && fP=0,
> but I am unconvinced this constitutes serious breakage. On the
> contrary, I think it seems most reasonable for those caps to be
> reenabled, especially for caps where fI=1, but perhaps even when
> fI=0.
I would hope that, on a system that supports file capabilities, a file w/o
capabilities set and w/o setuid would behave exactly like a file with some
"default" capabilities. In my patch, these capabilities are (=ei). In mainline
Linux, there is no such capability set (witness the logic in
cap_binprm_set_security).
As a test, this is IMHO correct: (-test-6 + my patch + both options on)
$ cp `which bash` .
$ chmod 4755 bash
$ su
Password:
# ./bash -p
$ dumpcap [a trivial program I wrote]
Real Eff
User 0 500
Group 0 0
Caps: =ip
The bash -p process has uid = 0, euid = 500. When it execs dumpcap, neither its
uid nor its euid change, so, in traditional POSIX, it should have no effective
capabilities (as it acts like uid 500). (Should it have CAP_SETUID? My patch
doesn't change this behavior, but I'm not sure it's correct right now.)
With the (POSIX) rule pE' = pP' & fE, the dumpcap process would have been uid=0,
euid=500, and all caps effective, which is inconsistant with traditional
semantics. Linux currently works correctly because fE and fP are dependent on
initial uid and euid.
--Andy
next prev parent reply other threads:[~2003-10-22 19:41 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fa.f36f4t9.1rg8j3v@ifi.uio.no>
2003-10-22 7:11 ` posix capabilities inheritance Michael Glasgow
2003-10-22 19:40 ` Andy Lutomirski [this message]
[not found] <fa.f26d55g.1qgijbi@ifi.uio.no>
[not found] ` <fa.hq0dft9.9i0obd@ifi.uio.no>
2003-10-24 21:24 ` Andy Lutomirski
[not found] <fa.n4rmmgg.2423pm@ifi.uio.no>
[not found] ` <fa.l1oevhb.1s5k583@ifi.uio.no>
2003-10-24 8:44 ` Andy Lutomirski
2003-10-24 12:41 ` Theodore Ts'o
2003-10-24 16:44 ` Andy Lutomirski
2003-10-24 20:58 ` David Wagner
[not found] <fa.f4bs2b4.fhub0m@ifi.uio.no>
2003-10-23 22:05 ` Michael Glasgow
2003-10-23 22:59 ` Theodore Ts'o
2003-10-24 1:36 ` Ernie Petrides
2003-10-24 2:19 ` Bernd Eckenfels
2003-10-24 5:10 ` Ernie Petrides
2003-10-25 19:51 ` Pavel Machek
2003-10-23 1:41 Albert Cahalan
[not found] <fa.f9mv0tb.27sf3j@ifi.uio.no>
2003-10-23 1:36 ` Michael Glasgow
2003-10-23 1:57 ` Andy Lutomirski
[not found] <fa.hehull9.10mmngt@ifi.uio.no>
2003-10-21 18:24 ` Andy Lutomirski
-- strict thread matches above, loose matches on Subject: below --
2003-10-21 11:26 Michael Glasgow
2003-10-23 16:46 ` Theodore Ts'o
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=3F96DD46.2030206@stanford.edu \
--to=luto@stanford.edu \
--cc=glasgow@beer.net \
--cc=linux-kernel@vger.kernel.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 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).