Publisher[Trusted Publisher LLC (IneligibleForApproval: ChainIdx[X] CertId[Y] CertValidationError[ErrorsListedHere])]
The Agent relies on the Microsoft Windows Cryptographic API to validate the publisher & certificate information. This validation is done between the Operating System (Windows) and the remote Certificate Authorities that issued the certificates. Windows will return the validation as a CERT_TRUST_STATUS result, which is included in the ValidationError. Common reasons include (but are not limited to):
Notes and Reminders:
File '<FileNameHere>' [0C432...DFCFD] was blocked because it was unapproved. Publisher[<PublisherNameHere> AS (IneligibleForApproval: CounterChainIdx[1] CertId[256] ValidationError[01010040:CERT_TRUST_REVOCATION_STATUS_UNKNOWN:CERT_TRUST_IS_PARTIAL_CHAIN:CERT_TRUST_IS_OFFLINE_REVOCATION])]
cd "c:\Program Files (x86)\Bit9\Parity Agent" dascli password GlobalPassword dascli find <FullPathToFile>
Get-AuthenticodeSignature -FilePath "<FullPathToFile>" | Format-List
This could be caused by:
In either of these circumstances, one of the methods below can be used to re-align the Agent with the OS.
cd "c:\Program Files (x86)\Bit9\Parity Agent" dascli password GlobalPassword dascli validatecerts
Check the status again:
dascli find <FullPathToFile>
If the issue persists, collect the following and open a case with Support
This means that the file is not eligible for Publisher Approval.
The Carbon Black App Control Agent is not responsible for updating the local certificate store. The machine administrator and/or networking team will need to troubleshoot this, potentially with the help of Microsoft.
The information below can help determine which certificate chain is experiencing the issue, but resolving the issue is outside the scope of Carbon Black Support.
Note: The validation error has three parts
IneligibleForApproval: CounterChainIdx[1] CertId[256] ValidationError[01010040:CERT_TRUST_REVOCATION_STATUS_UNKNOWN:CERT_TRUST_IS_PARTIAL_CHAIN:CERT_TRUST_IS_OFFLINE_REVOCATION])
The following are common examples of failed CERT_TRUST_STATUS validation results, and example troubleshooting steps as well as potential resolutions.
Publisher[<PublisherNameHere> (IneligibleForApproval: ChainIdx[1] CertId[307] ValidationError[0x01000041])]
This message is returned most commonly when Allow Approval of Software with Expired Certificates is disabled.
Solutions:
Publisher[<PublisherNameHere> AS (IneligibleForApproval: CounterChainIdx[1] CertId[256] ValidationError[01010040:CERT_TRUST_REVOCATION_STATUS_UNKNOWN:CERT_TRUST_IS_PARTIAL_CHAIN:CERT_TRUST_IS_OFFLINE_REVOCATION])]
This indicates one of the certificates in the chain (Code Signing or Counter Signing) is missing.
cd "C:\program files (x86)\bit9\parity agent" dascli password GlobalPassword dascli certchain 256Note: The value of 256 is based on the CertId[256] from the example message above. Replace this with the actual cert id in the error
CertId[220] Parent[0] Publisher[Symantec SHA256 TimeStamping Signer - G2] Issuer[Symantec SHA256 TimeStamping CA]Note: In this example the Parent shows '0', indicating the Parent of this certificate does not exist on the endpoint.
Solutions:
Publisher[<PublisherNameHere> (IneligibleForApproval: CounterChainIdx[1] CertId[499] ValidationError[01000048:CERT_TRUST_IS_NOT_SIGNATURE_VALID:CERT_TRUST_REVOCATION_STATUS_UNKNOWN:CERT_TRUST_IS_OFFLINE_REVOCATION])]
This indicates one of the certificates in the chain does not have a valid signature. The most common reason seen is that an older version of the Intermediate Certificate "Microsoft Time-Stamp PCA 2010" in the endpoint's Local Certificate Store, and the new version of the certificate is not present or it cannot be downloaded due to network restrictions.
cd "C:\program files (x86)\bit9\parity agent" dascli password GlobalPassword dascli certchain 499Note: The value of 499 is based on the CertId[499] from the example message above. Replace this with the actual cert id in the error
Solutions:
Publisher[<PublisherNameHere> (IneligibleForApproval: ChainIdx[0] CertId[29] Time Validity ValidFrom[11/13/2019 9:40:35 PM] ValidTo[2/11/2021 9:40:35 PM] SignatureTime[10/20/2023 3:00:32 AM])]
This indicates that the file was signed with a certificate that had already expired or that the file was signed at a time that was outside the Valid From-To period.
This issue can be confirmed by checking the ValidTo and SignatureTime details in the Description of the Block Event:
ValidFrom[11/13/2019 9:40:35 PM] ValidTo[2/11/2021 9:40:35 PM] SignatureTime[10/20/2023 3:00:32 AM])]
If the file is trusted an alternative approval method (such as local approval or a custom rule) will need to be used.
Solutions:
This indicates the certificate (or certificate chain) the file was signed with is based on an Untrusted Root Certificate. Typically in this situation the endpoint's Local Machine Certificate Store has outdated Root Certificates. Usually these are updated during Windows Updates.
Solutions:
Publisher[<PublisherNameHere> (IneligibleForApproval: ChainIdx[1] CertId[123] ValidationError[...CERT_TRUST_IS_REVOKED:CERT_TRUST_IS_UNTRUSTED_ROOT:CERT_TRUST_IS_EXPLICIT_DISTRUST...}
Certificates can be revoked for many reasons, by either the vendor or the issuing Certificate Authority. In these situations the certificate is deemed as untrusted for some reason. Potentially it could be invalid or otherwise compromised. If the file is trusted, an alternative Approval Method will be required.
Solutions:
(IneligibleForApproval: SignatureError[0x800B0100])
This indicates the app package is incorrectly signed. Microsoft has more details on how to troubleshoot App Package Signature Errors. In the meantime, if the file is trusted an alternative Approval Method (such as local approval or a custom rule) will need to be used.
Solutions:
Seeing a different error? The Validation error may be a combination of different errors. Example: CertValidationError[0x00000005] is a combination of CERT_TRUST_IS_NOT_TIME_VALID (0x00000001) and CERT_TRUST_IS_REVOKED (0x00000004).
The full list, and more details, can be found on Microsoft's CERT_TRUST_STATUS page.