From: Daniel Micay <danielmicay@gmail.com>
To: Florian Weimer <fw@deneb.enyo.de>
Cc: Jann Horn <jann@thejh.net>, Kees Cook <keescook@chromium.org>,
kernel-hardening@lists.openwall.com,
Andrew Morton <akpm@linux-foundation.org>,
Michal Hocko <mhocko@suse.com>, Ingo Molnar <mingo@kernel.org>,
Andy Lutomirski <luto@kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [kernel-hardening] Re: [PATCH] fork: make whole stack_canary random
Date: Mon, 31 Oct 2016 18:02:14 -0400 [thread overview]
Message-ID: <1477951334.8761.15.camel@gmail.com> (raw)
In-Reply-To: <8760o8ryh3.fsf@mid.deneb.enyo.de>
[-- Attachment #1: Type: text/plain, Size: 2457 bytes --]
On Mon, 2016-10-31 at 22:38 +0100, Florian Weimer wrote:
> * Daniel Micay:
>
> > -fstack-stack is supposed to handle a single guard by default, and
> > that's all there is for thread stacks by default.
>
> Okay, then I'll really have to look at the probing offsets again.
> It's been on my to-do list since about 2012, and arguably, it *is* a
> user-space thing.
This is concerning too:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66479
It might be prevented for VLAs by using -fsanitize=vla-bound -fsanitize-
trap=vla-bound but probably not alloca (or the older -fsanitize-
undefined-trap-on-error for GCC, since for some reason it doesn't seem
to have the new way).
> And I just realized that we should probably fail at dlopen time if
> some tries to open a DSO which needs an executable stack, rather than
> silently changing all thread stacks to executable. *sigh*
>
> > > > Note: talking about userspace after the entropy bit. The kernel
> > > > doesn't
> > > > really -fstack-check, at least in even slightly sane code...
> > >
> > >
> > > There used to be lots of discussions about kernel stack sizes ...
> >
> > It should just be banning VLAs, alloca and large stack frames
> > though, if
> > it's not already. There wasn't even support for guard pages with
> > kernel
> > stacks until recently outside grsecurity,
>
> Which is not surprising, considering that one prime motivation for
> small stacks was to conserve 32-bit address space. But I'm glad that
> there is now a guard page. Hopefully, it does not affect performance,
> and on 64-bit, at least there isn't the address space limit to worry
> about.
I think it might actually improve performance overall.
> > and -fstack-check relies on them so it doesn't seem like a great
> > solution for the kernel.
>
> -fsplit-stack could enforce stack usage limits even without guard
> pages, but of course, there is some run-time overhead, and the limit
> has to come from somewhere (typically the TCB).
Yeah, that's how Rust provided stack safety on LLVM. They ended up
removing it and they only have stack safety on Windows now, since LLVM
doesn't yet provide stack probing outside Windows. So much for being a
memory safe language... it's ultimately LLVM's fault though. There were
actually working patches submitted for this by people working on Rust
but *it never landed* due to endless bikeshedding + scope creep.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2016-10-31 22:02 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-31 14:04 [PATCH] fork: make whole stack_canary random Jann Horn
2016-10-31 16:04 ` Kees Cook
2016-10-31 16:29 ` [kernel-hardening] " Jann Horn
2016-10-31 20:45 ` Florian Weimer
2016-10-31 20:55 ` Jann Horn
2016-10-31 20:56 ` Daniel Micay
2016-10-31 21:01 ` Daniel Micay
2016-10-31 21:10 ` Florian Weimer
2016-10-31 21:21 ` Daniel Micay
2016-10-31 21:38 ` Florian Weimer
2016-10-31 22:02 ` Daniel Micay [this message]
2016-10-31 22:11 ` Florian Weimer
2016-10-31 21:22 ` Jann Horn
2016-10-31 21:26 ` Daniel Micay
2016-10-31 21:26 ` Florian Weimer
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=1477951334.8761.15.camel@gmail.com \
--to=danielmicay@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=fw@deneb.enyo.de \
--cc=jann@thejh.net \
--cc=keescook@chromium.org \
--cc=kernel-hardening@lists.openwall.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mhocko@suse.com \
--cc=mingo@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