diff options
author | Coiby Xu <coxu@redhat.com> | 2022-07-13 15:21:11 +0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-07-21 21:24:29 +0200 |
commit | 2340428c90d43472f317125a69dace12e80927b6 (patch) | |
tree | 281e9dda1894a252498c58f7249633d14604a8fe /kernel | |
parent | f4bd3202a2b4194ab6c0ce61628095d54f994db4 (diff) | |
download | linux-stable-2340428c90d43472f317125a69dace12e80927b6.tar.gz linux-stable-2340428c90d43472f317125a69dace12e80927b6.tar.bz2 linux-stable-2340428c90d43472f317125a69dace12e80927b6.zip |
ima: force signature verification when CONFIG_KEXEC_SIG is configured
[ Upstream commit af16df54b89dee72df253abc5e7b5e8a6d16c11c ]
Currently, an unsigned kernel could be kexec'ed when IMA arch specific
policy is configured unless lockdown is enabled. Enforce kernel
signature verification check in the kexec_file_load syscall when IMA
arch specific policy is configured.
Fixes: 99d5cadfde2b ("kexec_file: split KEXEC_VERIFY_SIG into KEXEC_SIG and KEXEC_SIG_FORCE")
Reported-and-suggested-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Coiby Xu <coxu@redhat.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/kexec_file.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/kernel/kexec_file.c b/kernel/kexec_file.c index e289e60ba3ad..f7a4fd4d243f 100644 --- a/kernel/kexec_file.c +++ b/kernel/kexec_file.c @@ -29,6 +29,15 @@ #include <linux/vmalloc.h> #include "kexec_internal.h" +#ifdef CONFIG_KEXEC_SIG +static bool sig_enforce = IS_ENABLED(CONFIG_KEXEC_SIG_FORCE); + +void set_kexec_sig_enforced(void) +{ + sig_enforce = true; +} +#endif + static int kexec_calculate_store_digests(struct kimage *image); /* @@ -159,7 +168,7 @@ kimage_validate_signature(struct kimage *image) image->kernel_buf_len); if (ret) { - if (IS_ENABLED(CONFIG_KEXEC_SIG_FORCE)) { + if (sig_enforce) { pr_notice("Enforced kernel signature verification failed (%d).\n", ret); return ret; } |