From: Will Drewry <wad@chromium.org> To: linux-kernel@vger.kernel.org Cc: linux-man@vger.kernel.org, linux-security-module@vger.kernel.org, linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, kernel-hardening@lists.openwall.com, netdev@vger.kernel.org, x86@kernel.org, arnd@arndb.de, davem@davemloft.net, hpa@zytor.com, mingo@redhat.com, oleg@redhat.com, peterz@infradead.org, rdunlap@xenotime.net, mcgrathr@chromium.org, tglx@linutronix.de, luto@mit.edu, eparis@redhat.com, serge.hallyn@canonical.com, djm@mindrot.org, scarybeasts@gmail.com, indan@nul.nu, pmoore@redhat.com, akpm@linux-foundation.org, corbet@lwn.net, eric.dumazet@gmail.com, markus@chromium.org, coreyb@linux.vnet.ibm.com, keescook@chromium.org, jmorris@namei.org, Will Drewry <wad@chromium.org> Subject: [PATCH v18 14/15] x86: Enable HAVE_ARCH_SECCOMP_FILTER Date: Thu, 12 Apr 2012 16:48:03 -0500 [thread overview] Message-ID: <1334267284-19166-14-git-send-email-wad@chromium.org> (raw) In-Reply-To: <1334267284-19166-1-git-send-email-wad@chromium.org> Enable support for seccomp filter on x86: - syscall_get_arch() - syscall_get_arguments() - syscall_rollback() - syscall_set_return_value() - SIGSYS siginfo_t support - secure_computing is called from a ptrace_event()-safe context - secure_computing return value is checked (see below). SECCOMP_RET_TRACE and SECCOMP_RET_TRAP may result in seccomp needing to skip a system call without killing the process. This is done by returning a non-zero (-1) value from secure_computing. This change makes x86 respect that return value. To ensure that minimal kernel code is exposed, a non-zero return value results in an immediate return to user space (with an invalid syscall number). Signed-off-by: Will Drewry <wad@chromium.org> Reviewed-by: H. Peter Anvin <hpa@zytor.com> Acked-by: Eric Paris <eparis@redhat.com> v18: rebase and tweaked change description, acked-by v17: added reviewed by and rebased v..: all rebases since original introduction. --- arch/x86/Kconfig | 1 + arch/x86/kernel/ptrace.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 1d14cc6..3a41c44 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -82,6 +82,7 @@ config X86 select ARCH_HAVE_NMI_SAFE_CMPXCHG select GENERIC_IOMAP select DCACHE_WORD_ACCESS if !DEBUG_PAGEALLOC + select HAVE_ARCH_SECCOMP_FILTER config INSTRUCTION_DECODER def_bool (KPROBES || PERF_EVENTS) diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 685845c..13b1990 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c @@ -1480,7 +1480,11 @@ long syscall_trace_enter(struct pt_regs *regs) regs->flags |= X86_EFLAGS_TF; /* do the secure computing check first */ - secure_computing(regs->orig_ax); + if (secure_computing(regs->orig_ax)) { + /* seccomp failures shouldn't expose any additional code. */ + ret = -1L; + goto out; + } if (unlikely(test_thread_flag(TIF_SYSCALL_EMU))) ret = -1L; @@ -1505,6 +1509,7 @@ long syscall_trace_enter(struct pt_regs *regs) regs->dx, regs->r10); #endif +out: return ret ?: regs->orig_ax; } -- 1.7.5.4
WARNING: multiple messages have this Message-ID (diff)
From: Will Drewry <wad@chromium.org> To: linux-kernel@vger.kernel.org Cc: linux-man@vger.kernel.org, linux-security-module@vger.kernel.org, linux-arch@vger.kernel.org, linux-doc@vger.kernel.org, kernel-hardening@lists.openwall.com, netdev@vger.kernel.org, x86@kernel.org, arnd@arndb.de, davem@davemloft.net, hpa@zytor.com, mingo@redhat.com, oleg@redhat.com, peterz@infradead.org, rdunlap@xenotime.net, mcgrathr@chromium.org, tglx@linutronix.de, luto@mit.edu, eparis@redhat.com, serge.hallyn@canonical.com, djm@mindrot.org, scarybeasts@gmail.com, indan@nul.nu, pmoore@redhat.com, akpm@linux-foundation.org, corbet@lwn.net, eric.dumazet@gmail.com, markus@chromium.org, coreyb@linux.vnet.ibm.com, keescook@chromium.org, jmorris@namei.org, Will Drewry <wad@chromium.org> Subject: [kernel-hardening] [PATCH v18 14/15] x86: Enable HAVE_ARCH_SECCOMP_FILTER Date: Thu, 12 Apr 2012 16:48:03 -0500 [thread overview] Message-ID: <1334267284-19166-14-git-send-email-wad@chromium.org> (raw) In-Reply-To: <1334267284-19166-1-git-send-email-wad@chromium.org> Enable support for seccomp filter on x86: - syscall_get_arch() - syscall_get_arguments() - syscall_rollback() - syscall_set_return_value() - SIGSYS siginfo_t support - secure_computing is called from a ptrace_event()-safe context - secure_computing return value is checked (see below). SECCOMP_RET_TRACE and SECCOMP_RET_TRAP may result in seccomp needing to skip a system call without killing the process. This is done by returning a non-zero (-1) value from secure_computing. This change makes x86 respect that return value. To ensure that minimal kernel code is exposed, a non-zero return value results in an immediate return to user space (with an invalid syscall number). Signed-off-by: Will Drewry <wad@chromium.org> Reviewed-by: H. Peter Anvin <hpa@zytor.com> Acked-by: Eric Paris <eparis@redhat.com> v18: rebase and tweaked change description, acked-by v17: added reviewed by and rebased v..: all rebases since original introduction. --- arch/x86/Kconfig | 1 + arch/x86/kernel/ptrace.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletions(-) diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 1d14cc6..3a41c44 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -82,6 +82,7 @@ config X86 select ARCH_HAVE_NMI_SAFE_CMPXCHG select GENERIC_IOMAP select DCACHE_WORD_ACCESS if !DEBUG_PAGEALLOC + select HAVE_ARCH_SECCOMP_FILTER config INSTRUCTION_DECODER def_bool (KPROBES || PERF_EVENTS) diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 685845c..13b1990 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c @@ -1480,7 +1480,11 @@ long syscall_trace_enter(struct pt_regs *regs) regs->flags |= X86_EFLAGS_TF; /* do the secure computing check first */ - secure_computing(regs->orig_ax); + if (secure_computing(regs->orig_ax)) { + /* seccomp failures shouldn't expose any additional code. */ + ret = -1L; + goto out; + } if (unlikely(test_thread_flag(TIF_SYSCALL_EMU))) ret = -1L; @@ -1505,6 +1509,7 @@ long syscall_trace_enter(struct pt_regs *regs) regs->dx, regs->r10); #endif +out: return ret ?: regs->orig_ax; } -- 1.7.5.4
next prev parent reply other threads:[~2012-04-12 21:50 UTC|newest] Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-04-12 21:47 [PATCH v18 01/15] Add PR_{GET,SET}_NO_NEW_PRIVS to prevent execve from granting privs Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 21:47 ` [PATCH v18 02/15] Fix execve behavior apparmor for PR_{GET,SET}_NO_NEW_PRIVS Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 21:47 ` [PATCH v18 03/15] sk_run_filter: add BPF_S_ANC_SECCOMP_LD_W Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 21:47 ` [PATCH v18 04/15] net/compat.c,linux/filter.h: share compat_sock_fprog Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 21:47 ` Will Drewry 2012-04-12 21:47 ` [PATCH v18 05/15] seccomp: kill the seccomp_t typedef Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 21:47 ` [PATCH v18 06/15] asm/syscall.h: add syscall_get_arch Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 21:47 ` [PATCH v18 07/15] arch/x86: add syscall_get_arch to syscall.h Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 22:18 ` Kees Cook 2012-04-12 22:18 ` [kernel-hardening] " Kees Cook 2012-04-12 21:47 ` [PATCH v18 08/15] seccomp: add system call filtering using BPF Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 22:19 ` Kees Cook 2012-04-12 22:19 ` [kernel-hardening] " Kees Cook 2012-04-12 22:19 ` Kees Cook 2012-04-12 21:47 ` [PATCH v18 09/15] seccomp: remove duplicated failure logging Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 21:47 ` [PATCH v18 10/15] seccomp: add SECCOMP_RET_ERRNO Will Drewry 2012-04-12 21:47 ` [kernel-hardening] " Will Drewry 2012-04-12 21:48 ` [PATCH v18 11/15] signal, x86: add SIGSYS info and make it synchronous Will Drewry 2012-04-12 21:48 ` [kernel-hardening] " Will Drewry 2012-04-12 21:48 ` [PATCH v18 12/15] seccomp: Add SECCOMP_RET_TRAP Will Drewry 2012-04-12 21:48 ` [kernel-hardening] " Will Drewry 2012-04-12 21:48 ` [PATCH v18 13/15] ptrace,seccomp: Add PTRACE_SECCOMP support Will Drewry 2012-04-12 21:48 ` [kernel-hardening] " Will Drewry 2012-04-12 21:48 ` Will Drewry [this message] 2012-04-12 21:48 ` [kernel-hardening] [PATCH v18 14/15] x86: Enable HAVE_ARCH_SECCOMP_FILTER Will Drewry 2012-04-12 22:16 ` Kees Cook 2012-04-12 22:16 ` [kernel-hardening] " Kees Cook 2012-04-12 21:48 ` [PATCH v18 15/15] Documentation: prctl/seccomp_filter Will Drewry 2012-04-12 21:48 ` [kernel-hardening] " Will Drewry 2012-04-12 22:11 ` Kees Cook 2012-04-12 22:11 ` [kernel-hardening] " Kees Cook 2012-04-18 2:28 ` Paul Gortmaker 2012-04-18 2:28 ` [kernel-hardening] " Paul Gortmaker 2012-04-18 2:53 ` Will Drewry 2012-04-18 2:53 ` [kernel-hardening] " Will Drewry 2012-04-18 2:53 ` Will Drewry 2012-04-12 22:17 ` [PATCH v18 01/15] Add PR_{GET,SET}_NO_NEW_PRIVS to prevent execve from granting privs Kees Cook 2012-04-12 22:17 ` [kernel-hardening] " Kees Cook 2012-04-13 4:16 ` James Morris 2012-04-13 4:16 ` [kernel-hardening] " James Morris 2012-04-13 4:16 ` James Morris 2012-04-13 4:16 ` James Morris 2012-04-13 4:25 ` Andrew Lutomirski 2012-04-13 4:25 ` [kernel-hardening] " Andrew Lutomirski 2012-04-13 4:25 ` Andrew Lutomirski 2012-04-13 4:34 ` James Morris 2012-04-13 4:34 ` [kernel-hardening] " James Morris 2012-04-13 4:34 ` James Morris 2012-04-13 4:34 ` James Morris 2012-04-13 4:40 ` Andy Lutomirski 2012-04-13 4:40 ` [kernel-hardening] " Andy Lutomirski 2012-04-14 1:45 ` James Morris 2012-04-14 1:45 ` [kernel-hardening] " James Morris 2012-04-14 3:06 ` Will Drewry 2012-04-14 3:06 ` [kernel-hardening] " Will Drewry 2012-04-14 3:06 ` Will Drewry
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=1334267284-19166-14-git-send-email-wad@chromium.org \ --to=wad@chromium.org \ --cc=akpm@linux-foundation.org \ --cc=arnd@arndb.de \ --cc=corbet@lwn.net \ --cc=coreyb@linux.vnet.ibm.com \ --cc=davem@davemloft.net \ --cc=djm@mindrot.org \ --cc=eparis@redhat.com \ --cc=eric.dumazet@gmail.com \ --cc=hpa@zytor.com \ --cc=indan@nul.nu \ --cc=jmorris@namei.org \ --cc=keescook@chromium.org \ --cc=kernel-hardening@lists.openwall.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-doc@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-man@vger.kernel.org \ --cc=linux-security-module@vger.kernel.org \ --cc=luto@mit.edu \ --cc=markus@chromium.org \ --cc=mcgrathr@chromium.org \ --cc=mingo@redhat.com \ --cc=netdev@vger.kernel.org \ --cc=oleg@redhat.com \ --cc=peterz@infradead.org \ --cc=pmoore@redhat.com \ --cc=rdunlap@xenotime.net \ --cc=scarybeasts@gmail.com \ --cc=serge.hallyn@canonical.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: linkBe 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.