fix(rvps): emit bare-metal SNP TCB reference values - #40
Merged
butler54 merged 3 commits intoAug 31, 2026
Conversation
The bare-metal SNP attestation policy (default_bm.rego) computes hardware := 2 only if all four reported TCB components match RVPS reference values: snp_bootloader, snp_microcode, snp_snp_svn, snp_tee_svn The RVPS builder only passed through snp_launch_measurement from the firmware-reference-values secret, so those four keys were never present in the rvps-reference-values ConfigMap. query_reference_value() returned NULL for snp_bootloader and the hardware rule fell through to the default (97, contraindicated), producing PolicyDeny even when the VCEK signature/endorsement verified successfully. Pass the four SNP TCB keys through from $firmwareData, mirroring the existing snp_launch_measurement handling. Keys are optional (guarded by if), so existing TDX/Azure deployments are unaffected. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Chris Butler <chris.butler@redhat.com>
butler54
added a commit
to butler54/coco-pattern
that referenced
this pull request
Aug 31, 2026
trustee-chart v0.10.2 (validatedpatterns/trustee-chart#40) landed while this PR was open. It adds the bare-metal SNP TCB reference values (snp_bootloader/snp_microcode/snp_snp_svn/snp_tee_svn) that templates/attestation-policy.yaml requires to ever reach hardware: 2 (Affirming) on bare-metal SNP -- directly relevant to this repo's baremetal airgap topology, which the 0.10.* wildcard in values-baremetal.yaml/values-baremetal-hub.yaml already tracks. Superseding the 0.10.1 pin in the same line this PR already touches rather than opening a second PR against it.
butler54
added a commit
to validatedpatterns/coco-pattern
that referenced
this pull request
Aug 31, 2026
…irror to 0.10.2 (#135) * fix: pin trustee chart to 0.10.* for azure/trusted-hub, bump airgap mirror to 0.10.1 values-azure.yaml and values-trusted-hub.yaml were still pinned to chartVersion: 0.9.*, which excludes the 0.10.x line entirely (semver wildcard is minor-scoped). This was stale from before the trustee-chart 0.10.0 OCI-chart migration (PR #105/#108), which only touched the baremetal/baremetal-hub values files. The gap matters now: trustee-chart v0.10.1 (validatedpatterns/trustee-chart#41) fixes the Azure RVPS pcr-stash reader, which values-azure.yaml directly layers via overrides/values-trustee-azure.yaml. Azure deployments were pinned out of ever receiving that fix. Also bump the airgap oc-mirror imageset pin (quay.io/validatedpatterns/trustee) from 0.10.0 to 0.10.1 to match, keeping the airgap mirror in sync with the same 0.10.x line the baremetal values files resolve to. * fix: bump airgap mirror pin to trustee 0.10.2 trustee-chart v0.10.2 (validatedpatterns/trustee-chart#40) landed while this PR was open. It adds the bare-metal SNP TCB reference values (snp_bootloader/snp_microcode/snp_snp_svn/snp_tee_svn) that templates/attestation-policy.yaml requires to ever reach hardware: 2 (Affirming) on bare-metal SNP -- directly relevant to this repo's baremetal airgap topology, which the 0.10.* wildcard in values-baremetal.yaml/values-baremetal-hub.yaml already tracks. Superseding the 0.10.1 pin in the same line this PR already touches rather than opening a second PR against it.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Pass the four bare-metal SEV-SNP TCB reference values through from the
firmware-reference-valuessecret into thervps-reference-valuesConfigMap:snp_bootloadersnp_microcodesnp_snp_svnsnp_tee_svnmirroring the existing
snp_launch_measurementhandling intemplates/rvps-values-policies.yaml.Why
templates/attestation-policy.yaml(bare-metal SNP) only setshardware := 2when all four reported TCB components are found via
query_reference_value(...).The RVPS builder never emitted these keys, so
query_reference_valuereturnedNULL, the
hardwarerule fell through to its default (97, contraindicated),and KBS returned
PolicyDeny— even when the SNP report signature and VCEKendorsement verified successfully. Only
snp_launch_measurement(theexecutablesclaim) was configurable before this change.See #39 for the full analysis and observed attestation-service log.
How
Four
if $firmwareData.<key>blocks, identical in shape to the existingsnp_launch_measurementblock. Keys are optional (guarded byif), so TDX andAzure deployments are unaffected. Values flow as JSON numbers (the report TCB
fields are integers, matched with the rego
inoperator).Testing
helm lint .helm unittest .firmware-reference-valuessecret containing the four keys,confirmed
rvps-reference-valuesnow includes them and the bare-metal SNPhardwareclaim reaches2(Affirming) for a report whose reported TCBmatches.
Notes / follow-up (not in this PR)
The
configuration := 2rule compares scalars toquery_reference_value(...)(a list) with
==, e.g.platform_smt_enabled == query_reference_value("snp_smt_enabled"),which can never match list-valued reference data — bare-metal SNP falls through
to
configuration := 3(still Affirming). Membership-vs-equality worth aseparate look.
Closes #39