[PATCH] efi_loader: correctly handle mixed hashes and signatures in db
Heinrich Schuchardt
xypron.glpk at gmx.de
Fri Jan 28 08:30:12 CET 2022
On 1/27/22 23:36, Ilias Apalodimas wrote:
> A mix of signatures and hashes in db doesn't always work as intended.
> Currently if the digest algorithm is not supported we stop walking the
> security database and reject the image.
> That's problematic in case we find and try to check a signature before
> inspecting the sha256 hash. If the image is unsigned we will reject it
> even if the digest matches
>
> Signed-off-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> ---
> lib/efi_loader/efi_signature.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/efi_loader/efi_signature.c b/lib/efi_loader/efi_signature.c
> index 3243e2c60de0..8fa82f8cea4c 100644
> --- a/lib/efi_loader/efi_signature.c
> +++ b/lib/efi_loader/efi_signature.c
> @@ -176,7 +176,7 @@ bool efi_signature_lookup_digest(struct efi_image_regions *regs,
> if (guidcmp(&siglist->sig_type, &efi_guid_sha256)) {
> EFI_PRINT("Digest algorithm is not supported: %pUs\n",
> &siglist->sig_type);
According to the commit message siglist->sig_type could be
EFI_CERT_RSA2048_SHA256_GUID which does not relate to a 'Digest
algorithm'. So the debug message text is wrong. As we expect guidcmp()
to report a mismatch we could remove the message.
> - break;
> + continue;
This still is not correct:
dbx containing a signature type that we do not support must disable the
loading of any image.
The UEFI specification defines EFI_CERT_SHA1_GUID, EFI_CERT_SHA384_GUID
and EFI_CERT_SHA512_GUID. We should support all of these for dbx.
For security reasons we should not support EFI_CERT_SHA1_GUID for db.
The function lacks an argument indicating if we are dealing with db or
dbx which have to be treated differently.
> }
>
> if (!efi_hash_regions(regs->reg, regs->num, &hash, &size)) {
The subsequent code has a performance issue:
We should not hash the image once per entry in db but once per hash
algorithm.
Best regards
Heinrich
More information about the U-Boot
mailing list