From: Topi Miettinen <toiwoton@gmail.com>
To: Andy Lutomirski <luto@amacapital.net>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Alexander Viro" <viro@zeniv.linux.org.uk>,
"Ingo Molnar" <mingo@redhat.com>,
"Peter Zijlstra" <peterz@infradead.org>,
"Serge Hallyn" <serge.hallyn@canonical.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Kees Cook" <keescook@chromium.org>,
"Christoph Lameter" <cl@linux.com>,
"Serge E. Hallyn" <serge.hallyn@ubuntu.com>,
"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
"Richard W.M. Jones" <rjones@redhat.com>,
"Iago López Galeiras" <iago@endocode.com>,
"Chris Metcalf" <cmetcalf@ezchip.com>,
"Andy Lutomirski" <luto@kernel.org>, "Jann Horn" <jann@thejh.net>,
"open list:FILESYSTEMS (VFS and infrastructure)"
<linux-fsdevel@vger.kernel.org>,
"open list:CAPABILITIES" <linux-security-module@vger.kernel.org>
Subject: Re: [RFC 01/18] capabilities: track actually used capabilities
Date: Mon, 13 Jun 2016 21:48:19 +0000 [thread overview]
Message-ID: <18dc7bfc-7533-1008-4091-5ae0560df21c@gmail.com> (raw)
In-Reply-To: <CALCETrW3SwYPzA5HUKMhpRET4pht-4+eOjHiXFzRqync9Hx3yg@mail.gmail.com>
On 06/13/16 21:12, Andy Lutomirski wrote:
> On Mon, Jun 13, 2016 at 1:45 PM, Topi Miettinen <toiwoton@gmail.com> wrote:
>> On 06/13/16 20:32, Andy Lutomirski wrote:
>>> On Mon, Jun 13, 2016 at 12:44 PM, Topi Miettinen <toiwoton@gmail.com> wrote:
>>>> Track what capabilities are actually used and present the current
>>>> situation in /proc/self/status.
>>>
>>> What for?
>>
>
>>
>> Capabilities
>> [RFC 01/18] capabilities: track actually used capabilities
>>
>> Currently, there is no way to know which capabilities are actually used.
>> Even
>> the source code is only implicit, in-depth knowledge of each capability must
>> be used when analyzing a program to judge which capabilities the program
>> will
>> exercise."
>>
>> Should I perhaps cite some of this in the commit?
>
> Yes, but you should also clarify what users are supposed to do with
> this. Given ambient capabilities, I suspect that you'll find that
> your patch doesn't actually work very well. For example, if you run a
> shell script with ambient caps, then you won't notice caps used by
> short-lived helper processes.
>
Right, I suppose this model works well only within a single process, or
where the helper processes are always unprivileged (like Xorg runs
xkbcomp) or less privileged.
>>
>>>
>>> What is the intended behavior on fork()? Whatever the intended
>>> behavior is, there should IMO be a selftest for it.
>>>
>>> --Andy
>>>
>>
>> The capabilities could be tracked from three points of daemon
>> initialization sequence onwards:
>> fork()
>> setpcap()
>> exec()
>>
>> fork() case would be logical as the /proc entry is per task. But if you
>> consider the tools to set the capabilities (for example systemd unit
>> files), there can be between fork() and exec() further preparations
>> which need more capabilities than the program itself needs.
>>
>> setpcap() is probably the real point after which we are interested if
>> the capabilities are enough.
>>
>> The amount of setup between setpcap() and exec() is probably very low.
>
> When I asked "what is the intended behavior on fork()?", I mean "what
> should CapUsed be after fork()?". The answer should be about four
> words long and should have a test case. There should maybe also be an
> explanation of why the intended behavior is useful.
In this model:
fork: no change
setpcap: no change
exec: reset
But I hadn't thought that much where the reset happens.
>
> But, as I said above, I think that you may need to rethink this
> entirely to make it useful. You might need to do it per process tree
> or per cgroup or something.
>
> --Andy
>
I'd actually prefer the cgroup approach. Though that's much more work
than this simple patch which already gives somewhat useful information
in limited cases (once the logic is correct).
-Topi
next prev parent reply other threads:[~2016-06-13 21:48 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-13 19:44 [RFC 00/18] Present useful limits to user Topi Miettinen
2016-06-13 19:44 ` [RFC 01/18] capabilities: track actually used capabilities Topi Miettinen
2016-06-13 20:32 ` Andy Lutomirski
2016-06-13 20:45 ` Topi Miettinen
2016-06-13 21:12 ` Andy Lutomirski
2016-06-13 21:48 ` Topi Miettinen [this message]
2016-06-13 19:44 ` [RFC 02/18] cgroup_pids: track maximum pids Topi Miettinen
2016-06-13 21:12 ` Tejun Heo
2016-06-13 21:29 ` Topi Miettinen
2016-06-13 21:33 ` Tejun Heo
2016-06-13 21:59 ` Topi Miettinen
2016-06-13 22:09 ` Tejun Heo
2016-07-17 20:11 ` Topi Miettinen
2016-07-19 1:09 ` Tejun Heo
2016-07-19 16:59 ` Topi Miettinen
2016-07-19 18:13 ` Tejun Heo
2016-06-13 19:44 ` [RFC 03/18] memcontrol: present maximum used memory also for cgroup-v2 Topi Miettinen
2016-06-14 7:01 ` Michal Hocko
2016-06-14 15:47 ` Topi Miettinen
2016-06-14 16:04 ` Johannes Weiner
2016-06-14 17:15 ` Topi Miettinen
2016-06-16 10:27 ` Michal Hocko
2016-06-13 19:44 ` [RFC 04/18] device_cgroup: track and present accessed devices Topi Miettinen
2016-06-17 15:22 ` Serge E. Hallyn
2016-06-13 19:44 ` [RFC 05/18] limits: track and present RLIMIT_NOFILE actual max Topi Miettinen
2016-06-13 20:40 ` Andy Lutomirski
2016-06-13 21:13 ` Topi Miettinen
2016-06-13 21:16 ` Andy Lutomirski
2016-06-14 15:21 ` Topi Miettinen
2016-06-13 19:44 ` [RFC 06/18] limits: present RLIMIT_CPU and RLIMIT_RTTIMER current status Topi Miettinen
2016-06-14 9:14 ` Alexey Dobriyan
2016-06-13 19:44 ` [RFC 07/18] limits: track RLIMIT_FSIZE actual max Topi Miettinen
2016-06-13 19:44 ` [RFC 08/18] limits: track RLIMIT_DATA " Topi Miettinen
2016-06-13 19:44 ` [RFC 09/18] limits: track RLIMIT_CORE " Topi Miettinen
2016-06-13 19:44 ` [RFC 10/18] limits: track RLIMIT_STACK " Topi Miettinen
2016-06-13 19:44 ` [RFC 11/18] limits: track and present RLIMIT_NPROC " Topi Miettinen
2016-06-13 22:27 ` Jann Horn
2016-06-14 15:40 ` Topi Miettinen
2016-06-14 23:15 ` Jann Horn
2016-06-13 19:44 ` [RFC 13/18] limits: track RLIMIT_AS " Topi Miettinen
2016-06-13 19:44 ` [RFC 14/18] limits: track RLIMIT_SIGPENDING " Topi Miettinen
2016-06-14 14:50 ` Oleg Nesterov
2016-06-14 15:51 ` Topi Miettinen
2016-06-13 19:44 ` [RFC 15/18] limits: track RLIMIT_MSGQUEUE " Topi Miettinen
2016-06-17 19:52 ` Doug Ledford
2016-06-13 19:44 ` [RFC 16/18] limits: track RLIMIT_NICE " Topi Miettinen
2016-06-13 19:44 ` [RFC 17/18] limits: track RLIMIT_RTPRIO " Topi Miettinen
2016-06-13 19:44 ` [RFC 18/18] proc: present VM_LOCKED memory in /proc/self/maps Topi Miettinen
2016-06-13 20:43 ` Kees Cook
2016-06-13 20:52 ` Topi Miettinen
2016-06-14 19:03 ` [RFC 00/18] Present useful limits to user Konstantin Khlebnikov
2016-06-14 19:46 ` Topi Miettinen
2016-06-15 14:47 ` Austin S. Hemmelgarn
2016-06-18 14:45 ` Konstantin Khlebnikov
2016-06-19 6:38 ` Topi Miettinen
2016-06-20 17:37 ` Austin S. Hemmelgarn
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=18dc7bfc-7533-1008-4091-5ae0560df21c@gmail.com \
--to=toiwoton@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=cl@linux.com \
--cc=cmetcalf@ezchip.com \
--cc=iago@endocode.com \
--cc=jann@thejh.net \
--cc=keescook@chromium.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rjones@redhat.com \
--cc=serge.hallyn@canonical.com \
--cc=serge.hallyn@ubuntu.com \
--cc=viro@zeniv.linux.org.uk \
/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
all inboxes | Powered by JetHome®