Re: [RFC PATCH v2 6/6] x86/entry/pti: don't switch PGD on when pti_disable is set

From: Andy Lutomirski
Date: Fri Jan 12 2018 - 16:18:23 EST




> On Jan 12, 2018, at 12:22 PM, Ingo Molnar <mingo@xxxxxxxxxx> wrote:
>
>
> * Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
>
>>> Oh, and yes, I think the npti flag should also break ptrace(). I do agree with
>>> Andy that it's a "capability", although I do not think it should actually be
>>> implemented as one.
>>
>> For all that Linux capabilities are crap, nopti walks like one and quacks like
>> one. It needs to affect ptrace() permissions, it needs a way to disable it
>> systemwide, it needs LSM integration, etc. Using CAP_DISABLE_PTI gives us all
>> of this without tons of churn, auditing, and a whole new configuration thingy
>> for each LSM. And I avoids permanently polluting ptrace checks, the LSM
>> interface, etc for what is, essentially, a performance hack to work around a
>> blatant error in the design of some CPUs.
>>
>> Plus, with ambient caps, we already did the nasty part of the with and finished
>> all the relevant bikeshedding.
>>
>> So I'd rather just hold my nose and add the new capability bit.
>
> Those all seem pretty valid arguments to me.
>
>

FWIW, if we take this approach, then either dropping the capability should turn PTI back on or we need to deal with the corner case of PTI off and capability not present. The latter is a bit awkward but not necessarily a show stopper. I think that all we need to do is to update the ptrace rules and maybe make PTI turn back on when we execve. At least there's no need to muck around with LSM hooks.