From: ebiederm@xmission.com (Eric W. Biederman)
To: Kees Cook <keescook@chromium.org>
Cc: James Bottomley <James.Bottomley@hansenpartnership.com>,
"ksummit-discuss@lists.linuxfoundation.org"
<ksummit-discuss@lists.linuxfoundation.org>,
Emily Ratliff <eratliff@linuxfoundation.org>
Subject: Re: [Ksummit-discuss] [TECH TOPIC] Kernel Hardening
Date: Mon, 31 Aug 2015 15:58:22 -0500 [thread overview]
Message-ID: <87h9nf9nv5.fsf@x220.int.ebiederm.org> (raw)
In-Reply-To: <CAGXu5j+JNkdMHQJL=2AGQhB+dR9sZPJDG=NPafbdODMs6EexzQ@mail.gmail.com> (Kees Cook's message of "Mon, 24 Aug 2015 15:55:01 -0700")
Kees Cook <keescook@chromium.org> writes:
> We are finding the bugs, and we can do better, but that's not what I
> think needs the most attention right now. We need to kill classes of
> bugs and classes of exploits. To kill a bug class, we must remove the
> possibility that it can ever go wrong in the first place. Many people
> stop here when thinking about hardening, but we must move on to
> killing classes of exploit. I'll continue to use my W^X kernel code
> example, since it was not, from an operational stance, a flaw that
> kernel code was writable. But it's a exploitation weakness. If an
> attacker just needs to directly target a kernel memory location with
> their memory-write primitive, all their work is done, that user loses
> control of their kernel, game over.
>
> We need to add the safety nets under the acrobats, since they can fall
> at any time.
I think it makes sense to close the classes of vulnerabilities that we
can.
At the same time I think we to serious consider tossing attempts that
fails to close a class of exploits.
The kernel address space randomization on x86_64 I find disturbing. We
have a 2GB address space for kernel code. We have pages that are 2MB in
that address space. So we only have 10 bits that can change. Only 9
bits that can change if the kernel needs more than one 2MB page. Which
means that at most we need to brute force 1024 things to exploit any
weakness.
I don't see that attempt at kernel self protection actually
accomplishing anything in the way of protection, and I do see it costing
us debuggability which impacts kernel maintenance. That is enabling
this protection seems to increase the effort to fix kernel bugs and as
such increases the number of bugs overall.
Is it reasonable to suggest when we have kernel security features that
only make people feel good, but don't actually protect them that we toss
the feature?
>> Yes, I like this one a lot. Adding mechanisms that don't increase
>> complexity like this are good active means. However, I become less
>> enamoured of things like selinux and grsecurity which add complexity in
>> the name of active attack surface reduction. That's not to say never do
>> it, it's just to say that attack surface is directly related to
>> complexity.>
> FWIW, really only reduces userspace attack surface (all syscalls are
> still available to a confined process). seccomp reduces attack
> surface. grsecurity has an MAC component, but grsecurity (with PaX) is
> much larger. Regardless, some of these nets will increase complexity.
> It's the same for anti-lock brakes and airbags[1]. We have to take on
> this burden to protect our users from our mistakes.
Except given your reference[1] what we need to do is protect our users
from their own mistakes. Which means we need to do more than just tell
our users no it is not ok to do that thing you want to do (they will do
it anyway). We need to figure out safe ways to allow our users to do
the things they want or need to do.
This means things like not hiding new features behind CAP_SYS_ADMIN so
that we don't have to bother with securing kernel code.
This means things like figuring out how to make it possible for users to
mount that usb key they found in the parking lot and not have their
computer get owned.
All of which says that we need to increase the amount of the kernel
code that we are willing to defend from attacks, and figure out how to
defend that code.
Allowing our users to reduce the kernel attack surface is valid, but I
don't think for us as kernel developers it is valid to rely on users
reducing the kernel attack surface.
> -Kees
>
> [1] Borrowing mricon's great analogy as presented at the Security
> Summit this year:
> http://kernsec.org/files/lss2015/giant-bags-of-mostly-water.pdf
next prev parent reply other threads:[~2015-08-31 21:05 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-24 4:20 James Morris
2015-08-24 11:46 ` Jiri Kosina
2015-08-24 11:56 ` James Morris
2015-08-24 17:17 ` Kees Cook
2015-08-24 17:28 ` Andy Lutomirski
2015-08-24 17:39 ` Julia Lawall
2015-08-24 18:01 ` Kees Cook
2015-08-24 18:19 ` Andy Lutomirski
2015-08-24 18:57 ` Kees Cook
2015-08-24 18:52 ` Thomas Gleixner
2015-08-24 18:59 ` Thomas Gleixner
2015-08-24 19:00 ` Kees Cook
2015-08-24 22:05 ` Greg KH
2015-08-25 0:51 ` Rafael J. Wysocki
2015-08-31 20:10 ` Eric W. Biederman
2015-08-31 20:22 ` josh
2015-08-26 20:51 ` Kees Cook
2015-08-26 21:10 ` Matthew Garrett
2015-08-30 0:41 ` [Ksummit-discuss] Self nomination Matthew Garrett
2015-08-24 11:48 ` [Ksummit-discuss] [TECH TOPIC] Kernel Hardening Jiri Kosina
2015-08-24 12:29 ` Linus Walleij
2015-08-24 12:51 ` Jason Cooper
2015-08-24 16:35 ` Kees Cook
2015-08-24 20:09 ` James Bottomley
2015-08-24 20:17 ` James Morris
2015-08-24 20:46 ` Thomas Gleixner
2015-08-24 22:22 ` James Morris
2015-08-24 23:20 ` Kees Cook
2015-08-24 23:54 ` Theodore Ts'o
2015-08-25 0:06 ` James Morris
2015-08-25 0:06 ` Kees Cook
2015-08-27 22:08 ` [Ksummit-discuss] grsecurity and kernel hardening Stephen Hemminger
2015-08-27 22:49 ` James Bottomley
2015-08-27 23:03 ` Stephen Hemminger
2015-08-24 23:04 ` [Ksummit-discuss] [TECH TOPIC] Kernel Hardening Kees Cook
2015-08-25 16:45 ` Luis R. Rodriguez
2015-08-24 22:57 ` Kees Cook
2015-08-24 23:25 ` Kees Cook
2015-08-24 20:28 ` josh
2015-08-24 22:55 ` Kees Cook
2015-08-24 23:13 ` Andy Lutomirski
2015-08-31 20:58 ` Eric W. Biederman [this message]
2015-09-01 9:03 ` Jiri Kosina
2015-09-01 16:52 ` Kees Cook
2015-09-01 16:50 ` Kees Cook
2015-08-25 15:15 ` Shuah Khan
2015-08-25 16:15 ` Kees Cook
2015-08-25 16:30 ` Mark Brown
2015-08-25 16:33 ` Kees Cook
2015-08-25 16:58 ` Shuah Khan
2015-09-22 12:24 ` Dan Carpenter
2015-09-22 12:55 ` Yves-Alexis Perez
2015-09-22 12:59 ` Julia Lawall
2015-09-22 18:02 ` Andy Lutomirski
2015-08-24 16:20 ` Aneesh Kumar K.V
2015-08-24 17:19 ` Kees Cook
2015-08-24 18:50 ` James Morris
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=87h9nf9nv5.fsf@x220.int.ebiederm.org \
--to=ebiederm@xmission.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=eratliff@linuxfoundation.org \
--cc=keescook@chromium.org \
--cc=ksummit-discuss@lists.linuxfoundation.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