Skip to content

docs(threat-model): A1 grouped TPM sealing with TEE memory encryption - #583

Merged
imran-siddique merged 1 commit into
mainfrom
fix/threat-model-a1-tpm-scope
Aug 26, 2026
Merged

docs(threat-model): A1 grouped TPM sealing with TEE memory encryption#583
imran-siddique merged 1 commit into
mainfrom
fix/threat-model-a1-tpm-scope

Conversation

@imran-siddique

Copy link
Copy Markdown
Member

Closes #581, reported by @kingztech2019.

The claim that was wrong

docs/spec/threat-model.md:22, adversary A1:

  • Cannot read TEE-encrypted memory (SEV-SNP, TDX) or TPM-sealed secrets

Two lines above, the same entry grants A1 root on the host. So this bullet is the load-bearing one: it says what root cannot reach.

It groups two different guarantees:

  • SEV-SNP and TDX encrypt guest memory while the VM runs. Root on the host genuinely cannot read or modify what the gateway is doing, for the whole time it runs.
  • TPM sealing binds a secret to PCR values at unseal time. That is a boot-time and at-rest guarantee. It says nothing about a running process's memory.

On bare-metal TPM, an operator with root can reach into the running gateway and flip a Cedar DENY to an ALLOW, and the TPM will not detect it, because detecting that is not what a TPM does. The threat model said otherwise.

What changed

A1's third bullet is split so each tier states its own guarantee, and the tpm tier's boundary is explicit: it defends against a tampered boot, not against a live privileged insider.

No change to the SEV-SNP or TDX position, which was accurate.

Scope

This is distinct from two things already recorded elsewhere:

Why it is worth a change rather than a note

A threat model is the document a deployer reads to decide which tier they need. Someone choosing the tpm tier because A1 "cannot read TPM-sealed secrets" would have concluded that a rogue operator cannot subvert their policy decisions, and that conclusion does not hold. Overstating a hardware guarantee in the document whose job is to bound it is the failure mode this project exists to avoid.

The A1 bullet read "Cannot read TEE-encrypted memory (SEV-SNP, TDX) or
TPM-sealed secrets", grouping two different guarantees against an adversary
the same entry already grants root on the host.

SEV-SNP and TDX encrypt guest memory while the VM runs, so root on the host
cannot reach policy evaluation or audit construction. TPM sealing binds a
secret to PCR values at unseal time: a boot-time and at-rest guarantee that
says nothing about a running process. On bare-metal TPM an operator with root
can read or modify the gateway's memory while it runs, including flipping a
Cedar decision, and the TPM does not detect it.

So the tpm tier defends against a tampered boot, not a live privileged
insider, and the threat model claimed otherwise.

Distinct from #453, which is the missing AK certificate chain, and from the
Azure vTPM-behind-SEV-SNP case LIMITATIONS.md documents separately.

Reported by @kingztech2019 in #581.

Signed-off-by: Imran Siddique <imran.siddique@opaque.co>
@imran-siddique
imran-siddique requested a review from a team as a code owner August 26, 2026 21:17
@imran-siddique
imran-siddique merged commit 19dbb62 into main Aug 26, 2026
12 checks passed
@imran-siddique
imran-siddique deleted the fix/threat-model-a1-tpm-scope branch August 26, 2026 22:56
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.

threat-model.md's A1 entry may overstate what TPM-only deployments guarantee against a rogue operator

1 participant