Message ID | 20220401013118.348084-1-coxu@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | use more system keyrings to verify arm64 kdump kernel image signature | expand |
Hi Coiby, On 04/01/22 at 09:31am, Coiby Xu wrote: > Currently, a problem faced by arm64 is if a kernel image is signed by a > MOK key, loading it via the kexec_file_load() system call would be > rejected with the error "Lockdown: kexec: kexec of unsigned images is > restricted; see man kernel_lockdown.7". > > This patch set allows arm64 to use more system keyrings to verify kdump > kernel image signature by making the existing code in x64 public. Thanks for updating. It would be great to tell why the problem is met, then allow arm64 to use more system keyrings can solve it. Meanwhile, I noticed Michal also posted a patchset to address the same issue, while he tries to make it work on s390 too. Could you check and consider if these two patches can be integrated? [PATCH 0/4] Unifrom keyring support across architectures and functions https://lore.kernel.org/lkml/cover.1644953683.git.msuchanek@suse.de/ Thanks Baoquan > > v5: > - improve commit message [Baoquan] > > v4: > - fix commit reference format issue and other checkpatch.pl warnings [Baoquan] > > v3: > - s/arch_kexec_kernel_verify_pe_sig/kexec_kernel_verify_pe_sig [Eric] > - clean up arch_kexec_kernel_verify_sig [Eric] > > v2: > - only x86_64 and arm64 need to enable PE file signature check [Dave] > > Coiby Xu (3): > kexec: clean up arch_kexec_kernel_verify_sig > kexec, KEYS: make the code in bzImage64_verify_sig generic > arm64: kexec_file: use more system keyrings to verify kernel image > signature > > arch/arm64/kernel/kexec_image.c | 4 +-- > arch/x86/kernel/kexec-bzimage64.c | 13 +------- > include/linux/kexec.h | 7 +++-- > kernel/kexec_file.c | 51 ++++++++++++++++++------------- > 4 files changed, 37 insertions(+), 38 deletions(-) > > -- > 2.34.1 >
On Fri, Apr 08, 2022 at 03:17:19PM +0800, Baoquan He wrote: > Hi Coiby, > > On 04/01/22 at 09:31am, Coiby Xu wrote: > > Currently, a problem faced by arm64 is if a kernel image is signed by a > > MOK key, loading it via the kexec_file_load() system call would be > > rejected with the error "Lockdown: kexec: kexec of unsigned images is > > restricted; see man kernel_lockdown.7". > > > > This patch set allows arm64 to use more system keyrings to verify kdump > > kernel image signature by making the existing code in x64 public. > > Thanks for updating. It would be great to tell why the problem is > met, then allow arm64 to use more system keyrings can solve it. The reason is that MOK keys are (if anywhere) linked to the secondary keyring, and only primary keyring is used on arm64. Thanks Michal > > Meanwhile, I noticed Michal also posted a patchset to address the same > issue, while he tries to make it work on s390 too. Could you check and > consider if these two patches can be integrated? > > [PATCH 0/4] Unifrom keyring support across architectures and functions > https://lore.kernel.org/lkml/cover.1644953683.git.msuchanek@suse.de/ > > Thanks > Baoquan > > > > > v5: > > - improve commit message [Baoquan] > > > > v4: > > - fix commit reference format issue and other checkpatch.pl warnings [Baoquan] > > > > v3: > > - s/arch_kexec_kernel_verify_pe_sig/kexec_kernel_verify_pe_sig [Eric] > > - clean up arch_kexec_kernel_verify_sig [Eric] > > > > v2: > > - only x86_64 and arm64 need to enable PE file signature check [Dave] > > > > Coiby Xu (3): > > kexec: clean up arch_kexec_kernel_verify_sig > > kexec, KEYS: make the code in bzImage64_verify_sig generic > > arm64: kexec_file: use more system keyrings to verify kernel image > > signature > > > > arch/arm64/kernel/kexec_image.c | 4 +-- > > arch/x86/kernel/kexec-bzimage64.c | 13 +------- > > include/linux/kexec.h | 7 +++-- > > kernel/kexec_file.c | 51 ++++++++++++++++++------------- > > 4 files changed, 37 insertions(+), 38 deletions(-) > > > > -- > > 2.34.1 > > >
On 04/08/22 at 10:59am, Michal Suchánek wrote: > On Fri, Apr 08, 2022 at 03:17:19PM +0800, Baoquan He wrote: > > Hi Coiby, > > > > On 04/01/22 at 09:31am, Coiby Xu wrote: > > > Currently, a problem faced by arm64 is if a kernel image is signed by a > > > MOK key, loading it via the kexec_file_load() system call would be > > > rejected with the error "Lockdown: kexec: kexec of unsigned images is > > > restricted; see man kernel_lockdown.7". > > > > > > This patch set allows arm64 to use more system keyrings to verify kdump > > > kernel image signature by making the existing code in x64 public. > > > > Thanks for updating. It would be great to tell why the problem is > > met, then allow arm64 to use more system keyrings can solve it. > > The reason is that MOK keys are (if anywhere) linked to the secondary > keyring, and only primary keyring is used on arm64. Thanks for explaining. This is valuable information and should be put into log for better understanding when reviewing or reading code later.
On Mon, Apr 11, 2022 at 09:13:32AM +0800, Baoquan He wrote: >On 04/08/22 at 10:59am, Michal Suchánek wrote: >> On Fri, Apr 08, 2022 at 03:17:19PM +0800, Baoquan He wrote: >> > Hi Coiby, >> > >> > On 04/01/22 at 09:31am, Coiby Xu wrote: >> > > Currently, a problem faced by arm64 is if a kernel image is signed by a >> > > MOK key, loading it via the kexec_file_load() system call would be >> > > rejected with the error "Lockdown: kexec: kexec of unsigned images is >> > > restricted; see man kernel_lockdown.7". >> > > >> > > This patch set allows arm64 to use more system keyrings to verify kdump >> > > kernel image signature by making the existing code in x64 public. >> > >> > Thanks for updating. It would be great to tell why the problem is >> > met, then allow arm64 to use more system keyrings can solve it. >> >> The reason is that MOK keys are (if anywhere) linked to the secondary ^^^^^^^^^ platform? >> keyring, and only primary keyring is used on arm64. Thanks Michal for providing the info! Btw, I think you made a typo because MOK keys are linked to the platform keyring, right? > >Thanks for explaining. This is valuable information and should >be put into log for better understanding when reviewing or >reading code later. Thanks for the reminder! I'll include this info in the commit message. >
On Mon, Apr 11, 2022 at 09:52:18AM +0800, Coiby Xu wrote: > On Mon, Apr 11, 2022 at 09:13:32AM +0800, Baoquan He wrote: > > On 04/08/22 at 10:59am, Michal Suchánek wrote: > > > On Fri, Apr 08, 2022 at 03:17:19PM +0800, Baoquan He wrote: > > > > Hi Coiby, > > > > > > > > On 04/01/22 at 09:31am, Coiby Xu wrote: > > > > > Currently, a problem faced by arm64 is if a kernel image is signed by a > > > > > MOK key, loading it via the kexec_file_load() system call would be > > > > > rejected with the error "Lockdown: kexec: kexec of unsigned images is > > > > > restricted; see man kernel_lockdown.7". > > > > > > > > > > This patch set allows arm64 to use more system keyrings to verify kdump > > > > > kernel image signature by making the existing code in x64 public. > > > > > > > > Thanks for updating. It would be great to tell why the problem is > > > > met, then allow arm64 to use more system keyrings can solve it. > > > > > > The reason is that MOK keys are (if anywhere) linked to the secondary > ^^^^^^^^^ > platform? > > > keyring, and only primary keyring is used on arm64. > > Thanks Michal for providing the info! Btw, I think you made a typo > because MOK keys are linked to the platform keyring, right? No, I mean secondary, through this patchset: https://lore.kernel.org/lkml/YhKP12KEmyqyS8rj@iki.fi/ Apparently support for importing the MOK keys into the platform keyring also exists but I am not sure if this is upstream or downstream feature. At any rate the MOK keys are not included in the primary keyring which is the only keyring currently in use for kexec on arm64. Thanks Michal
On Mon, Apr 11, 2022 at 10:43:06AM +0200, Michal Suchánek wrote: >On Mon, Apr 11, 2022 at 09:52:18AM +0800, Coiby Xu wrote: >> On Mon, Apr 11, 2022 at 09:13:32AM +0800, Baoquan He wrote: >> > On 04/08/22 at 10:59am, Michal Suchánek wrote: >> > > On Fri, Apr 08, 2022 at 03:17:19PM +0800, Baoquan He wrote: >> > > > Hi Coiby, >> > > > >> > > > On 04/01/22 at 09:31am, Coiby Xu wrote: >> > > > > Currently, a problem faced by arm64 is if a kernel image is signed by a >> > > > > MOK key, loading it via the kexec_file_load() system call would be >> > > > > rejected with the error "Lockdown: kexec: kexec of unsigned images is >> > > > > restricted; see man kernel_lockdown.7". >> > > > > >> > > > > This patch set allows arm64 to use more system keyrings to verify kdump >> > > > > kernel image signature by making the existing code in x64 public. >> > > > >> > > > Thanks for updating. It would be great to tell why the problem is >> > > > met, then allow arm64 to use more system keyrings can solve it. >> > > >> > > The reason is that MOK keys are (if anywhere) linked to the secondary >> ^^^^^^^^^ >> platform? >> > > keyring, and only primary keyring is used on arm64. >> >> Thanks Michal for providing the info! Btw, I think you made a typo >> because MOK keys are linked to the platform keyring, right? > >No, I mean secondary, through this patchset: >https://lore.kernel.org/lkml/YhKP12KEmyqyS8rj@iki.fi/ Thanks for the info! This provides another approach to verify kernel image's signature via the secondary keyring once the end-use chooses to trust MOK keys by setting MokListTrustedRT. > >Apparently support for importing the MOK keys into the platform keyring >also exists but I am not sure if this is upstream or downstream feature. This is actually an upstream feature, commit 15ea0e1e3e185040bed6119f815096f2e4326242 Author: Josh Boyer <jwboyer@fedoraproject.org> Date: Thu Dec 13 01:37:56 2018 +0530 efi: Import certificates from UEFI Secure Boot Secure Boot stores a list of allowed certificates in the 'db' variable. This patch imports those certificates into the platform keyring. The shim UEFI bootloader has a similar certificate list stored in the 'MokListRT' variable. We import those as well. Secure Boot also maintains a list of disallowed certificates in the 'dbx' variable. We load those certificates into the system blacklist keyring and forbid any kernel signed with those from loading. [zohar@linux.ibm.com: dropped Josh's original patch description] Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org> Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Nayna Jain <nayna@linux.ibm.com> Acked-by: Serge Hallyn <serge@hallyn.com> Signed-off-by: Mimi Zohar <zohar@linux.ibm.com> > >At any rate the MOK keys are not included in the primary keyring which >is the only keyring currently in use for kexec on arm64. Good summary, thanks! > >Thanks > >Michal >