ENCLAVE-04: Enclave booted from a signed image (PCR8)¶
| Property | Value |
|---|---|
| Severity | medium |
| Platform | AWS Nitro Enclaves |
| Lifecycle stage | attest |
| Mode | Active: runs fixed read-only commands on the host. Skipped with --read-only. |
What it checks¶
It passes when:
- Enclave booted from a signed EIF (PCR8 present and signature verified).
Example failures:
- Enclave image is unsigned (no PCR8). KMS policies cannot bind to a signing identity, and there is no cryptographic link between the running image and your build pipeline.
- Enclave image has a PCR8 but its signature does not verify. The image may be tampered or signed by an unexpected certificate.
How to fix¶
- Build a signed EIF with nitro-cli build-enclave --private-key and --signing-certificate (sign in CI, never on the host), and pin PCR8 in the KMS key policy.
- Rebuild and re-sign the EIF with your trusted signing certificate; verify the signing chain in CI.
- Re-run on a nitro-cli version whose describe-eif reports the signature check, or verify the EIF signature against your signing certificate in CI.
After the fix, scan again: the check should report PASS.
When it is not assessed¶
SKIP:
- No instance ID specified; skipping check.
- Enclave image has a PCR8, but nitro-cli describe-eif did not report a signature-verification result, so the EIF signature could not be confirmed.
ERROR:
- SSM command did not complete within timeout.
- Could not locate an .eif file on the host to inspect.
- nitro-cli describe-eif failed or is not available.
- Could not send SSM command: …
Scan inputs¶
The untrust scan options this check reads:
| Option | Description |
|---|---|
--instance-id |
EC2 instance ID running the Nitro Enclave. |
--region |
AWS region. |
Permissions¶
The cloud API calls this check makes, read from the scanner's source:
| Cloud | API call | Permission | Access |
|---|---|---|---|
| AWS | ssm.get_command_invocation |
ssm:GetCommandInvocation |
read |
| AWS | ssm.send_command |
ssm:SendCommand |
run command |
Every AWS scan also calls sts:GetCallerIdentity. See Required permissions for a complete policy.
Evidence recorded¶
Keys in the finding's evidence: pcr8, signature_check
Generated from untrust 1.3.0 (commit 7ef462d9a0c3).