[kernel-hardening] Re: [PATCH v9 1/4] syscalls: Verify address limit before returning to user-mode
From: Daniel Micay <hidden>
Date: 2017-05-12 21:16:51
Also in:
linux-api, linux-s390, lkml
From: Daniel Micay <hidden>
Date: 2017-05-12 21:16:51
Also in:
linux-api, linux-s390, lkml
On Fri, 2017-05-12 at 22:06 +0100, Al Viro wrote:
On Fri, May 12, 2017 at 09:21:06PM +0100, Russell King - ARM Linux wrote:quoted
On Fri, May 12, 2017 at 12:30:02PM -0700, Kees Cook wrote:quoted
I'm clearly not explaining things well enough. I shouldn't say "corruption", I should say "malicious manipulation". The methodology of attacks against the stack are quite different from the other kinds of attacks like use-after-free, heap overflow, etc. Being able to exhaust the kernel stack (either due to deep recursion or unbounded alloca())I really hope we don't have alloca() use in the kernel. Do you have evidence to support that assertion? IMHO alloca() (or similar) should not be present in any kernel code because we have a limited stack - we have kmalloc() etc for that kind of thing.No alloca(), but there are VLAs. Said that, the whole "what if they can bugger thread_info and/or task_struct and go after set_fs() state" is idiocy, of course - in that case the box is fucked, no matter what.
VMAP_STACK + -fstack-check would prevent exploiting even an unbounded VLA / alloca size vs. it being an arbitrary write. -fstack-check guarantees that there's one byte per page as the stack grows, although there are some unfortunate GCC bugs making it less than perfect right now... but they recently started caring about it more including making it near zero overhead as it was always supposed to be.