|
Message-ID: <720b01a7-05bc-22d8-fdb1-1d67a0e18b54@marcan.st> Date: Sun, 12 Nov 2017 13:39:44 +0900 From: Hector Martin 'marcan' <marcan@...can.st> To: Andy Lutomirski <luto@...nel.org> Cc: LKML <linux-kernel@...r.kernel.org>, "kernel-hardening@...ts.openwall.com" <kernel-hardening@...ts.openwall.com>, X86 ML <x86@...nel.org> Subject: Re: Re: vDSO maximum stack usage, stack probes, and -fstack-check On 2017-11-12 13:21, Andy Lutomirski wrote: >> Only because Go is not C and is not compiled like this. If all the code >> is GCC-compiled C code and built with -fstack-check, it should always >> probe stack pages in order except for potentially the second page in the >> stack, which may be touched after the third page (but hopefully your >> stack is at least two pages long to begin with). > > If you're generating code to improve stack overflow, assuming that you > have at least two pages left seems like an *awful* assumption to make. If all the code is compiled with the option, then it guarantees you have at least two pages left, as long as you have at least two pages when the program/thread starts. > Gentoo Hardened should seriously consider turning it back off. Do you > happen to know what exactly Gentoo does to cause the vdso to get build > with -fstack-check? I'll write a patch to either fail the build or to > force it off. So you're saying Gentoo Hardened should turn off an exploit mitigation that, though imperfect, works in the vast majority of cases and seems to have caused a grand total of one [1] bug in a package so far (two if you count the one I found)? That seems completely silly to me. I'm sure once GCC 8 is out with dedicated stack clash protection they'll switch to that, but in the meantime -fstack-check seems like a perfectly reasonable idea. Anyway, they just add it to the default specs for gcc. You can turn it back off with -fstack-check=no. You still haven't addressed the important question, though: should vDSO be *documented* to consume a certain maximum amount of stack space? If not, this whole thing is pointless since vDSO would be fine as it is. If yes, then -fstack-check=no isn't the only thing you have to worry about; more options to limit stack frame size, and perhaps code changes to inline everything, might be appropriate. [1] https://bugs.gentoo.org/637152 -- Hector Martin "marcan" (marcan@...can.st) Public Key: https://mrcn.st/pub
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.