Security for confidential computingConfidential computing security

Your enclave trusts more than it can attest.

Attestation proves which code a TEE booted. It says nothing about the firmware that signed it, the keys it can release, or the state it loads at startup. untrust checks all of it, from build to runtime, on AWS, GCP and Azure, GPU clouds, or AMD and NVIDIA hardware in your own racks, in any cloud or on your own hardware.

$ pip install untrust
$ untrust scan --demo
✓ report.json written · 0 writes█
app.untrustsecurity.com · Live posture
The untrust console's live posture page: a risk score, open findings by severity, active attack paths, and a deployment lifecycle from build to runtime detection.The untrust console's live posture page: a risk score, open findings by severity, active attack paths, and a deployment lifecycle from build to runtime detection.

The hosted console, shown with demo data: one view of the trust boundary from build to runtime.

>_ why this exists

A path traversal from 1998 defeated a hardware trust boundary

In a real adversarial simulation, a single storage write permission was enough for root code execution inside a hardware-isolated enclave. The attestation was sound. The state the enclave downloaded at boot was not. Every TEE workload receives something from outside the measured image — and none of it is covered by the attestation guarantee.

Tap to enlarge✕conceptconceptSILICONTEEKEYSIMAGEWORKLOADnot measuredattestation: passnot measuredattestation: passnot measuredunseenunseenunseenunseenwhat attestation sees · PASSHOST → ENCLAVEvsock channel from the hostIDENTITYWho can change the deploymentBOOT STATEData the enclave loads at startNETWORKDNS and egressSILICON & FIRMWAREAMD EPYC · NVIDIA H100 · Nitro cardTRUSTED EXECUTIONEnclave · confidential VM · GPU CCKEY RELEASEKMS · Key Vault · key brokerIMAGE & BOOTEnclave image · containerWORKLOADModels · secrets · regulated dataAttestation proves the TEE and the image it booted. The silicon policy, keys, workload data and every input go unmeasured.
Tap to enlarge✕conceptconceptSILICONTEEKEYSIMAGEWORKLOADfirmware below floordebug offnot bound to codesigned · pinnedruntime data checkedokokworld-writableokwhat untrust sees · 3 findingsHOST → ENCLAVEvsock channel from the hostIDENTITYWho can change the deploymentBOOT STATEData the enclave loads at startNETWORKDNS and egressSILICON & FIRMWAREAMD EPYC · NVIDIA H100 · Nitro cardTRUSTED EXECUTIONEnclave · confidential VM · GPU CCKEY RELEASEKMS · Key Vault · key brokerIMAGE & BOOTEnclave image · containerWORKLOADModels · secrets · regulated datauntrust checks every layer and every input it crosses: three problems attestation never measured.
>_ how it works

Gate the build, probe the boundary, watch it run

Tap to enlarge✕Scan a deploymentThe untrust CLI runs on a laptop and reads four resources in your cloud account. The state bucket and the KMS key policy are vulnerable and shown red; IAM roles and the enclave host are healthy and shown green. Each component sends its result into report.json: red from the failing bucket and key policy, green from IAM and the enclave host.NITROuntrustYOUR CLOUD ACCOUNTSTATE BUCKETWorld-writableIAM ROLESLeast privilegeKMS KEY POLICYNot bound to codeENCLAVE HOSTDebug offREPORTreport.jsonuntrust reads each component (blue), then every result lands in one report: red fails, green passes.
Open-source CLI

Scan

Point the CLI at a deployment with the credentials you already have. It reads storage, identity, keys and the enclave host, and writes a report of what passed and what failed.

Tap to enlarge✕Gate the pipeline and the registryTwo separate pipelines. The app pipeline builds the enclave image, which passes the untrust buildscan gantry and is pushed into an image registry holding signed (green) and unsigned (red) images. Behind the registry, untrust registry scan reads every image, checking digest, signature and measurement; its failing result stops the deploy job at a gate, so the unsigned image does not reach production. In front, the infra pipeline's Terraform plan passes the untrust iacscan gantry, which blocks a plan whose key release is not bound to code.TERRAFORMuntrust buildscanuntrust registry scanscan failed: stop deploydeploy pulls imageuntrust iacscanIMAGE REGISTRYAPP PIPELINEEnclave imageBUILD SCANImage checkedINFRA PIPELINETerraformIaC SCANKey not boundREGISTRY SCANSigned · pinnedIMAGE REGISTRYECR · GHCRDEPLOYBlockedINFRASTRUCTURENever appliedImages are checked when built and again in the registry. Plans are checked before apply.
untrust Cloud

Pipeline & registry

In your app pipeline, untrust scans every enclave image as it is built. In your infrastructure pipeline, it scans the Terraform plan before apply. It also scans your image registry itself — ECR, GHCR or Artifact Registry — checking that every image is pinned to a digest, signed by someone you trust, and measures what your keys expect. Run it as a step in your deploy pipeline and a failed check stops the deploy.

Tap to enlarge✕Probe and fuzz every route into the enclaveAn enclave host holds a host proxy and the enclave. Peripherals around it, an S3 state bucket, a state database and model weights, reach the enclave only through the host proxy and its vsock channel. untrust's probes plant canaries in the peripherals and its fuzzer sends malformed input at the host boundary. The S3 bucket accepted a path-traversal write, the model weights loaded unsafely, and the vsock parser accepted a malformed frame, so the enclave is reachable; the state database and host environment held.HOSTPROXYENCLAVEuntrustS3 STATETraversal acceptedHOST ENV · ARGSValidatedPROBESCanaries in storageSTATE DBInjection heldVSOCKBad frame parsedENCLAVE2 routes in are unsafeMODEL WEIGHTSUnsafe loadFUZZERMalformed host inputEvery route into the enclave runs through the host. untrust tests each one: green held, red got through.
CLI + Cloud

Probes & fuzzing

An enclave has no network of its own: everything it loads, from S3 state and databases to model weights, arrives through the host and its vsock channel. untrust tests each route. Probes plant harmless canaries in the storage around the enclave and confirm whether they get through. The fuzzer sends malformed input at the host boundary to find what the enclave mishandles, so run it against a staging deployment rather than production. Canary probes ship in the open-source CLI; fuzzing is part of untrust Cloud.

Tap to enlarge✕Collect hardware and cloud evidenceCollectors on your servers and GPU node answer a fresh challenge from untrust with signed evidence. untrust verifies it with AMD and NVIDIA and files findings per host: one server is red for out-of-date firmware and a debug-enabled policy, the others are green. untrust also connects to your AWS, GCP and Azure accounts with short-lived, read-only access.H100UNTRUSTAWSGCPAZUREuntrustread-only accessfresh challengesigned evidenceis it genuine?findingsYOUR DATA CENTRE · COLOYOUR CLOUD ACCOUNTSCOLLECTOROutbound onlyHOST epyc-02Old firmwareGPU NODEH100 · CC onCLOUD ACCOUNTSRead-onlyAMD · NVIDIAGenuine silicon?FINDINGSPer hostCollectors answer a fresh challenge; untrust checks the evidence with the chip vendor and files findings per host.
untrust Cloud

Collect evidence

A small collector on each confidential host answers a fresh challenge with signed hardware evidence. untrust verifies it with AMD or NVIDIA and turns it into findings: firmware below your floor, debug allowed, an unexpected launch measurement. Your cloud accounts are connected with short-lived, read-only access you grant and can revoke.

Tap to enlarge✕Detect continuously and govern releasesFour sources in your environment, CloudTrail, Cloud Audit Logs, enclave hosts and collector reports, stream into the untrust detect engine, which runs continuously. Matches become open detections, shown as red tickets. Govern: detections and open scan findings feed the release gates board, where two of five gates fail, so a closed barrier keeps production sign-off blocked.UNTRUSTuntrust detectuntrust governdetectionsfindingsno-goCLOUDTRAILAWS eventsAUDIT LOGSGCP eventsENCLAVE HOSTSLaunch · debugDETECTIONUnattested key useCOLLECTORSDriftSCAN FINDINGSOpenGOVERN2 of 5 gates failPRODUCTIONBlockedDetect: rules run continuously. Govern: detections and scan findings decide the release; failing gates keep production closed.
untrust Cloud

Detect & govern

Scans are a snapshot; detection never stops. untrust matches cloud audit logs, enclave-host signals and collector reports against its rules every few minutes, and every hit stays open until it is resolved. Release gates turn everything it knows into one go / no-go: production sign-off stays blocked until they pass.

>_ the product

One view of the trust boundary, from build to runtime

A TEE deployment fails long before attestation runs, and long after it passes. untrust follows the workload across its whole lifecycle and keeps the evidence for each stage in one place.

app.untrustsecurity.com · Live posture
Live posture view: risk score, open findings by severity, active attack paths and recent changes.Live posture view: risk score, open findings by severity, active attack paths and recent changes.

The whole trust boundary on one screen

A single view of every deployment: what is failing, which attack paths are fully open, and what changed since the last report.

Risk score, open findings and active attack paths
Every platform side by side, updated as reports arrive
app.untrustsecurity.com · Attack paths
Attack paths view: a critical chain from an unscoped storage write to root code execution inside an enclave.Attack paths view: a critical chain from an unscoped storage write to root code execution inside an enclave.

Findings are symptoms. Attack paths are the disease.

untrust links failing checks into exploit chains and ranks them by outcome, so you fix the one link that breaks the chain.

Chains ranked by real outcome: code execution, stolen keys
Each chain is active, broken or not fully scanned
app.untrustsecurity.com · Trust graph
Trust graph view: a Nitro host and enclave inside a VPC with six unattested external inputs.Trust graph view: a Nitro host and enclave inside a VPC with six unattested external inputs.

See the boundary attestation does not cover

Your deployment drawn as a trust boundary, with every unmeasured input called out and coloured by the checks that cover it.

Unattested inputs called out explicitly
Coloured from the exact report it names
app.untrustsecurity.com · Build scan
Build scan view: seven findings in an enclave image, two critical, including a boot-state path traversal and a debug-mode build.Build scan view: seven findings in an enclave image, two critical, including a boot-state path traversal and a debug-mode build.

Catch it in the image, before it is measured

Every enclave image is scanned as CI builds it: generic code flaws plus a TEE overlay for attestation bugs, debug builds, unsafe host input and leaked secrets. A confirmed high finding fails the build.

CWE Top-25 plus a TEE-specific overlay
Confirmed vs possible, so the gate only blocks on proof
app.untrustsecurity.com · Image registry
Image registry view: tracked artifacts across registries, unsigned ones failing and signed ones verified.Image registry view: tracked artifacts across registries, unsigned ones failing and signed ones verified.

The image that boots is the image you signed

Every image is resolved to its exact digest, its signature checked against signers you trust, and its measurement matched to the one your keys expect.

Container registries and enclave images
Mutable tags and unsigned images flagged
app.untrustsecurity.com · Hardware
Hardware and firmware view: four hosts with verification status and open hardware findings.Hardware and firmware view: four hosts with verification status and open hardware findings.

Every host's root of trust, judged by the chip vendor

Firmware level, certificate chain and launch measurement for every SEV-SNP host and NVIDIA GPU, verified with AMD and NVIDIA.

Cloud, GPU cloud or your own racks
Debug-enabled hosts flagged as critical
app.untrustsecurity.com · Detections
Runtime detections view: detection rules and a live event stream of attestation changes.Runtime detections view: detection rules and a live event stream of attestation changes.

Scanning is a snapshot. Detection keeps watching.

Audit logs and host signals are matched against detection rules, and every hit stays open in the console until it is resolved.

Key use without attestation, debug launches, unreleased images
Always on, nothing runs inside your enclave
>_ hardware root of trust

Attestation is only as good as the silicon that signs it

An attestation report is a claim from the hardware. untrust checks that the claim holds up: the certificate chain reaches the chip vendor, the firmware is current, the launch measurement is one you released, and debug is off — on every host, continuously, with the vendor's own services as the judge. None of it depends on a cloud provider.

Tap to enlarge✕How untrust verifies a chipAn AMD EPYC or NVIDIA H100 chip answers a fresh nonce with an attestation report signed by a key in its die. untrust checks every field: the nonce is fresh, the measurement matches your baseline, the firmware TCB is below the floor, debug and migration are off, and the signature chains through VCEK and ASK to the pinned AMD root fetched from AMD KDS.THE CHIPAMD EPYC · SEV-SNPNVIDIA H100 · CC modeSigns with a key burned into the dieATTESTATION REPORTsigned by the chip, verified by untrustREPORT_DATAnonce 9f3a…c1MEASUREMENT5e5e5e…a71TCBBL 4 · SNP 22 · µcode 213POLICYdebug 0 · migrate 0SIGNATUREECDSA P-384 · VCEKuntrustchecks every fieldFresh, not replayedMatches your baselineBelow floor (µcode 216)Debug and migration offChains to AMD rootCHAIN OF TRUSTVCEKchip keyASKAMD intermediateARKAMD root · pinnedfetched from AMD KDSnoncereport
Hyperscaler TEEsConfidential VMs and GPU instances on AWS, GCP and Azure
GPU cloudsNVIDIA H100 confidential-computing nodes on any provider
Your own hardwareAMD SEV-SNP guests on EPYC servers you own, and NVIDIA CC GPUs in your data centre or colo
Air-gappedVerify a captured SEV-SNP report or TPM2 quote offline against a pinned baseline

Also covers Azure confidential VMs, through Azure's attestation layer, and NVIDIA H100 GPUs, verified by NVIDIA's attestation service. Intel TDX and SGX quote verification through Intel PCS is not available yet. Checks a collector cannot observe, such as key-broker policy, are reported as not visible rather than passed.

>_ platforms

Every major confidential-computing stack, the same report shape

Every check reports PASS / FAIL / SKIP with the evidence it used and concrete remediation. --read-only skips the canary-write probes and host commands. Azure confidential VM and host-attestation support are on the open-source main branch ahead of the next PyPI release. Running your own SEV-SNP or TPM2 hardware? See hardware root of trust.

AWS

Nitro Enclaves

Bootstrap supply chain & S3 write scope
KMS key policy bound to PCR measurements
IAM, IMDSv2, vsock and host hygiene
Debug mode, enclave runtime, forensics
$ untrust scan --platform nitro
GCP

Confidential Space

Confidential Space on AMD SEV and Intel TDX
Key release bound to an image digest
Workload identity pool provider bindings
Service account impersonation & keys
Image signing and registry plantability
$ untrust scan --platform gcp-cspace
NVIDIA

GPU Confidential Computing

Attestation report signature verification
Re-attestation, fail-open and key hygiene
CPU and GPU evidence bound together
Assurance tiering: probed vs declared
$ untrust scan --platform gpu-cc
Azure

Confidential VMs · SEV-SNP

Key Vault Secure Key Release policy
Microsoft Azure Attestation policy
Confidential SKU, secure boot and disk encryption
vTPM and HCL evidence from the fleet collector
$ untrust scan --platform azure-cvm
>_ editions

Run it on your laptop, or run it for your whole org

Start with the open-source scanner in minutes. Move to untrust Cloud when a team needs continuous coverage: detections, hardware fleets, release gates and shared evidence.

untrust CLI
open source · MIT
Free

The open-source scanner, on your machine. Everything you need to audit a deployment yourself.

Every open-source check, for every supported platform
Live scans, demo mode, and a --read-only mode
JSON output and CI-friendly exit codes
Demo mode with zero credentials
Runs entirely on your laptop — nothing leaves it
pip install untrust
untrust Cloud
app.untrustsecurity.com · private preview
Team

Everything in the CLI, plus continuous coverage and the workflow a team needs.

Attack paths, trust graph and posture history
Runtime detections and image-registry verification
Hardware fleets anywhere: cloud, GPU cloud, colo or on-prem
Release gates that decide production sign-off
Read-only connections to AWS, GCP and Azure; CI uploads over GitHub OIDC
SSO, organisation isolation, append-only audit log and a KMS-encrypted evidence archive

Same report format both ways · your reports stay portable

>_ how we build it

Grounded in real attack paths, not a checklist someone imagined

Every check maps to a way a real misconfiguration has undone a confidential workload — a writable state bucket, a key policy bound to an identity instead of a measurement, an attestation nobody verifies. If a control would not have changed the outcome of a real incident, it is not in untrust.

What untrust will and will not touch

A scan is read-only on request: --read-only skips every write. Canary probes write harmless objects and delete them again, and the fuzzer sends malformed input to find what an enclave mishandles, so both are opt-in and meant for staging. untrust never breaks attestation or ships exploits.

An open-source scanner you can read

The untrust scanner is MIT licensed on GitHub, and every check documents the exact API calls it makes and the IAM permissions it needs. Demo mode runs with no credentials at all — see the report shape before you trust it with anything.

Presented at DEF CON 34

The Enclave Is Lying to You: Breaking TEE Trust Boundaries Through Boot-Time State (August 2026) walks through the adversarial simulation behind untrust: how one storage write permission became root code execution inside an attested enclave.

In research: a TEE security model Not released

We are training an open-weight security model for confidential computing. Given the code, policies and deployment declarations around a TEE, it judges whether the trust boundary holds — attestation binding, nonce freshness, fail-open verification, key release, bootstrap state — and cites the evidence behind each verdict. It is evaluated against a benchmark built from untrust's checks, including prompt-injection cases, and will only become part of untrust once it measurably adds detection.

>_ proof

Proven on real clouds and real chips

Every platform untrust supports has a live lab we deploy in a vulnerable and a hardened posture. Hardware verification is checked against attestation evidence captured from real chips, kept as regression tests that every release must pass.

AWS
GCP
Azure
Your hardware
Nitro EnclavesEnclave
Live labVulnerable + hardened
—
—
—
AMD SEVConfidential VM
—
Live labConfidential Space
—
—
AMD SEV-SNPConfidential VM
Real hardware evidencem6a · report captured
Real hardware evidencen2d · report + vTPM
Live labCVM · Secure Key Release
SupportedCollector + offline verify
Intel TDXConfidential VM
—
Live labConfidential Space
Planned
Planned
NVIDIA H100GPU CC
No GPU CC on AWS
Real hardware evidenceA3 · live H100 run
Lab builtAwaiting GPU quota
SupportedCollector + NVIDIA verifier
Tested on real hardwareLive lab, vulnerable + hardenedSupported, not a labBuilt, waiting on cloud quotaPlanned

The real-hardware evidence

AMD EPYC Milan · SEV-SNP
AWS EC2 m6a.large

Version-5 report signed by the VLEK, chained through AMD's ASVK to the Milan root. Nonce, measurement and TCB floor pinned.

Kept as a regression testCaptured 2026-10
AMD EPYC Milan · SEV-SNP
GCP n2d Confidential VM

Version-5 report signed by the VCEK, chained through AMD's ASK to the Milan root, with the VCEK supplied by Google.

Kept as a regression testCaptured 2026-10
TPM 2.0 · Shielded VM vTPM
GCP n2d

Quote over PCRs 0–7 and a 38 KB firmware event log that replays to the quoted PCRs, with Secure Boot measured into PCR 7.

Kept as a regression testCaptured 2026-10
NVIDIA H100 · CC mode
GCP A3

Real signed GPU attestation report: vulnerable posture 10 FAIL, hardened posture 14 of 14 PASS, and a live write probe on the weights bucket.

Re-run awaits GPU quotaLive run

Attestation is necessary. It is not sufficient.

Audit the trust boundaries attestation forgets — in minutes, read-only if you need it.