From: David Howells <dhowells@redhat.com>
To: Andy Lutomirski <luto@amacapital.net>
Cc: Josh Armour <jarmour@google.com>,
"ksummit-discuss@lists.linuxfoundation.org"
<ksummit-discuss@lists.linuxfoundation.org>,
Greg KH <gregkh@linuxfoundation.org>
Subject: Re: [Ksummit-discuss] security-related TODO items?
Date: Mon, 23 Jan 2017 10:48:46 +0000 [thread overview]
Message-ID: <31033.1485168526@warthog.procyon.org.uk> (raw)
In-Reply-To: <CALCETrVKDAzcS62wTjDOGuRUNec_a-=8iEa7QQ62V83Ce2nk=A@mail.gmail.com>
Andy Lutomirski <luto@amacapital.net> wrote:
> This is not easy at all, but: how about rewriting execve() so that the
> actual binary format parsers run in user mode?
Sounds very chicken-and-egg-ish. Issues you'd have:
(1) You'd need at least one pre-loader binary image built into the kernel
that you can map into userspace (you can't upcall to userspace to go get
it for your core binfmt). This could appear as, say, /proc/preloader,
for the kernel to open and mmap.
(2) Where would the kernel put the executable image? It would have to parse
the binary to find out where not to put it - otherwise the code might
have to relocate itself.
(3) How do you deal with address randomisation?
(4) You may have to start without a stack as the kernel wouldn't necessarily
know where to put it or how big it should be (see 6). Or you might have
to relocate it, including all the pointers it contains.
(5) Where should the kernel put arguments, environment and other parameters?
Currently, this presumes a stack, but see (4).
(6) NOMMU could be particularly tricky. For ELF-FDPIC at least, the stack
size is set in the binary. OTOH, you wouldn't have to relocate the
pre-loader - you'd just mmap it MAP_PRIVATE and execute in place.
(7) When the kernel finds it's dealing with a script, it goes back through
the security calculation procedure again to deal with the interpreter.
> A minor one for x86: give binaries a way to opt out of the x86_64
> vsyscall page. I already did the hard part (in a branch), so all
> that's really left is figuring out the ABI.
munmap() it in the loader?
David
next prev parent reply other threads:[~2017-01-23 10:48 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-20 22:38 Kees Cook
2017-01-21 0:14 ` Andy Lutomirski
2017-01-21 0:26 ` Kees Cook
2017-01-21 1:10 ` Matthew Wilcox
2017-01-21 1:47 ` Josh Triplett
2017-01-23 10:02 ` Alexey Dobriyan
2017-01-23 10:48 ` David Howells [this message]
2017-01-23 20:10 ` Andy Lutomirski
[not found] ` <c1822e5b-9352-c1ab-ee98-e492ef6e156a@I-love.SAKURA.ne.jp>
2017-01-24 20:58 ` Andy Lutomirski
2017-01-23 20:36 ` David Howells
2017-01-23 20:59 ` Matthew Wilcox
2017-01-23 21:53 ` Andy Lutomirski
2017-01-23 23:26 ` Greg Ungerer
2017-01-23 20:15 ` Christoph Hellwig
2017-01-24 2:38 ` Andy Lutomirski
2017-01-24 10:03 ` Eric W. Biederman
2017-01-24 21:00 ` Andy Lutomirski
2017-01-24 21:55 ` Eric W. Biederman
2017-01-24 10:38 ` Alexey Dobriyan
[not found] ` <CAEiveUcTQK84qFNpYoET-cpSXJe0KYtnYQtp0uTPz=z0tc3W9A@mail.gmail.com>
2017-03-07 16:25 ` Andy Lutomirski
2017-02-02 21:12 ` David Howells
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=31033.1485168526@warthog.procyon.org.uk \
--to=dhowells@redhat.com \
--cc=gregkh@linuxfoundation.org \
--cc=jarmour@google.com \
--cc=ksummit-discuss@lists.linuxfoundation.org \
--cc=luto@amacapital.net \
/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