Hello,
You are correct that Custom Kernel Signers (CKS) can load drivers when HVCI (Memory Integrity) is disabled, but enabling HVCI enforces stricter validation rules. Specifically, HVCI requires that kernel drivers be signed with certificates that meet Hypervisor-protected Code Integrity requirements. Even if your signature is trusted in the policy, HVCI may override it if the certificate chain does not meet these stricter standards.
The error code 0xC0000428 indicates that Code Integrity could not validate the driver’s signature under HVCI. This often happens if:
- The signer certificate is not cross-signed by Microsoft’s kernel-mode code signing program.
- The driver catalog file is missing or not properly associated.
- The policy does not include the correct GUID for the signer in the HVCI context.
To troubleshoot, I recommend:
- Verifying that your certificate is enrolled in the Microsoft Kernel Mode Code Signing program.
- Ensuring the driver has a valid catalog (.cat) file and that it is signed consistently with the .sys file.
- Using
Get-CIPolicyandGet-CIPolicyInfoPowerShell commands to confirm the signer is listed correctly in the applied CI policy. - Testing with a fresh CI policy generated with
New-CIPolicythat explicitly includes your signer under HVCI rules.
I hope this guidance helps you move forward with your testing. If you find this answer useful, please hit “accept answer” so I know it addressed your concern.
Jason