GHSA-gwf2-8595-qw97: Panic on a GCP launch endorsement without TDX measurements
GcpTdxHost::verifylaunchendorsement(), available with the host-gcp-tdx feature, read uefigolden.tdx.measurements[0] without checking that the golden measurement contains a TDX measurement. If a launch endorsement's golden measurement had no TDX measurements, the call panicked with an index out of bounds instead of returning an error.
The panic is reached only after the endorsement's signing certificate and signature have been verified. Triggering it therefore requires a correctly signed endorsement that lacks TDX measurements.
Intel describes the issue as improper input validation and classifies it as denial of service, with a CVSS 4.0 base score of 5.7, in INTEL-SA-01520.
The flaw was corrected in #87, released in 0.2.0. The function now returns Error::ParseError when the TDX measurement structure is missing or empty.
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
IntelLabs/tdx-workload-attestationto a version that resolves this vulnerability.Fixed in 0.2.0Patch #87
Event History
Frequently Asked Questions
Who is exposed to this denial-of-service condition?
Deployments using the `tdx_workload_attestation` crate with the `host-gcp-tdx` feature are exposed if they process GCP launch endorsements. The vulnerable verification path is specific to `GcpTdxHost::verify_launch_endorsement()`.
What must an attacker provide to trigger the panic?
An attacker must provide a correctly signed launch endorsement whose golden measurement lacks TDX measurements. The endorsement signing certificate and signature are verified before the vulnerable indexing operation is reached.
Are fixed versions available?
Yes. The issue was corrected in version 0.2.0. The corrected code returns `Error::ParseError` when the TDX measurement structure is missing or empty.
How can I determine whether an environment is affected?
Check whether the application enables the `host-gcp-tdx` feature and invokes GCP launch-endorsement verification through `GcpTdxHost::verify_launch_endorsement()`. Versions before 0.2.0 can panic when handling an otherwise correctly signed endorsement without TDX measurements.