|
|
Message-ID: <20170925172323.zw5pgotm6b3gqoqv@smitten>
Date: Mon, 25 Sep 2017 11:23:23 -0600
From: Tycho Andersen <tycho@...ker.com>
To: Alexander Popov <alex.popov@...ux.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
Hi Alexander,
On Mon, Sep 25, 2017 at 07:17:32PM +0300, Alexander Popov wrote:
> 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;
Yep, this is the case I was talking about with alignment.
>
> 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.
Sure, that works for me.
Tycho
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.