VirtualBox

Changeset 91984 in vbox for trunk/src


Ignore:
Timestamp:
Oct 21, 2021 9:51:52 PM (3 years ago)
Author:
vboxsync
Message:

SUPHardNt: Just continue validating signatures upon encountering VERR_CR_X509_CPV_UNKNOWN_CRITICAL_EXTENSION and VERR_SUP_VP_NOT_VALID_KERNEL_CODE_SIGNATURE. Fixes igdumdim64.dll problem. bugref:10130

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/Support/win/SUPHardenedVerifyImage-win.cpp

    r90150 r91984  
    12751275               It's possible we're being too strict, but well, it's the only case so far, so no
    12761276               need to relax the Key Usage restrictions just for a certificate w/o a trusted root.
    1277                */
     1277
     1278               VERR_CR_X509_CPV_UNKNOWN_CRITICAL_EXTENSION: Intel 27.20.100.9126 igdumdim64.dll
     1279               has three signatures, the first is signed with a certificate (C=US,ST=CA,
     1280               L=Santa Clara,O=Intel Corporation,CN=IntelGraphicsPE2021) that has a critical
     1281               subject key identifier.  This used to trip up the path validator.  However, the
     1282               other two signatures are from microsoft and checks out fine.  So, in future
     1283               situations like this it would be nice to simply continue with the next signature.
     1284               See bugref{10130} for details.
     1285
     1286               VERR_SUP_VP_NOT_VALID_KERNEL_CODE_SIGNATURE: Is related to the above intel problem,
     1287               but this is what we get if suppressing the unknown critical subjectKeyIdentifier
     1288               in IPRT.  We don't need all signatures to be valid kernel signatures, we should be
     1289               happy with just one and ignore any additional signatures as long as they don't look
     1290               like they've been compromised. Thus continue with this status too. */
    12781291            pNtViRdr->rcLastSignatureFailure = rc;
    12791292            if (   rc == VERR_CR_X509_CPV_NOT_VALID_AT_TIME
    12801293                || rc == VERR_CR_X509_CPV_NO_TRUSTED_PATHS
    1281                 || rc == VERR_CR_PKCS7_KEY_USAGE_MISMATCH)
     1294                || rc == VERR_CR_PKCS7_KEY_USAGE_MISMATCH
     1295                || rc == VERR_CR_X509_CPV_UNKNOWN_CRITICAL_EXTENSION
     1296                || rc == VERR_SUP_VP_NOT_VALID_KERNEL_CODE_SIGNATURE)
    12821297            {
    12831298                SUP_DPRINTF(("%s: Signature #%u/%u: %s (%d) w/ timestamp=%#RX64/%s.\n", pNtViRdr->szFilename, pInfo->iSignature + 1, pInfo->cSignatures,
    1284                              rc == VERR_CR_X509_CPV_NOT_VALID_AT_TIME ? "VERR_CR_X509_CPV_NOT_VALID_AT_TIME" : "VERR_CR_X509_CPV_NO_TRUSTED_PATHS", rc,
    1285                              RTTimeSpecGetSeconds(&aTimes[i].TimeSpec), aTimes[i].pszDesc));
     1299                             rc == VERR_CR_X509_CPV_NOT_VALID_AT_TIME            ? "VERR_CR_X509_CPV_NOT_VALID_AT_TIME"
     1300                             : rc == VERR_CR_X509_CPV_NO_TRUSTED_PATHS           ? "VERR_CR_X509_CPV_NO_TRUSTED_PATHS"
     1301                             : rc == VERR_CR_PKCS7_KEY_USAGE_MISMATCH            ? "VERR_CR_PKCS7_KEY_USAGE_MISMATCH"
     1302                             : rc == VERR_CR_X509_CPV_UNKNOWN_CRITICAL_EXTENSION ? "VERR_CR_X509_CPV_UNKNOWN_CRITICAL_EXTENSION"
     1303                                                                                 : "VERR_SUP_VP_NOT_VALID_KERNEL_CODE_SIGNATURE",
     1304                             rc, RTTimeSpecGetSeconds(&aTimes[i].TimeSpec), aTimes[i].pszDesc));
    12861305
    12871306                /* This leniency is not applicable to build certificate requirements (signature #1 only). */
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette