lkml.org 
[lkml]   [2018]   [Jun]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 06/10] x86/cet: Add arch_prctl functions for shadow stack
    On Tue, Jun 12, 2018 at 9:01 AM, Andy Lutomirski <luto@kernel.org> wrote:
    > On Tue, Jun 12, 2018 at 4:43 AM H.J. Lu <hjl.tools@gmail.com> wrote:
    >>
    >> On Tue, Jun 12, 2018 at 3:03 AM, Thomas Gleixner <tglx@linutronix.de> wrote:
    >> > On Thu, 7 Jun 2018, H.J. Lu wrote:
    >> >> On Thu, Jun 7, 2018 at 2:01 PM, Andy Lutomirski <luto@kernel.org> wrote:
    >> >> > Why is the lockout necessary? If user code enables CET and tries to
    >> >> > run code that doesn't support CET, it will crash. I don't see why we
    >> >> > need special code in the kernel to prevent a user program from calling
    >> >> > arch_prctl() and crashing itself. There are already plenty of ways to
    >> >> > do that :)
    >> >>
    >> >> On CET enabled machine, not all programs nor shared libraries are
    >> >> CET enabled. But since ld.so is CET enabled, all programs start
    >> >> as CET enabled. ld.so will disable CET if a program or any of its shared
    >> >> libraries aren't CET enabled. ld.so will lock up CET once it is done CET
    >> >> checking so that CET can't no longer be disabled afterwards.
    >> >
    >> > That works for stuff which loads all libraries at start time, but what
    >> > happens if the program uses dlopen() later on? If CET is force locked and
    >> > the library is not CET enabled, it will fail.
    >>
    >> That is to prevent disabling CET by dlopening a legacy shared library.
    >>
    >> > I don't see the point of trying to support CET by magic. It adds complexity
    >> > and you'll never be able to handle all corner cases correctly. dlopen() is
    >> > not even a corner case.
    >>
    >> That is a price we pay for security. To enable CET, especially shadow
    >> shack, the program and all of shared libraries it uses should be CET
    >> enabled. Most of programs can be enabled with CET by compiling them
    >> with -fcf-protection.
    >
    > If you charge too high a price for security, people may turn it off.
    > I think we're going to need a mode where a program says "I want to use
    > the CET, but turn it off if I dlopen an unsupported library". There
    > are programs that load binary-only plugins.

    You can do

    # export GLIBC_TUNABLES=glibc.tune.hwcaps=-SHSTK

    which turns off shadow stack.


    --
    H.J.

    \
     
     \ /
      Last update: 2018-06-12 18:06    [W:2.570 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site