From: Willy Tarreau <w@1wt.eu>
To: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
LKML <linux-kernel@vger.kernel.org>, X86 ML <x86@kernel.org>,
Borislav Petkov <bp@alien8.de>, Brian Gerst <brgerst@gmail.com>,
Ingo Molnar <mingo@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Josh Poimboeuf <jpoimboe@redhat.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Kees Cook <keescook@chromium.org>
Subject: Re: [RFC PATCH v2 6/6] x86/entry/pti: don't switch PGD on when pti_disable is set
Date: Thu, 11 Jan 2018 22:49:39 +0100 [thread overview]
Message-ID: <20180111214939.GB15528@1wt.eu> (raw)
In-Reply-To: <06a7c031-3ef9-7f8d-6292-18e2cca0698a@linux.intel.com>
On Thu, Jan 11, 2018 at 10:35:57AM -0800, Dave Hansen wrote:
> On 01/11/2018 07:44 AM, Willy Tarreau wrote:
> >> 4. Cleared on setuid() and friends
> > This one causes me a problem : some daemons already take care of dropping
> > privileges after the initial fork() for the sake of security. Haproxy
> > typically does this at boot :
> >
> > - parse config
> > - chroot to /var/empty
> > - setuid(dedicated_uid)
> > - fork()
>
> This makes me a _bit_ nervous. I think Andy touched on this, but I'll
> say it another way: you want PTI turned off because you trust an app to
> be good, but you also drop permissions because it is exposed to an
> environment where you do *not* fully trust it.
>
> I'm not sure how you reconcile that.
>
> If your proxy gets compromised, and pti is turned off, you are entirely
> exposed to meltdown from that process.
Yes but security is not either black or white, it's about adding protections
that make sense wherever possible. Meltdown would "only" allow you to dump
the system's memory. Running as root would additionally allow you to modify
this memory, ptrace processes outside of the chroot to inject backdoors etc.
For me, and for a lot of users I guess, the choice is easily made.
> I don't know exactly what you
> are doing, but isn't this proxy sitting there shuffling untrusted user
> data around all day?
Yes definitely for some users, while it can be very trusted data for others.
For example those dealing with wire transfers have much more to care about
than someone reading their kernel memory when they can also read and modify
the amount of money in the transfers if they want!
And it has to do all this *fast*, that's one of its most touted qualities.
And that's even why people who care the most about performance always
install it on Linux because today it's the best OS for this job.
Again Dave, it's a tradeoff. People using such components generally know
what they are doing and are the ones to decide. Some of them prefer to run
as root because it allows them to bind to foreign addresses, others cannot
start as root because the local policy is strict about this, some do a lot
of things some of us would consider ugly but which are critical to their
acitvity. It's not up to me as the software's author nor to us as system
developers to tell our users how they will be much slower to be more
secure if they decide that they don't care about this *specific* risk.
Our job is to properly protect those who don't know they're at risk and
to help the other ones reduce the risk to the minimum needed for a given
task.
In this case the minimum can be pretty well summarized :
- PTI on by default on the system
- no PTI for the performance-sensitive process if the admin decides it
- switch to a harmless uid/gid couple once not needed to be root anymore
- if the process may execute external processes, give it an option to
disable PTI before or during execve() to avoid exposing the system to
what they could be doing.
I think that's pretty reasonable for a normal production environment.
Willy
next prev parent reply other threads:[~2018-01-11 21:50 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-09 12:56 [RFC PATCH v2 0/6] Per process PTI activation Willy Tarreau
2018-01-09 12:56 ` [RFC PATCH v2 1/6] x86/mm: add a pti_disable entry in mm_context_t Willy Tarreau
2018-01-09 12:56 ` [RFC PATCH v2 2/6] x86/arch_prctl: add ARCH_GET_NOPTI and ARCH_SET_NOPTI to enable/disable PTI Willy Tarreau
2018-01-09 14:17 ` Borislav Petkov
2018-01-09 14:36 ` Willy Tarreau
2018-01-09 14:51 ` Borislav Petkov
2018-01-09 14:54 ` Willy Tarreau
2018-01-09 21:26 ` Andy Lutomirski
2018-01-09 21:29 ` Borislav Petkov
2018-01-09 21:32 ` Willy Tarreau
2018-01-09 21:46 ` Borislav Petkov
2018-01-09 22:06 ` Willy Tarreau
2018-01-09 22:20 ` Borislav Petkov
2018-01-09 22:29 ` Dave Hansen
2018-01-09 22:40 ` Willy Tarreau
2018-01-10 14:42 ` Borislav Petkov
2018-01-10 15:39 ` Willy Tarreau
2018-01-10 16:09 ` Borislav Petkov
2018-01-10 16:19 ` Willy Tarreau
2018-01-10 17:28 ` Borislav Petkov
2018-01-10 7:31 ` Ingo Molnar
2018-01-10 7:37 ` Willy Tarreau
2018-01-10 7:59 ` Ingo Molnar
2018-01-09 23:53 ` Andy Lutomirski
2018-01-10 4:25 ` Willy Tarreau
2018-01-10 7:25 ` Ingo Molnar
2018-01-10 14:45 ` Borislav Petkov
2018-01-10 15:43 ` Willy Tarreau
2018-01-10 15:45 ` Ingo Molnar
2018-01-09 21:34 ` Kees Cook
2018-01-09 21:41 ` Willy Tarreau
2018-01-09 21:50 ` Kees Cook
2018-01-09 22:03 ` Willy Tarreau
2018-01-10 7:13 ` Ingo Molnar
2018-01-12 15:03 ` David Laight
2018-01-12 15:06 ` Willy Tarreau
2018-01-09 12:56 ` [RFC PATCH v2 3/6] x86/pti: add a per-cpu variable pti_disable Willy Tarreau
2018-01-10 7:19 ` Ingo Molnar
2018-01-10 7:29 ` Willy Tarreau
2018-01-10 8:01 ` Ingo Molnar
2018-01-10 8:50 ` Willy Tarreau
2018-01-10 8:59 ` Ingo Molnar
2018-01-10 9:00 ` Willy Tarreau
2018-01-09 12:56 ` [RFC PATCH v2 4/6] x86/pti: don't mark the user PGD with _PAGE_NX Willy Tarreau
2018-01-09 12:56 ` [RFC PATCH v2 5/6] x86/entry/pti: avoid setting CR3 when it's already correct Willy Tarreau
2018-01-10 7:16 ` Ingo Molnar
2018-01-10 7:18 ` Willy Tarreau
2018-01-10 20:29 ` Dave Hansen
2018-01-11 6:46 ` Willy Tarreau
2018-01-09 12:56 ` [RFC PATCH v2 6/6] x86/entry/pti: don't switch PGD on when pti_disable is set Willy Tarreau
2018-01-10 7:15 ` Ingo Molnar
2018-01-10 7:23 ` Willy Tarreau
2018-01-10 8:22 ` Peter Zijlstra
2018-01-10 9:11 ` Willy Tarreau
2018-01-10 19:21 ` Andy Lutomirski
2018-01-10 19:39 ` Willy Tarreau
2018-01-10 19:44 ` Andy Lutomirski
2018-01-10 19:50 ` Linus Torvalds
2018-01-10 20:04 ` Andy Lutomirski
2018-01-11 6:42 ` Willy Tarreau
2018-01-11 15:29 ` Dave Hansen
2018-01-11 15:44 ` Willy Tarreau
2018-01-11 15:51 ` Dave Hansen
2018-01-11 17:02 ` Andy Lutomirski
2018-01-11 18:21 ` Alexei Starovoitov
2018-01-11 18:30 ` Dave Hansen
2018-01-11 18:32 ` Josh Poimboeuf
2018-01-11 18:36 ` Linus Torvalds
2018-01-11 18:38 ` Dave Hansen
2018-01-11 18:51 ` Linus Torvalds
2018-01-11 18:57 ` Dave Hansen
2018-01-11 19:05 ` Josh Poimboeuf
2018-01-11 19:07 ` Borislav Petkov
2018-01-11 19:17 ` Dave Hansen
2018-01-11 19:19 ` Olivier Galibert
2018-01-11 19:26 ` Josh Poimboeuf
2018-01-11 19:34 ` Alan Cox
2018-01-11 21:23 ` Willy Tarreau
2018-01-11 21:28 ` Linus Torvalds
2018-01-11 22:06 ` Willy Tarreau
2018-01-12 16:37 ` David Laight
2018-01-11 19:12 ` Linus Torvalds
2018-01-11 19:38 ` Alexei Starovoitov
2018-01-11 19:11 ` Willy Tarreau
2018-01-11 20:00 ` Dave Hansen
2018-01-11 17:09 ` Andy Lutomirski
2018-01-11 17:40 ` Willy Tarreau
2018-01-11 17:53 ` Andy Lutomirski
2018-01-11 18:05 ` Willy Tarreau
2018-01-11 18:15 ` Dave Hansen
2018-01-11 18:31 ` Linus Torvalds
2018-01-11 18:25 ` Linus Torvalds
2018-01-11 18:26 ` Linus Torvalds
2018-01-11 19:33 ` Andy Lutomirski
2018-01-12 20:22 ` Ingo Molnar
2018-01-12 21:18 ` Andy Lutomirski
2018-01-12 21:54 ` Willy Tarreau
2018-01-11 21:59 ` Willy Tarreau
2018-01-12 16:27 ` David Laight
2018-01-12 17:55 ` Linus Torvalds
2018-01-12 19:36 ` Willy Tarreau
2018-01-11 18:35 ` Dave Hansen
2018-01-11 21:49 ` Willy Tarreau [this message]
2018-01-11 23:11 Alexey Dobriyan
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=20180111214939.GB15528@1wt.eu \
--to=w@1wt.eu \
--cc=bp@alien8.de \
--cc=brgerst@gmail.com \
--cc=dave.hansen@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=hpa@zytor.com \
--cc=jpoimboe@redhat.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®