Re: [PATCH v3 1/3] SROP Mitigation: Architecture independent code for signal cookies

From: Andy Lutomirski
Date: Tue Mar 08 2016 - 16:58:07 EST

On Tue, Mar 8, 2016 at 1:49 PM, Scotty Bauer <sbauer@xxxxxxxxxxxx> wrote:
> On 03/08/2016 01:58 PM, Andy Lutomirski wrote:
>> On Tue, Mar 8, 2016 at 12:47 PM, Scott Bauer <sbauer@xxxxxxxxxxxx> wrote:
>>> This patch adds a per-process secret to the task struct which
>>> will be used during signal delivery and during a sigreturn.
>>> Also, logic is added in signal.c to generate, place, extract,
>>> clear and verify the signal cookie.
>> Potentially silly question: it's been a while since I read the SROP
>> paper, but would the technique be effectively mitigated if sigreturn
>> were to zero out the whole signal frame before returning to user mode?
> I don't know if I fully understand your question, but I'll respond anyway.
> SROP is possible because the kernel doesn't know whether or not the
> incoming sigreturn syscall is in response from a legitimate signal that
> the kernel had previously delivered and the program handled. So essentially
> these patches are an attempt to give the kernel a way to verify whether or
> not the the incoming sigreturn is a valid response or a exploit trying to
> hijack control of the user program.

I got that part, but I thought that the interesting SROP bit was using
sigreturn to return back to a frame where you could just repeat the
sigreturn a bunch of times to compute things and do other evil. I'm
wondering whether zeroing the whole frame would make SROP much less
interesting to an attacker.