Message ID | 20230817140407.1599240-1-eric.snowberg@oracle.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | [v2] certs: Reference revocation list for all keyrings | expand |
On Thu Aug 17, 2023 at 2:04 PM UTC, Eric Snowberg wrote: > Systems booted with shim have a Forbidden Signature Database called mokx. > During boot, hashes and certs contained within the mokx are loaded into the > blacklist keyring. When calling verify_pkcs7_message_sig the contents of > the blacklist keyring (or revocation list) are referenced when validating > keys on the platform keyring. Currently, when validating against the > secondary or builtin keyrings, the revocation list is not referenced. Move > up the check to allow the revocation list to be used with all keyrings, > including the secondary and builtin, allowing the system owner to take > corrective action should a vulnerability be found within keys contained > within either keyring. > > Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com> > Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> > Reviewed-by: Mimi Zohar <zohar@linux.ibm.com> > --- > v2 changes: > Since this one seems to have been forgotten, added the two Reviewed-by tags. > Unless there are any objections, could this be picked up? Applied to -next. BR, Jarkko
diff --git a/certs/system_keyring.c b/certs/system_keyring.c index a7a49b17ceb1..6bc138bc594f 100644 --- a/certs/system_keyring.c +++ b/certs/system_keyring.c @@ -251,6 +251,12 @@ int verify_pkcs7_message_sig(const void *data, size_t len, if (ret < 0) goto error; + ret = is_key_on_revocation_list(pkcs7); + if (ret != -ENOKEY) { + pr_devel("PKCS#7 key is on revocation list\n"); + goto error; + } + if (!trusted_keys) { trusted_keys = builtin_trusted_keys; } else if (trusted_keys == VERIFY_USE_SECONDARY_KEYRING) { @@ -270,12 +276,6 @@ int verify_pkcs7_message_sig(const void *data, size_t len, pr_devel("PKCS#7 platform keyring is not available\n"); goto error; } - - ret = is_key_on_revocation_list(pkcs7); - if (ret != -ENOKEY) { - pr_devel("PKCS#7 platform key is on revocation list\n"); - goto error; - } } ret = pkcs7_validate_trust(pkcs7, trusted_keys); if (ret < 0) {