GHSA-w4mf-755j-wjwc: `verify_x509_cert` does not check the certificate validity period
tdxworkloadattestation::verification::x509::verifyx509cert(), available with the host-verification feature, checked that issuercert issued cert and verified the certificate signature. It did not check the certificate's validity period, so it accepted expired and not-yet-valid certificates.
With the host-gcp-tdx feature, this function validates the GCP launch endorsement signing certificate against the GCE confidential-computing TCB root certificate. A signing certificate outside its validity period was therefore still accepted during launch endorsement verification.
Intel describes the issue as improper certificate validation and classifies it as escalation of privilege, with a CVSS 4.0 base score of 5.9, in INTEL-SA-01520.
The flaw was corrected in #86, released in 0.2.0. The function now returns Ok(false) when the current time is outside the certificate's notBefore/notAfter range.
Reported by Borys Tsyrulnikov.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
rust/tdx_workload_attestationto a version that resolves this vulnerability.Fixed in 0.2.0 - Upgrade
Upgrade
tdx_workload_attestationto a version that resolves this vulnerability.Fixed in 0.2.0
Event History
Frequently Asked Questions
Which deployments are affected?
Deployments using tdx_workload_attestation with the host-verification feature are affected if they call verify_x509_cert(). The described GCP launch endorsement verification path specifically requires the host-gcp-tdx feature.
What would an attacker need to exploit this?
An attacker would need a certificate that is otherwise accepted as issued by the configured issuer and has a valid signature, but whose notBefore/notAfter validity period has not started or has expired. The vulnerable function accepted such certificates because it did not evaluate the current time against those fields.
What version fixes the issue?
The correction was released in tdx_workload_attestation 0.2.0. The fixed function returns Ok(false) when the current time falls outside the certificate validity period.
How can I determine whether my implementation is exposed?
Check whether your dependency version predates 0.2.0 and whether host-verification is enabled. Also identify uses of verify_x509_cert(), particularly GCP launch endorsement validation enabled through host-gcp-tdx.