Skip to content

Commit

Permalink
Fix OCSP_basic_verify signer certificate validation
Browse files Browse the repository at this point in the history
The function `OCSP_basic_verify` validates the signer certificate on an OCSP
response. The internal function, ocsp_verify_signer, is responsible for this
and is expected to return a 0 value in the event of a failure to verify.
Unfortunately, due to a bug, it actually returns with a postive success
response in this case. In the normal course of events OCSP_basic_verify
will then continue and will fail anyway in the ocsp_check_issuer function
because the supplied "chain" value will be empty in the case that
ocsp_verify_signer failed to verify the chain. This will cause
OCSP_basic_verify to return with a negative result (fatal error). Normally
in the event of a failure to verify it should return with 0.

However, in the case of the OCSP_NOCHECKS flag being used, OCSP_basic_verify
will return with a positvie result. This could lead to callers trusting an
OCSP Basic response when it should not be.

CVE-2022-1343

Fixes #18053

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
  • Loading branch information
mattcaswell committed May 3, 2022
1 parent ae3ece0 commit 2eda987
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions crypto/ocsp/ocsp_vfy.c
Expand Up @@ -59,9 +59,10 @@ static int ocsp_verify_signer(X509 *signer, int response,

ret = X509_verify_cert(ctx);
if (ret <= 0) {
ret = X509_STORE_CTX_get_error(ctx);
int err = X509_STORE_CTX_get_error(ctx);

ERR_raise_data(ERR_LIB_OCSP, OCSP_R_CERTIFICATE_VERIFY_ERROR,
"Verify error: %s", X509_verify_cert_error_string(ret));
"Verify error: %s", X509_verify_cert_error_string(err));
goto end;
}
if (chain != NULL)
Expand Down

0 comments on commit 2eda987

Please sign in to comment.