From: Will Deacon <will.deacon@arm.com>
To: AKASHI Takahiro <takahiro.akashi@linaro.org>
Cc: prudo@linux.ibm.com, herbert@gondor.apana.org.au, bhe@redhat.com,
ard.biesheuvel@linaro.org, catalin.marinas@arm.com,
bhsharma@redhat.com, heiko.carstens@de.ibm.com,
linux-kernel@vger.kernel.org, dhowells@redhat.com, arnd@arndb.de,
linux-arm-kernel@lists.infradead.org, kexec@lists.infradead.org,
schwidefsky@de.ibm.com, james.morse@arm.com, dyoung@redhat.com,
davem@davemloft.net, vgoyal@redhat.com
Subject: Re: [PATCH v16 15/16] arm64: kexec_file: add kernel signature verification support
Date: Fri, 30 Nov 2018 13:21:14 +0000 [thread overview]
Message-ID: <20181130132113.GE9000@arm.com> (raw)
In-Reply-To: <20181115055254.2812-16-takahiro.akashi@linaro.org>
On Thu, Nov 15, 2018 at 02:52:54PM +0900, AKASHI Takahiro wrote:
> With this patch, kernel verification can be done without IMA security
> subsystem enabled. Turn on CONFIG_KEXEC_VERIFY_SIG instead.
>
> On x86, a signature is embedded into a PE file (Microsoft's format) header
> of binary. Since arm64's "Image" can also be seen as a PE file as far as
> CONFIG_EFI is enabled, we adopt this format for kernel signing.
>
> You can create a signed kernel image with:
> $ sbsign --key ${KEY} --cert ${CERT} Image
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will.deacon@arm.com>
> Reviewed-by: James Morse <james.morse@arm.com>
> ---
> arch/arm64/Kconfig | 24 ++++++++++++++++++++++++
> arch/arm64/kernel/kexec_image.c | 17 +++++++++++++++++
> 2 files changed, 41 insertions(+)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 93dc4d36d6db..11f3e1a00588 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -867,6 +867,30 @@ config KEXEC_FILE
> for kernel and initramfs as opposed to list of segments as
> accepted by previous system call.
>
> +config KEXEC_VERIFY_SIG
> + bool "Verify kernel signature during kexec_file_load() syscall"
> + depends on KEXEC_FILE
> + help
> + Select this option to verify a signature with loaded kernel
> + image. If configured, any attempt of loading a image without
> + valid signature will fail.
> +
> + In addition to that option, you need to enable signature
> + verification for the corresponding kernel image type being
> + loaded in order for this to work.
> +
> +config KEXEC_IMAGE_VERIFY_SIG
> + bool "Enable Image signature verification support"
> + default y
> + depends on KEXEC_VERIFY_SIG
> + depends on EFI && SIGNED_PE_FILE_VERIFICATION
> + help
> + Enable Image signature verification support.
> +
> +comment "Support for PE file signature verification disabled"
> + depends on KEXEC_VERIFY_SIG
> + depends on !EFI || !SIGNED_PE_FILE_VERIFICATION
> +
> config CRASH_DUMP
> bool "Build kdump crash kernel"
> help
> diff --git a/arch/arm64/kernel/kexec_image.c b/arch/arm64/kernel/kexec_image.c
> index 9f0d8b5d62d3..d1c6c54c22e3 100644
> --- a/arch/arm64/kernel/kexec_image.c
> +++ b/arch/arm64/kernel/kexec_image.c
> @@ -12,7 +12,9 @@
> #include <linux/errno.h>
> #include <linux/kernel.h>
> #include <linux/kexec.h>
> +#include <linux/pe.h>
> #include <linux/string.h>
> +#include <linux/verification.h>
> #include <asm/byteorder.h>
> #include <asm/cpufeature.h>
> #include <asm/image.h>
> @@ -29,6 +31,10 @@ static int image_probe(const char *kernel_buf, unsigned long kernel_len)
> sizeof(h->magic)))
> return -EINVAL;
>
> + pr_debug("PE format: %s\n",
> + memcmp(&((struct mz_hdr *)h)->magic, "MZ", 2) ?
> + "no" : "yes");
>
Is this hunk really necessary? I'd prefer not to commit pr_debug()
invocations.
Will
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will.deacon@arm.com>
To: AKASHI Takahiro <takahiro.akashi@linaro.org>
Cc: prudo@linux.ibm.com, herbert@gondor.apana.org.au, bhe@redhat.com,
ard.biesheuvel@linaro.org, catalin.marinas@arm.com,
bhsharma@redhat.com, heiko.carstens@de.ibm.com,
linux-kernel@vger.kernel.org, dhowells@redhat.com, arnd@arndb.de,
linux-arm-kernel@lists.infradead.org, kexec@lists.infradead.org,
schwidefsky@de.ibm.com, james.morse@arm.com, dyoung@redhat.com,
davem@davemloft.net, vgoyal@redhat.com
Subject: Re: [PATCH v16 15/16] arm64: kexec_file: add kernel signature verification support
Date: Fri, 30 Nov 2018 13:21:14 +0000 [thread overview]
Message-ID: <20181130132113.GE9000@arm.com> (raw)
In-Reply-To: <20181115055254.2812-16-takahiro.akashi@linaro.org>
On Thu, Nov 15, 2018 at 02:52:54PM +0900, AKASHI Takahiro wrote:
> With this patch, kernel verification can be done without IMA security
> subsystem enabled. Turn on CONFIG_KEXEC_VERIFY_SIG instead.
>
> On x86, a signature is embedded into a PE file (Microsoft's format) header
> of binary. Since arm64's "Image" can also be seen as a PE file as far as
> CONFIG_EFI is enabled, we adopt this format for kernel signing.
>
> You can create a signed kernel image with:
> $ sbsign --key ${KEY} --cert ${CERT} Image
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will.deacon@arm.com>
> Reviewed-by: James Morse <james.morse@arm.com>
> ---
> arch/arm64/Kconfig | 24 ++++++++++++++++++++++++
> arch/arm64/kernel/kexec_image.c | 17 +++++++++++++++++
> 2 files changed, 41 insertions(+)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 93dc4d36d6db..11f3e1a00588 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -867,6 +867,30 @@ config KEXEC_FILE
> for kernel and initramfs as opposed to list of segments as
> accepted by previous system call.
>
> +config KEXEC_VERIFY_SIG
> + bool "Verify kernel signature during kexec_file_load() syscall"
> + depends on KEXEC_FILE
> + help
> + Select this option to verify a signature with loaded kernel
> + image. If configured, any attempt of loading a image without
> + valid signature will fail.
> +
> + In addition to that option, you need to enable signature
> + verification for the corresponding kernel image type being
> + loaded in order for this to work.
> +
> +config KEXEC_IMAGE_VERIFY_SIG
> + bool "Enable Image signature verification support"
> + default y
> + depends on KEXEC_VERIFY_SIG
> + depends on EFI && SIGNED_PE_FILE_VERIFICATION
> + help
> + Enable Image signature verification support.
> +
> +comment "Support for PE file signature verification disabled"
> + depends on KEXEC_VERIFY_SIG
> + depends on !EFI || !SIGNED_PE_FILE_VERIFICATION
> +
> config CRASH_DUMP
> bool "Build kdump crash kernel"
> help
> diff --git a/arch/arm64/kernel/kexec_image.c b/arch/arm64/kernel/kexec_image.c
> index 9f0d8b5d62d3..d1c6c54c22e3 100644
> --- a/arch/arm64/kernel/kexec_image.c
> +++ b/arch/arm64/kernel/kexec_image.c
> @@ -12,7 +12,9 @@
> #include <linux/errno.h>
> #include <linux/kernel.h>
> #include <linux/kexec.h>
> +#include <linux/pe.h>
> #include <linux/string.h>
> +#include <linux/verification.h>
> #include <asm/byteorder.h>
> #include <asm/cpufeature.h>
> #include <asm/image.h>
> @@ -29,6 +31,10 @@ static int image_probe(const char *kernel_buf, unsigned long kernel_len)
> sizeof(h->magic)))
> return -EINVAL;
>
> + pr_debug("PE format: %s\n",
> + memcmp(&((struct mz_hdr *)h)->magic, "MZ", 2) ?
> + "no" : "yes");
>
Is this hunk really necessary? I'd prefer not to commit pr_debug()
invocations.
Will
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will.deacon@arm.com>
To: AKASHI Takahiro <takahiro.akashi@linaro.org>
Cc: catalin.marinas@arm.com, dhowells@redhat.com, vgoyal@redhat.com,
herbert@gondor.apana.org.au, davem@davemloft.net,
dyoung@redhat.com, bhe@redhat.com, arnd@arndb.de,
schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com,
prudo@linux.ibm.com, ard.biesheuvel@linaro.org,
james.morse@arm.com, bhsharma@redhat.com,
kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v16 15/16] arm64: kexec_file: add kernel signature verification support
Date: Fri, 30 Nov 2018 13:21:14 +0000 [thread overview]
Message-ID: <20181130132113.GE9000@arm.com> (raw)
In-Reply-To: <20181115055254.2812-16-takahiro.akashi@linaro.org>
On Thu, Nov 15, 2018 at 02:52:54PM +0900, AKASHI Takahiro wrote:
> With this patch, kernel verification can be done without IMA security
> subsystem enabled. Turn on CONFIG_KEXEC_VERIFY_SIG instead.
>
> On x86, a signature is embedded into a PE file (Microsoft's format) header
> of binary. Since arm64's "Image" can also be seen as a PE file as far as
> CONFIG_EFI is enabled, we adopt this format for kernel signing.
>
> You can create a signed kernel image with:
> $ sbsign --key ${KEY} --cert ${CERT} Image
>
> Signed-off-by: AKASHI Takahiro <takahiro.akashi@linaro.org>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will.deacon@arm.com>
> Reviewed-by: James Morse <james.morse@arm.com>
> ---
> arch/arm64/Kconfig | 24 ++++++++++++++++++++++++
> arch/arm64/kernel/kexec_image.c | 17 +++++++++++++++++
> 2 files changed, 41 insertions(+)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 93dc4d36d6db..11f3e1a00588 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -867,6 +867,30 @@ config KEXEC_FILE
> for kernel and initramfs as opposed to list of segments as
> accepted by previous system call.
>
> +config KEXEC_VERIFY_SIG
> + bool "Verify kernel signature during kexec_file_load() syscall"
> + depends on KEXEC_FILE
> + help
> + Select this option to verify a signature with loaded kernel
> + image. If configured, any attempt of loading a image without
> + valid signature will fail.
> +
> + In addition to that option, you need to enable signature
> + verification for the corresponding kernel image type being
> + loaded in order for this to work.
> +
> +config KEXEC_IMAGE_VERIFY_SIG
> + bool "Enable Image signature verification support"
> + default y
> + depends on KEXEC_VERIFY_SIG
> + depends on EFI && SIGNED_PE_FILE_VERIFICATION
> + help
> + Enable Image signature verification support.
> +
> +comment "Support for PE file signature verification disabled"
> + depends on KEXEC_VERIFY_SIG
> + depends on !EFI || !SIGNED_PE_FILE_VERIFICATION
> +
> config CRASH_DUMP
> bool "Build kdump crash kernel"
> help
> diff --git a/arch/arm64/kernel/kexec_image.c b/arch/arm64/kernel/kexec_image.c
> index 9f0d8b5d62d3..d1c6c54c22e3 100644
> --- a/arch/arm64/kernel/kexec_image.c
> +++ b/arch/arm64/kernel/kexec_image.c
> @@ -12,7 +12,9 @@
> #include <linux/errno.h>
> #include <linux/kernel.h>
> #include <linux/kexec.h>
> +#include <linux/pe.h>
> #include <linux/string.h>
> +#include <linux/verification.h>
> #include <asm/byteorder.h>
> #include <asm/cpufeature.h>
> #include <asm/image.h>
> @@ -29,6 +31,10 @@ static int image_probe(const char *kernel_buf, unsigned long kernel_len)
> sizeof(h->magic)))
> return -EINVAL;
>
> + pr_debug("PE format: %s\n",
> + memcmp(&((struct mz_hdr *)h)->magic, "MZ", 2) ?
> + "no" : "yes");
>
Is this hunk really necessary? I'd prefer not to commit pr_debug()
invocations.
Will
next prev parent reply other threads:[~2018-11-30 13:21 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-15 5:52 [PATCH v16 00/16] arm64: kexec: add kexec_file_load() support AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 01/16] asm-generic: add kexec_file_load system call to unistd.h AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 02/16] kexec_file: make kexec_image_post_load_cleanup_default() global AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 03/16] s390, kexec_file: drop arch_kexec_mem_walk() AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 04/16] powerpc, kexec_file: factor out memblock-based arch_kexec_walk_mem() AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 05/16] kexec_file: kexec_walk_memblock() only walks a dedicated region at kdump AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 06/16] lib: fdt: add a helper function for handling memory range property AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-30 13:21 ` Will Deacon
2018-11-30 13:21 ` Will Deacon
2018-11-30 13:21 ` Will Deacon
2018-12-06 14:47 ` Rob Herring
2018-12-06 14:47 ` Rob Herring
2018-12-06 14:47 ` Rob Herring
2018-12-06 14:47 ` Rob Herring
2018-12-06 15:54 ` Will Deacon
2018-12-06 15:54 ` Will Deacon
2018-12-06 15:54 ` Will Deacon
2018-12-06 15:54 ` Will Deacon
2018-12-07 10:12 ` James Morse
2018-12-07 10:12 ` James Morse
2018-12-07 10:12 ` James Morse
2018-12-11 6:17 ` AKASHI, Takahiro
2018-12-11 6:17 ` AKASHI, Takahiro
2018-12-11 6:17 ` AKASHI, Takahiro
2018-12-11 10:09 ` James Morse
2018-12-11 10:09 ` James Morse
2018-12-11 10:09 ` James Morse
2018-12-12 1:28 ` AKASHI, Takahiro
2018-12-12 1:28 ` AKASHI, Takahiro
2018-12-12 1:28 ` AKASHI, Takahiro
2018-11-15 5:52 ` [PATCH v16 07/16] arm64: add image head flag definitions AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 08/16] arm64: cpufeature: add MMFR0 helper functions AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 09/16] arm64: enable KEXEC_FILE config AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 10/16] arm64: kexec_file: load initrd and device-tree AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 11/16] arm64: kexec_file: allow for loading Image-format kernel AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 12/16] arm64: kexec_file: add crash dump support AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 13/16] arm64: kexec_file: invoke the kernel without purgatory AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 14/16] include: pe.h: remove message[] from mz header definition AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 15/16] arm64: kexec_file: add kernel signature verification support AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-30 13:21 ` Will Deacon [this message]
2018-11-30 13:21 ` Will Deacon
2018-11-30 13:21 ` Will Deacon
2018-12-11 5:42 ` AKASHI Takahiro
2018-12-11 5:42 ` AKASHI Takahiro
2018-12-11 5:42 ` AKASHI Takahiro
2018-11-15 5:52 ` [PATCH v16 16/16] arm64: kexec_file: add kaslr support AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-15 5:52 ` AKASHI Takahiro
2018-11-30 13:19 ` Will Deacon
2018-11-30 13:19 ` Will Deacon
2018-11-30 13:19 ` Will Deacon
2018-12-11 5:50 ` AKASHI Takahiro
2018-12-11 5:50 ` AKASHI Takahiro
2018-12-11 5:50 ` AKASHI Takahiro
2018-12-11 7:51 ` AKASHI Takahiro
2018-12-11 7:51 ` AKASHI Takahiro
2018-12-11 7:51 ` AKASHI Takahiro
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=20181130132113.GE9000@arm.com \
--to=will.deacon@arm.com \
--cc=ard.biesheuvel@linaro.org \
--cc=arnd@arndb.de \
--cc=bhe@redhat.com \
--cc=bhsharma@redhat.com \
--cc=catalin.marinas@arm.com \
--cc=davem@davemloft.net \
--cc=dhowells@redhat.com \
--cc=dyoung@redhat.com \
--cc=heiko.carstens@de.ibm.com \
--cc=herbert@gondor.apana.org.au \
--cc=james.morse@arm.com \
--cc=kexec@lists.infradead.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=prudo@linux.ibm.com \
--cc=schwidefsky@de.ibm.com \
--cc=takahiro.akashi@linaro.org \
--cc=vgoyal@redhat.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: link
Be 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.