From: David Howells <dhowells@redhat.com> To: keyrings@vger.kernel.org Cc: matthew.garrett@nebula.com, linux-efi@vger.kernel.org, Kees Cook <keescook@chromium.org>, linux-kernel@vger.kernel.org, dhowells@redhat.com, linux-security-module@vger.kernel.org Subject: [PATCH 16/16] x86: Restrict MSR access when the kernel is locked down Date: Wed, 16 Nov 2016 21:49:12 +0000 [thread overview] Message-ID: <147933295221.19316.10760767173988816147.stgit@warthog.procyon.org.uk> (raw) In-Reply-To: <147933283664.19316.12454053022687659937.stgit@warthog.procyon.org.uk> From: Matthew Garrett <matthew.garrett@nebula.com> Writing to MSRs should not be allowed if the kernel is locked down, since it could lead to execution of arbitrary code in kernel mode. Based on a patch by Kees Cook. Cc: Kees Cook <keescook@chromium.org> Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com> Signed-off-by: David Howells <dhowells@redhat.com> --- arch/x86/kernel/msr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c index 7f3550acde1b..b875e54bdbf7 100644 --- a/arch/x86/kernel/msr.c +++ b/arch/x86/kernel/msr.c @@ -39,6 +39,7 @@ #include <linux/notifier.h> #include <linux/uaccess.h> #include <linux/gfp.h> +#include <linux/security.h> #include <asm/cpufeature.h> #include <asm/msr.h> @@ -83,6 +84,9 @@ static ssize_t msr_write(struct file *file, const char __user *buf, int err = 0; ssize_t bytes = 0; + if (kernel_is_locked_down()) + return -EPERM; + if (count % 8) return -EINVAL; /* Invalid chunk size */ @@ -130,6 +134,10 @@ static long msr_ioctl(struct file *file, unsigned int ioc, unsigned long arg) err = -EBADF; break; } + if (kernel_is_locked_down()) { + err = -EPERM; + break; + } if (copy_from_user(®s, uregs, sizeof regs)) { err = -EFAULT; break;
WARNING: multiple messages have this Message-ID (diff)
From: David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> To: keyrings-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org, linux-efi-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Kees Cook <keescook-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org>, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, linux-security-module-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Subject: [PATCH 16/16] x86: Restrict MSR access when the kernel is locked down Date: Wed, 16 Nov 2016 21:49:12 +0000 [thread overview] Message-ID: <147933295221.19316.10760767173988816147.stgit@warthog.procyon.org.uk> (raw) In-Reply-To: <147933283664.19316.12454053022687659937.stgit-S6HVgzuS8uM4Awkfq6JHfwNdhmdF6hFW@public.gmane.org> From: Matthew Garrett <matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org> Writing to MSRs should not be allowed if the kernel is locked down, since it could lead to execution of arbitrary code in kernel mode. Based on a patch by Kees Cook. Cc: Kees Cook <keescook-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> Signed-off-by: Matthew Garrett <matthew.garrett-05XSO3Yj/JvQT0dZR+AlfA@public.gmane.org> Signed-off-by: David Howells <dhowells-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> --- arch/x86/kernel/msr.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c index 7f3550acde1b..b875e54bdbf7 100644 --- a/arch/x86/kernel/msr.c +++ b/arch/x86/kernel/msr.c @@ -39,6 +39,7 @@ #include <linux/notifier.h> #include <linux/uaccess.h> #include <linux/gfp.h> +#include <linux/security.h> #include <asm/cpufeature.h> #include <asm/msr.h> @@ -83,6 +84,9 @@ static ssize_t msr_write(struct file *file, const char __user *buf, int err = 0; ssize_t bytes = 0; + if (kernel_is_locked_down()) + return -EPERM; + if (count % 8) return -EINVAL; /* Invalid chunk size */ @@ -130,6 +134,10 @@ static long msr_ioctl(struct file *file, unsigned int ioc, unsigned long arg) err = -EBADF; break; } + if (kernel_is_locked_down()) { + err = -EPERM; + break; + } if (copy_from_user(®s, uregs, sizeof regs)) { err = -EFAULT; break;
next prev parent reply other threads:[~2016-11-16 21:49 UTC|newest] Thread overview: 101+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-11-16 21:47 [PATCH 00/16] Kernel lockdown David Howells 2016-11-16 21:47 ` David Howells 2016-11-16 21:47 ` [PATCH 01/16] Add the ability to lock down access to the running kernel image David Howells 2016-11-16 22:20 ` Borislav Petkov 2016-11-16 22:20 ` Borislav Petkov 2016-11-16 22:40 ` David Howells 2016-12-25 21:20 ` Pavel Machek 2016-12-25 21:44 ` David Howells 2016-11-16 21:47 ` [PATCH 02/16] efi: Get the secure boot status David Howells 2016-11-17 12:37 ` Lukas Wunner 2016-11-22 0:31 ` [PATCH 1/6] x86/efi: Allow invocation of arbitrary runtime services David Howells 2016-11-22 0:31 ` David Howells 2016-11-22 10:20 ` Lukas Wunner 2016-11-22 10:20 ` Lukas Wunner 2016-11-22 14:17 ` David Howells 2016-11-22 14:58 ` Joe Perches 2016-11-22 15:52 ` David Howells 2016-11-22 15:52 ` David Howells 2016-11-22 16:25 ` Joe Perches 2016-11-22 16:25 ` Joe Perches 2016-11-22 16:40 ` David Howells 2016-11-22 16:51 ` Joe Perches 2016-11-22 0:31 ` [PATCH 2/6] arm/efi: " David Howells 2016-11-22 0:31 ` [PATCH 3/6] efi: Add SHIM and image security database GUID definitions David Howells 2016-11-22 0:32 ` [PATCH 4/6] efi: Get the secure boot status David Howells 2016-11-22 10:44 ` Lukas Wunner 2016-11-22 10:49 ` Ard Biesheuvel 2016-11-22 10:49 ` Ard Biesheuvel 2016-11-22 14:47 ` David Howells 2016-11-22 20:30 ` Lukas Wunner 2016-11-23 0:02 ` David Howells 2016-11-22 14:52 ` David Howells 2016-11-22 14:52 ` David Howells 2016-11-22 20:36 ` Lukas Wunner 2016-11-22 20:36 ` Lukas Wunner 2016-11-22 14:57 ` David Howells 2016-11-22 14:57 ` David Howells 2016-11-22 0:32 ` [PATCH 5/6] efi: Disable secure boot if shim is in insecure mode David Howells 2016-11-22 13:03 ` Lukas Wunner 2016-11-22 0:32 ` [PATCH 6/6] efi: Add EFI_SECURE_BOOT bit David Howells 2016-11-22 13:04 ` Lukas Wunner 2016-11-21 11:42 ` [PATCH 02/16] efi: Get the secure boot status David Howells 2016-11-21 11:42 ` David Howells 2016-11-21 11:52 ` Ard Biesheuvel 2016-11-21 11:52 ` Ard Biesheuvel 2016-11-21 12:41 ` David Howells 2016-11-21 12:41 ` David Howells 2016-11-21 13:14 ` Ard Biesheuvel 2016-11-21 15:17 ` Lukas Wunner 2016-11-21 15:17 ` Lukas Wunner 2016-11-21 15:25 ` Ard Biesheuvel 2016-11-21 11:46 ` David Howells 2016-11-21 19:58 ` Lukas Wunner 2016-11-16 21:47 ` [PATCH 03/16] efi: Disable secure boot if shim is in insecure mode David Howells 2016-11-16 21:47 ` [PATCH 04/16] efi: Lock down the kernel if booted in secure boot mode David Howells 2016-11-16 21:47 ` [PATCH 05/16] efi: Add EFI_SECURE_BOOT bit David Howells 2016-11-17 21:58 ` Ard Biesheuvel 2016-11-18 11:58 ` Josh Boyer 2016-11-18 12:10 ` Ard Biesheuvel 2016-11-18 12:10 ` Ard Biesheuvel 2016-11-18 17:28 ` David Howells 2016-11-18 17:28 ` David Howells 2016-11-16 21:48 ` [PATCH 06/16] Add a sysrq option to exit secure boot mode David Howells 2016-11-16 21:48 ` [PATCH 07/16] kexec: Disable at runtime if the kernel is locked down David Howells 2016-11-16 21:48 ` [PATCH 08/16] Copy secure_boot flag in boot params across kexec reboot David Howells 2016-11-16 21:48 ` [PATCH 09/16] hibernate: Disable when the kernel is locked down David Howells 2016-11-16 21:48 ` [PATCH 10/16] PCI: Lock down BAR access " David Howells 2016-11-16 21:48 ` [PATCH 11/16] x86: Lock down IO port " David Howells 2016-11-16 21:48 ` David Howells 2016-11-16 21:48 ` [PATCH 12/16] ACPI: Limit access to custom_method " David Howells 2016-11-16 21:48 ` [PATCH 13/16] asus-wmi: Restrict debugfs interface " David Howells 2016-11-16 21:48 ` [PATCH 14/16] Restrict /dev/mem and /dev/kmem " David Howells 2016-11-16 21:49 ` [PATCH 15/16] acpi: Ignore acpi_rsdp kernel param when the kernel has been " David Howells 2016-11-16 21:49 ` David Howells [this message] 2016-11-16 21:49 ` [PATCH 16/16] x86: Restrict MSR access when the kernel is " David Howells 2016-11-16 22:27 ` [PATCH 00/16] Kernel lockdown One Thousand Gnomes 2016-11-16 22:27 ` One Thousand Gnomes 2016-11-21 19:53 ` Ard Biesheuvel 2016-11-30 14:27 ` One Thousand Gnomes 2016-11-16 22:28 ` Justin Forbes 2016-11-21 23:10 ` [PATCH] Lock down drivers that can have io ports, io mem, irqs and dma changed David Howells 2016-11-22 6:12 ` Dominik Brodowski 2016-11-22 6:12 ` Dominik Brodowski 2016-11-23 12:58 ` David Howells 2016-11-23 19:21 ` Dominik Brodowski 2016-11-24 17:34 ` David Howells 2016-11-24 17:34 ` David Howells 2016-11-24 20:19 ` Dominik Brodowski 2016-11-25 14:49 ` David Howells 2016-11-28 22:32 ` Corey Minyard 2016-11-28 22:32 ` Corey Minyard 2016-11-29 0:11 ` David Howells 2016-11-29 0:23 ` Corey Minyard 2016-11-29 14:03 ` David Howells 2016-11-29 14:35 ` Corey Minyard 2016-11-29 14:35 ` Corey Minyard 2016-11-30 14:41 ` One Thousand Gnomes 2016-11-30 14:41 ` One Thousand Gnomes 2016-11-30 16:25 ` David Howells 2016-11-30 16:25 ` David Howells 2016-11-29 10:40 ` 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=147933295221.19316.10760767173988816147.stgit@warthog.procyon.org.uk \ --to=dhowells@redhat.com \ --cc=keescook@chromium.org \ --cc=keyrings@vger.kernel.org \ --cc=linux-efi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-security-module@vger.kernel.org \ --cc=matthew.garrett@nebula.com \ /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.