Thread (71 messages) 71 messages, 11 authors, 2020-07-24

Re: [PATCH v10 01/26] Documentation/x86: Add CET description

From: Dave Hansen <hidden>
Date: 2020-05-17 23:09:44
Also in: linux-arch, linux-doc, linux-mm, lkml

On 5/15/20 7:51 PM, H.J. Lu wrote:
On Fri, May 15, 2020 at 4:56 PM Dave Hansen [off-list ref] wrote:
quoted
Let's say we have an app doing silly things like retpolines.  (Lots of
app do lots of silly things).  It gets compiled in a distro but never
runs on a system with CET.  The app gets run for the first time on a
system with CET.  App goes boom.  Not init, just some random app, say
/usr/bin/ldapsearch.
I designed and implemented CET toolchain and run-time in such a way
for it very difficult to happen.   Basically, CET won't be enabled on such
an app.
Would you care to share any specifics about how this is implemented?
That would be great information to include in the kernel documentation
because it informs us about the reasons why we don't need a kernel-based
"kill switch".
quoted
What's my recourse as an end user?  I want to run my app and turn off
CET for that app.  How can I do that?
The CET OS I designed turns CET off for you and you don't have to do
anything.
OK, cool!  Could you share some of the specifics about how it does that?
quoted
        Is it possible with the patches in this series to run a single-
        threaded binary which was has GNU_PROPERTY_X86_FEATURE_1_SHSTK
        unset to run with shadow stack protection?
Yes, you can.  I added such capabilities for testing purpose.  But
you application will crash as soon as there is a CET violation.  My
CET software design is very flexible. 
Yu-cheng speficially referred to the:

	GLIBC_TUNABLES=glibc.tune.hwcaps=-SHSTK,-IBT

option.  Is that the option you're talking about?
quoted
quoted
I have a quick test that checks shadow stack and ibt in both main program and in
signals.  Currently it is public on Github.  If that is desired, I can submit it
to the mailing list.
Yes, that is desired.  It must accompany this submission.  It must also
exercise all of the new ABIs.
Our CET smoke test is for quick validation of CET OS, not just
kernel. It requires the complete CET implementation.   It does
nothing if your OS isn't CET enabled.
I think requiring the complete CET implementation to be present for this
test to work is a mistake.  We don't require anything other than an
enabled kernel and the selftests that ship with that kernel.

MPX required toolchain, library and compiler changes.  Yet, we had a
totally standalone kernel test that found real bugs.  It sounds like
this smoke test as it stands wouldn't be a great fit.  But, that
shouldn't discourage us from finding something that _is_ a good fit for
the kernel-shipped selftests.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help