RUSTSEC-2026-0480: 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.0
Event History
Frequently Asked Questions
Which deployments are exposed to this denial-of-service condition?
Deployments using the host-gcp-tdx feature and calling GcpTdxHost::verify_launch_endorsement() are exposed. The issue affects verification of GCP launch endorsements whose golden measurement lacks TDX measurements.
What must an attacker provide to trigger the panic?
The attacker needs a correctly signed launch endorsement with a signing certificate and signature that successfully verify, but whose golden measurement has no TDX measurements. An unsigned or invalidly signed endorsement does not reach the vulnerable access.
How can the issue be remediated?
Upgrade to version 0.2.0, which corrected the handling of missing or empty TDX measurement structures. The fixed behavior returns Error::ParseError rather than panicking.