docs/spec/threat-model.md, adversary A1 (rogue operator / privileged insider):
Cannot read TEE-encrypted memory (SEV-SNP, TDX) or TPM-sealed secrets
This groups SEV-SNP/TDX and TPM together as if they give the same protection against A1. I don't think they do, and I want to check before assuming the doc is just being loose with language.
The distinction: SEV-SNP and TDX encrypt guest memory while the VM is running, so an operator with root on the host genuinely cannot read or modify what's happening inside, for the whole time it's running. TPM is different: it measures the boot state and can seal a secret so it only unseals when PCRs match a known-good boot, but that's a boot-time / at-rest guarantee. It doesn't encrypt or otherwise protect a running process's memory from a host with root access.
What that would mean for a tpm-only deployment (no SEV-SNP/TDX underneath — i.e. bare-metal TPM, not the Azure vTPM-behind-SEV-SNP case LIMITATIONS.md already documents separately): the TPM can attest that the gateway booted with the right measured components, but once it's running, a rogue operator with root on that host may still be able to reach into the process and change what's happening — including, concretely, flipping a Cedar DENY to an ALLOW — without the TPM catching it, because that's not what TPM's guarantee covers.
This is different from the already-documented TPM limitation (#453, the missing AK certificate chain to a pinnable root). That one is about verifying a TPM quote's provenance. This is about whether TPM alone protects the running decision the way SEV-SNP/TDX do, which is closer to what #124's "a deny inside the enclave cannot be bypassed by the host" is asking for.
What I'm not certain of: I don't have TPM-only hardware (no SEV-SNP/TDX underneath) to test this against, so I can't confirm whether a real attack along these lines is actually possible on this codebase specifically, or whether something else in the design (a measurement re-check, a runtime integrity check I haven't found) already closes this. Flagging it as a question against the docs' current wording rather than a confirmed finding.
If this is already understood and just imprecisely worded, happy to send a doc-wording PR. If it's a real gap, it's probably worth being explicit in STATUS.md's tpm row and in the threat model about which of the two guarantees (sealed at boot vs protected while running) a tpm-only deployment actually gets.
docs/spec/threat-model.md, adversary A1 (rogue operator / privileged insider):This groups SEV-SNP/TDX and TPM together as if they give the same protection against A1. I don't think they do, and I want to check before assuming the doc is just being loose with language.
The distinction: SEV-SNP and TDX encrypt guest memory while the VM is running, so an operator with root on the host genuinely cannot read or modify what's happening inside, for the whole time it's running. TPM is different: it measures the boot state and can seal a secret so it only unseals when PCRs match a known-good boot, but that's a boot-time / at-rest guarantee. It doesn't encrypt or otherwise protect a running process's memory from a host with root access.
What that would mean for a
tpm-only deployment (no SEV-SNP/TDX underneath — i.e. bare-metal TPM, not the Azure vTPM-behind-SEV-SNP caseLIMITATIONS.mdalready documents separately): the TPM can attest that the gateway booted with the right measured components, but once it's running, a rogue operator with root on that host may still be able to reach into the process and change what's happening — including, concretely, flipping a Cedar DENY to an ALLOW — without the TPM catching it, because that's not what TPM's guarantee covers.This is different from the already-documented TPM limitation (#453, the missing AK certificate chain to a pinnable root). That one is about verifying a TPM quote's provenance. This is about whether TPM alone protects the running decision the way SEV-SNP/TDX do, which is closer to what #124's "a deny inside the enclave cannot be bypassed by the host" is asking for.
What I'm not certain of: I don't have TPM-only hardware (no SEV-SNP/TDX underneath) to test this against, so I can't confirm whether a real attack along these lines is actually possible on this codebase specifically, or whether something else in the design (a measurement re-check, a runtime integrity check I haven't found) already closes this. Flagging it as a question against the docs' current wording rather than a confirmed finding.
If this is already understood and just imprecisely worded, happy to send a doc-wording PR. If it's a real gap, it's probably worth being explicit in
STATUS.md'stpmrow and in the threat model about which of the two guarantees (sealed at bootvsprotected while running) atpm-only deployment actually gets.