From: Young Xiao <92siuyang@gmail.com> Date: Wed, 17 Apr 2019 09:20:24 +0000 (+0800) Subject: kwbimage: fixing the issue with proper return code checking X-Git-Tag: v2019.07-rc2~26^2~17 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=225151234552b0a6d8ac6e4bf77b0fd1ee5d0973;p=oweals%2Fu-boot.git kwbimage: fixing the issue with proper return code checking EVP_VerifyFinal would return one of three values: 1 if the data is verified to be correct; 0 if it is incorrect; -1 if there is any failure in the verification process. The varification in unpatched version is wrong, since it ignored the return value of -1. The bug allows a malformed signature to be treated as a good signature rather than as an error. This issue affects the signature checks on DSA ans ECDSA keys used with SSL/TLS. This issue is similar to CVE-2008-5077, CVE-2009-0021, CVE-2009-0025, CVE-2009-0046 ~ CVE-2009-0049. Signed-off-by: Young Xiao <92siuyang@gmail.com> Signed-off-by: Stefan Roese --- diff --git a/tools/kwbimage.c b/tools/kwbimage.c index dffaf9043a..b8f8d38212 100644 --- a/tools/kwbimage.c +++ b/tools/kwbimage.c @@ -701,7 +701,7 @@ int kwb_verify(RSA *key, void *data, int datasz, struct sig_v1 *sig, goto err_ctx; } - if (!EVP_VerifyFinal(ctx, sig->sig, sizeof(sig->sig), evp_key)) { + if (EVP_VerifyFinal(ctx, sig->sig, sizeof(sig->sig), evp_key) != 1) { ret = openssl_err("Could not verify signature"); goto err_ctx; }