Skip to content

fix(migtd/migration): restrict GetTDReport to emulation builds#970

Open
psidor99 wants to merge 1 commit into
intel:mainfrom
psidor99:fix/16709-gate-gettdreport-to-emu
Open

fix(migtd/migration): restrict GetTDReport to emulation builds#970
psidor99 wants to merge 1 commit into
intel:mainfrom
psidor99:fix/16709-gate-gettdreport-to-emu

Conversation

@psidor99

Copy link
Copy Markdown
Contributor

GetTDReport returns a MAC-valid TDREPORT over a VMM-chosen REPORTDATA, giving the host VMM a signing oracle over MigTD's identity (sighting-16709). Combined with the rebinding TDREPORT relay this enables unauthenticated rebinding approval on a same-platform NEW MigTD (sighting-16711).

No production migration or rebinding flow requires the VMM to invoke GetTDReport; all legitimate TDREPORT generation is MigTD-initiated during the RA-TLS handshake. Gate the request dispatch on the AzCVMEmu emulation feature and reject the operation as UnsupportedOperationError in production builds, removing the oracle at its source.

Assisted-by: GitHub Copilot:claude-opus-4-8

@psidor99
psidor99 force-pushed the fix/16709-gate-gettdreport-to-emu branch 2 times, most recently from 823b40e to e3b7f4f Compare July 17, 2026 10:31
@sgrams

sgrams commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Approach looks correct - GetTDReport is not part of any normative migration or rebinding flow in the Design Guide; all legitimate TDREPORT generation is MigTD-initiated during RA-TLS/SPDM attestation. Gating it behind AzCVMEmu at compile time is the right call.

One suggestion for defense-in-depth: consider also #[cfg(feature = "AzCVMEmu")]-gating the WaitForRequestResponse::GetTdReport enum variant in data.rs and the corresponding handler in main.rs. That way the type system guarantees the code path is unreachable in production — if someone accidentally adds a new dispatch path in the future, the compiler will refuse to build rather than silently allowing it.

GetTDReport returns a MAC-valid TDREPORT over a VMM-chosen REPORTDATA,
giving the host VMM a signing oracle over MigTD's identity
(sighting-16709). Combined with the rebinding TDREPORT relay this enables
unauthenticated rebinding approval on a same-platform NEW MigTD
(sighting-16711).

No production migration or rebinding flow requires the VMM to invoke
GetTDReport; all legitimate TDREPORT generation is MigTD-initiated during
the RA-TLS handshake. Gate the request dispatch on the AzCVMEmu emulation
feature and reject the operation as UnsupportedOperationError in
production builds, removing the oracle at its source.

Signed-off-by: Przemyslaw Sidor <przemyslaw.sidor@intel.com>
Assisted-by: GitHub Copilot:claude-opus-4-8
@psidor99
psidor99 force-pushed the fix/16709-gate-gettdreport-to-emu branch from e3b7f4f to f45fe1e Compare July 22, 2026 12:21
@psidor99
psidor99 marked this pull request as ready for review July 23, 2026 06:50
@psidor99
psidor99 requested review from jyao1 and sgrams as code owners July 23, 2026 06:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants