KMS enclave key attestation binds a specific deployment context
kms_key_enclave_attestation_no_deployment_binding
Sensitive Allow statements on enclave KMS keys are checked for deployment-context binding: PCR3 (parent IAM role, AWS-recommended), PCR4 (parent instance ID), PCR8 (EIF signing cert), or an account-level condition (aws:PrincipalAccount / SourceAccount / OrgID / ResourceAccount / OrgPaths) paired with a RecipientAttestation binding. PCR0/PCR1/PCR2 travel with the EIF and do not bind deployment.
Risk
A key policy bound only to image PCRs (PCR0/PCR1/PCR2) accepts the same EIF running anywhere, including an attacker-controlled account or instance. Deployment-context conditions bind attestation to a specific execution context so a leaked or replicated image cannot silently reuse the key. Materiality depends on application-layer controls.
prowler aws --checks kms_key_enclave_attestation_no_deployment_binding
Recommendation
Pair every image binding (kms:RecipientAttestation:PCR0, PCR1, PCR2) with PCR3 (parent IAM role), PCR4 (parent instance ID), PCR8 (EIF signing cert), or an account/org condition so the key policy binds to a specific deployment context rather than just an image identity. AWS recommends PCR3 + PCR8 together.
Remediation
aws kms put-key-policy --key-id <key-id> --policy-name default --policy file://enclave-policy-with-deployment-binding.json
- Pair every image binding (kms:RecipientAttestation:PCR0/PCR1/PCR2) with at least one deployment-context binding: kms:RecipientAttestation:PCR3 (parent IAM role, AWS-recommended), PCR4 (parent instance ID), or PCR8 (EIF signing certificate). AWS recommends PCR3 + PCR8 together for portability.
- Alternatively add an account/org condition (aws:PrincipalAccount, aws:SourceAccount, aws:PrincipalOrgID, aws:ResourceAccount, aws:PrincipalOrgPaths) so only calls from the audited account or organization can present the attestation.
- Ensure operators are restrictive (StringEquals, ArnEquals) and values do not contain wildcards.
Source Code
Resource Type
AwsKmsKey
References
Related To
- kms_key_enclave_attestation_not_enforced
- kms_key_enclave_attestation_pcr_mismatch