From: Willy Tarreau <w@1wt.eu>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
"security@kernel.org" <security@kernel.org>,
X86 ML <x86@kernel.org>, Borislav Petkov <bp@alien8.de>,
Sasha Levin <sasha.levin@oracle.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
Boris Ostrovsky <boris.ostrovsky@oracle.com>,
Andrew Cooper <andrew.cooper3@citrix.com>,
Jan Beulich <jbeulich@suse.com>,
xen-devel <xen-devel@lists.xen.org>,
Kees Cook <keescook@chromium.org>
Subject: Re: [PATCH 4/3] x86/ldt: allow to disable modify_ldt at runtime
Date: Sat, 25 Jul 2015 18:33:56 +0200 [thread overview]
Message-ID: <20150725163356.GD17659@1wt.eu> (raw)
In-Reply-To: <CALCETrV+OB0qxtw5CHaZc5RftuCUax04RxTyi_bt4ZKDJ2GB0g@mail.gmail.com>
On Sat, Jul 25, 2015 at 09:08:39AM -0700, Andy Lutomirski wrote:
> There's one thing that I think is incomplete here. Currently, espfix
> triggers if SS points to the LDT. It's possible for SS to point to
> the LDT even with modify_ldt disabled, and there's a decent amount of
> attack surface there.
>
> Can we improve this? Two ideas:
>
> 1. In the asm, patch out or otherwise disable espfix if that sysctl
> has never been set. (Ick.)
>
> 2. When modify_ldt is runtime-disabled (or compile-time disabled,
> perhaps), disallow setting the LDT bit in SS in the handful of places
> that would allow it (ptrace and sigreturn off the top of my head). We
> don't need to worry about (regs->ss & 4) being set on kernel entry
> because we'll never be in user mode with that bit set if the LDT is
> disabled, but that bit could still be set using kernel APIs. (In
> fact, my sigreturn test does exactly that.)
>
> Hmm. With synchronous LDT, we could plausibly check at runtime in the
> espfix code, too. We used to use LAR to do this, but hpa removed it
> when he realized that it was racy. It shouldn't be racy any more,
> because, with my patches applied, the LDT never changes while
> interrupts are off.
I understand it's not complete but I'm a bit bothered with conflating
this sysctl with other setting methods, because if the purpose of the
sysctl is to disable the syscall, it should do that only. I'd rather
document that it's less complete than the Kconfig method and continue
to recommend using your option whenever possible (eg: all my kernels
will use it just as I've already disabled X86_16BIT everywhere).
Also one benefit of having both options is that it will mechanically
make LDT a much less interesting target for future attacks, since it
will significantly reduce the likeliness of success, hence the motivation
for writing exploits that only work in conferences.
Willy
next prev parent reply other threads:[~2015-07-25 16:34 UTC|newest]
Thread overview: 129+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-25 5:36 [PATCH v4 0/3] x86: modify_ldt improvement, test, and config option Andy Lutomirski
2015-07-25 5:36 ` [PATCH v4 1/3] x86/ldt: Make modify_ldt synchronous Andy Lutomirski
2015-07-25 9:03 ` Borislav Petkov
2015-07-25 9:03 ` Borislav Petkov
2015-07-25 5:36 ` Andy Lutomirski
2015-07-25 5:36 ` [PATCH v4 2/3] x86/ldt: Make modify_ldt optional Andy Lutomirski
2015-07-25 5:36 ` Andy Lutomirski
2015-07-25 6:23 ` Willy Tarreau
2015-07-25 6:23 ` Willy Tarreau
2015-07-25 6:44 ` Andy Lutomirski
2015-07-25 7:50 ` Willy Tarreau
2015-07-25 7:50 ` Willy Tarreau
2015-07-25 13:03 ` [PATCH 4/3] x86/ldt: allow to disable modify_ldt at runtime Willy Tarreau
2015-07-25 16:08 ` Andy Lutomirski
2015-07-25 16:08 ` Andy Lutomirski
2015-07-25 16:33 ` Willy Tarreau
2015-07-25 16:33 ` Willy Tarreau [this message]
2015-07-25 17:42 ` Andy Lutomirski
2015-07-25 17:42 ` Andy Lutomirski
2015-07-25 18:45 ` Willy Tarreau
2015-07-25 18:45 ` Willy Tarreau
2015-07-27 19:04 ` Kees Cook
2015-07-27 19:04 ` Kees Cook
2015-07-27 21:37 ` Willy Tarreau
2015-07-27 21:37 ` Willy Tarreau
2015-07-25 13:03 ` Willy Tarreau
2015-07-25 6:44 ` [PATCH v4 2/3] x86/ldt: Make modify_ldt optional Andy Lutomirski
2015-07-25 9:15 ` Borislav Petkov
2015-07-25 9:15 ` Borislav Petkov
2015-07-25 16:03 ` Andy Lutomirski
2015-07-25 16:35 ` Willy Tarreau
2015-07-25 16:35 ` Willy Tarreau
2015-07-25 16:03 ` Andy Lutomirski
2015-07-25 5:36 ` [PATCH v4 3/3] selftests/x86, x86/ldt: Add a selftest for modify_ldt Andy Lutomirski
2015-07-25 5:36 ` Andy Lutomirski
2015-07-27 15:52 ` [PATCH v4.1 3.3] " Andy Lutomirski
2015-07-27 15:52 ` Andy Lutomirski
2015-07-25 6:27 ` [PATCH v4 0/3] x86: modify_ldt improvement, test, and config option Willy Tarreau
2015-07-25 6:27 ` Willy Tarreau
2015-07-27 15:36 ` Boris Ostrovsky
2015-07-27 15:36 ` Boris Ostrovsky
2015-07-27 15:53 ` Andy Lutomirski
2015-07-27 15:53 ` Andy Lutomirski
2015-07-27 16:18 ` Boris Ostrovsky
2015-07-27 16:18 ` Boris Ostrovsky
2015-07-28 2:20 ` Andy Lutomirski
2015-07-28 3:16 ` Andy Lutomirski
2015-07-28 3:16 ` Andy Lutomirski
2015-07-28 3:23 ` Andy Lutomirski
2015-07-28 3:23 ` Andy Lutomirski
2015-07-28 3:43 ` Boris Ostrovsky
2015-07-28 3:43 ` Boris Ostrovsky
2015-07-28 10:29 ` Andrew Cooper
2015-07-28 10:29 ` Andrew Cooper
2015-07-28 14:05 ` Boris Ostrovsky
2015-07-28 14:35 ` Andrew Cooper
2015-07-28 14:50 ` Boris Ostrovsky
2015-07-28 14:50 ` Boris Ostrovsky
2015-07-28 15:15 ` Konrad Rzeszutek Wilk
2015-07-28 15:15 ` Konrad Rzeszutek Wilk
2015-07-28 15:39 ` Boris Ostrovsky
2015-07-28 15:39 ` Boris Ostrovsky
2015-07-28 15:23 ` Andrew Cooper
2015-07-28 15:23 ` Andrew Cooper
2015-07-28 15:59 ` Boris Ostrovsky
2015-07-28 15:59 ` [Xen-devel] " Boris Ostrovsky
2015-07-28 14:35 ` Andrew Cooper
2015-07-28 14:05 ` Boris Ostrovsky
2015-07-28 15:43 ` Andy Lutomirski
2015-07-28 15:43 ` Andy Lutomirski
2015-07-28 16:30 ` Andrew Cooper
2015-07-28 16:30 ` Andrew Cooper
2015-07-28 17:07 ` Andy Lutomirski
2015-07-28 17:07 ` Andy Lutomirski
2015-07-28 17:10 ` [Xen-devel] " Boris Ostrovsky
2015-07-29 0:21 ` Andy Lutomirski
2015-07-29 0:47 ` Andrew Cooper
2015-07-29 3:01 ` Boris Ostrovsky
2015-07-29 3:01 ` [Xen-devel] " Boris Ostrovsky
2015-07-29 4:26 ` Andy Lutomirski
2015-07-29 4:26 ` Andy Lutomirski
2015-07-29 5:28 ` [Xen-devel] " Andy Lutomirski
2015-07-29 14:21 ` Andrew Cooper
2015-07-29 14:43 ` Boris Ostrovsky
2015-07-29 14:43 ` [Xen-devel] " Boris Ostrovsky
2015-07-29 19:03 ` Andrew Cooper
2015-07-29 21:23 ` Boris Ostrovsky
2015-07-29 21:26 ` Andy Lutomirski
2015-07-29 21:33 ` Boris Ostrovsky
2015-07-29 21:33 ` [Xen-devel] " Boris Ostrovsky
2015-07-29 21:37 ` Andrew Cooper
2015-07-29 21:37 ` [Xen-devel] " Andrew Cooper
2015-07-29 22:05 ` Andy Lutomirski
2015-07-29 22:05 ` [Xen-devel] " Andy Lutomirski
2015-07-29 22:11 ` Andrew Cooper
2015-07-29 22:11 ` [Xen-devel] " Andrew Cooper
2015-07-29 22:40 ` Boris Ostrovsky
2015-07-29 22:40 ` [Xen-devel] " Boris Ostrovsky
2015-07-29 22:46 ` David Vrabel
2015-07-29 22:46 ` David Vrabel
2015-07-29 22:49 ` Boris Ostrovsky
2015-07-29 22:49 ` [Xen-devel] " Boris Ostrovsky
2015-07-29 22:55 ` David Vrabel
2015-07-29 22:55 ` [Xen-devel] " David Vrabel
2015-07-29 23:02 ` Andrew Cooper
2015-07-29 23:13 ` Andy Lutomirski
2015-07-29 23:13 ` [Xen-devel] " Andy Lutomirski
2015-07-30 0:29 ` Andrew Cooper
2015-07-30 18:30 ` Andy Lutomirski
2015-07-30 18:54 ` Andrew Cooper
2015-07-30 18:54 ` [Xen-devel] " Andrew Cooper
2015-07-30 20:01 ` Boris Ostrovsky
2015-07-30 20:05 ` Andy Lutomirski
2015-07-30 20:18 ` Boris Ostrovsky
2015-07-30 20:18 ` Boris Ostrovsky
2015-07-30 20:05 ` Andy Lutomirski
2015-07-30 20:01 ` Boris Ostrovsky
2015-07-30 18:30 ` Andy Lutomirski
2015-07-30 0:29 ` Andrew Cooper
2015-07-29 23:02 ` Andrew Cooper
2015-07-29 21:26 ` Andy Lutomirski
2015-07-29 21:23 ` Boris Ostrovsky
2015-07-29 19:03 ` Andrew Cooper
2015-07-29 14:21 ` Andrew Cooper
2015-07-29 5:28 ` Andy Lutomirski
2015-07-29 0:47 ` Andrew Cooper
2015-07-29 0:21 ` Andy Lutomirski
2015-07-28 17:10 ` Boris Ostrovsky
2015-07-28 2:20 ` Andy Lutomirski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150725163356.GD17659@1wt.eu \
--to=w@1wt.eu \
--cc=andrew.cooper3@citrix.com \
--cc=boris.ostrovsky@oracle.com \
--cc=bp@alien8.de \
--cc=jbeulich@suse.com \
--cc=keescook@chromium.org \
--cc=konrad.wilk@oracle.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=luto@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=sasha.levin@oracle.com \
--cc=security@kernel.org \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.