|
Message-ID: <7bf586cc-527c-eb3c-b86a-2adbbb7fdfda@linux.com> Date: Mon, 25 Sep 2017 19:17:32 +0300 From: Alexander Popov <alex.popov@...ux.com> To: Tycho Andersen <tycho@...ker.com> Cc: Kees Cook <keescook@...omium.org>, "kernel-hardening@...ts.openwall.com" <kernel-hardening@...ts.openwall.com>, PaX Team <pageexec@...email.hu>, Brad Spengler <spender@...ecurity.net>, Laura Abbott <labbott@...hat.com>, Mark Rutland <mark.rutland@....com>, Ard Biesheuvel <ard.biesheuvel@...aro.org>, "x86@...nel.org" <x86@...nel.org>, Andy Lutomirski <luto@...capital.net> Subject: Re: [PATCH RFC v3 1/1] gcc-plugins: Add stackleak feature erasing the kernel stack at the end of syscalls Hello Tycho, On 21.09.2017 22:39, Alexander Popov wrote: > On 21.09.2017 00:18, Tycho Andersen wrote: >> + /* >> + * Check each byte, as we don't know the current stack alignment. >> + */ > > Excuse me, what do you mean by the "current stack alignment"? I guess I got it now. For x86 and x86_64 the stack alignment is controlled by cc_stack_align in arch/x86/Makefile (-mpreferred-stack-boundary in case of gcc). The stack is 4-byte aligned for x86 and 8-byte aligned for x86_64. > The STACKLEAK_POISON position is always 8-byte aligned for x86_64 and 4-byte > aligned for x86 (see the shr instruction in the asm implementation). Eh, my statement is wrong. I've made a simple experiment: this change makes the poison be unaligned: diff --git a/fs/exec.c b/fs/exec.c index 56bdc19..893d2e4 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1961,7 +1961,7 @@ COMPAT_SYSCALL_DEFINE5(execveat, int, fd, #ifdef CONFIG_GCC_PLUGIN_STACKLEAK void __used track_stack(void) { - unsigned long sp = (unsigned long)&sp; + unsigned long sp = (unsigned long)&sp + 1; if (sp < current->thread.lowest_stack && sp >= (unsigned long)task_stack_page(current) + So your idea to check each byte at first should work fine. Would you allow me to make the next version of your test and include it into the fourth version of the STACKLEAK patch? I'll show it to you before sending to the mailing list. Best regards, Alexander
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.