From: Vasiliy Kulikov <segoon@openwall.com>
To: "H. Peter Anvin" <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, James Morris <jmorris@namei.org>,
kernel-hardening@lists.openwall.com, x86@kernel.org,
linux-kernel@vger.kernel.org,
linux-security-module@vger.kernel.org
Subject: Re: [RFC] x86: restrict pid namespaces to 32 or 64 bit syscalls
Date: Sat, 13 Aug 2011 10:22:47 +0400 [thread overview]
Message-ID: <20110813062246.GC3851@albatros> (raw)
In-Reply-To: <4E45884B.8030303@zytor.com>
On Fri, Aug 12, 2011 at 15:08 -0500, H. Peter Anvin wrote:
> On 08/12/2011 10:03 AM, Vasiliy Kulikov wrote:
> > This patch allows x86-64 systems with 32 bit syscalls support to lock a
> > pid namespace to 32 or 64 bitness syscalls/tasks. By denying rarely
> > used compatibility syscalls it reduces an attack surface for 32 bit
> > containers.
> >
> > The new sysctl is introduced, abi.bitness_locked. If set to 1, it locks
> > all tasks inside of current pid namespace to the bitness of init task
> > (pid_ns->child_reaper). After that:
> >
> > 1) a task trying to do a syscall of other bitness would get a signal as
> > if the corresponding syscall is not enabled (IDT entry/MSR is not
> > initialized).
> >
> > 2) loading ELF binaries of another bitness is prohibited (as if the
> > corresponding CONFIG_BINFMT_*=N).
[...]
> However, I have to question the value of this... if this is enabled in
> the system as a whole (as opposed to compiled out) it seems kind of
> pointless...
No, it is not for the system as a whole, but for containers (however,
it's possible to lock the whole system). We use OpenVZ kernels with
multiple containers, some of them are 32 bit, some are 64 bit. 64 bit
syscalls are not needed for 32 bit containers and 32 bit syscalls are
not needed for 64 bit containers. As a needless interfaces they
unreasonably increase the kernel attack surface. Some compatibility 32
bit syscalls are rarely used, sometimes they are not tested well.
In IA-64 the IA-32 compatibility support was broken for 2 years:
http://www.spinics.net/lists/linux-ia64/msg07840.html
In amd64 some specific rarely used syscalls might behave similar way.
Removing this attack vector is the goal of the patch.
> if there are bugs we need to deal with them anyway.
Definitely.
> > Qestions/thoughts:
> >
> > The patch adds a check in syscalls code. Is it a significant
> > slowdown for fast syscalls? If so, probably it worth moving the check
> > into scheduler code and enabling/disabling corresponding interrupt/MSRs
> > on each task switch?
> >
>
> *YOU* are the person who needs to answer that question by providing
> measurements. Quite frankly I suspect checks in the syscall code *or*
> task switching MSRs are going to be unacceptable from a performance
> point of view.
OK, I'll do it.
Thank you,
--
Vasiliy Kulikov
http://www.openwall.com - bringing security into open computing environments
next prev parent reply other threads:[~2011-08-13 6:22 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-12 15:03 [RFC] x86: restrict pid namespaces to 32 or 64 bit syscalls Vasiliy Kulikov
2011-08-12 20:08 ` H. Peter Anvin
2011-08-13 6:22 ` Vasiliy Kulikov [this message]
2011-08-13 15:41 ` H. Peter Anvin
2011-08-13 16:32 ` [kernel-hardening] " Vasiliy Kulikov
2011-08-14 9:09 ` Solar Designer
2011-08-18 14:40 ` [RFC v2] " Vasiliy Kulikov
2011-08-14 2:38 ` [RFC] " Andi Kleen
2011-08-14 5:08 ` H. Peter Anvin
2011-08-14 9:20 ` Solar Designer
2011-08-14 14:48 ` H. Peter Anvin
2011-08-14 15:27 ` Andi Kleen
2011-08-14 15:36 ` H. Peter Anvin
2011-08-14 23:29 ` James Morris
2011-08-15 0:18 ` Andi Kleen
2011-08-15 0:32 ` [kernel-hardening] " Will Drewry
2011-08-15 0:58 ` Andi Kleen
2011-08-14 16:08 ` Vasiliy Kulikov
2011-08-15 18:51 ` Solar Designer
2011-08-15 18:59 ` H. Peter Anvin
2011-08-15 20:14 ` Solar Designer
2011-08-15 20:27 ` Andi Kleen
2011-08-15 20:48 ` H. Peter Anvin
2011-08-15 22:13 ` Eric Paris
2011-08-16 1:18 ` Andi Kleen
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=20110813062246.GC3851@albatros \
--to=segoon@openwall.com \
--cc=hpa@zytor.com \
--cc=jmorris@namei.org \
--cc=kernel-hardening@lists.openwall.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--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