Skip to content

Build rules

All 55 built-in source-analysis rules untrust buildscan runs over the files of a built artifact. tee rules target confidential-computing patterns; generic rules apply to any workload. A policy label relates a rule to a governance policy for reading only: it never changes the gate.

Source

Generated from untrust 1.3.0 (commit 7ef462d9a0c3).

TEE rules

Rule Severity Class CWE What it finds Policy label
CCE-POLICY high attestation-weakening CWE-284 Attestation/verification weakening P-05
COCO-SUPPLY-CHAIN high supply-chain CWE-1357 Supply-chain (unsigned/unencrypted image) P-09
CONTENT-ASN1-PARSE high untrusted-asn1-parse CWE-502 ASN.1/CMS parse of host/KMS-supplied bytes — a memory-unsafe/attacker-reachable parser inside the TEE P-06
CONTENT-ATTEST-DOC-LEAK medium attestation-doc-leak CWE-532 attestation document written to a log/stdout — leaks measurements/nonce P-04
CONTENT-ATTEST-NOVERIFY critical attestation-verification-flaw CWE-347 attestation/JWT token decoded without signature verification P-03
CONTENT-ATTEST-REPLAY high attestation-replay CWE-294 attestation document requested without a fresh nonce — replayable P-04
CONTENT-ATTEST-WEAKEN high attestation-weakening CWE-284 code/config path weakens or disables attestation/verification P-05
CONTENT-ENV-CONFIG medium host-config-trust CWE-454 host-supplied env drives boot config (outside the attestation boundary) P-06
CONTENT-HOST-ENTROPY high host-entropy-trust CWE-338 key/nonce/IV drawn from the non-cryptographic RNG — use secrets/os.urandom P-06
CONTENT-HOST-TIME medium host-time-trust CWE-294 freshness/expiry decided against host wall-clock time — spoofable by the host P-06
CONTENT-JWT-ALG high jwt-alg-confusion CWE-347 JWT/attestation token accepts alg 'none' or an empty algorithm list P-04
CONTENT-KEY-NOT-BOUND info key-not-bound-to-measurement CWE-347 KMS decrypt/data-key call — verify release is bound to a Recipient attestation / PCRs, not just IAM P-03
CONTENT-NO-ENDPOINT-PIN info no-endpoint-pinning CWE-295 KMS/secrets/STS client created without a pinned endpoint_url — host can redirect the enclave's control-plane egress P-03
CONTENT-UNAUTH-ENC high unauthenticated-encryption CWE-327 unauthenticated cipher mode (CBC/DES, no MAC) — malleable; use AES-GCM
CONTENT-WEAK-KEYSIZE medium weak-key-size CWE-326 inadequate asymmetric key size (RSA<=2048 / weak DSA) for long-lived TEE keys
GRAMINE-ALLOWED-FILES high boot-state-trust CWE-494 Trust of downloaded boot state/code P-02
GRAMINE-DEBUG critical debug-mode CWE-489 Debug mode enabled P-05
GRAMINE-INSECURE-HOST-INPUT high host-config-trust CWE-454 Host-supplied config/env trust P-06
SERVICE-RUNS-AS-ROOT medium running-as-root CWE-250 Workload service runs as root
SNP-ID-BLOCK high signing-not-enforced CWE-347 Image/launch signing not enforced P-09
SNP-POLICY-DEBUG critical debug-mode CWE-489 Debug mode enabled P-05
VM-BOOT-UNMEASURED critical unmeasured-boot-chain CWE-345 Boot component not covered by the launch measurement P-09
VM-CMDLINE-DEBUG medium debug-mode CWE-489 Debug mode enabled P-05
VM-CMDLINE-SHELL critical host-shell-access CWE-306 Shell/login reachable from the host-controlled console or SSH P-05
VM-CMDLINE-WEAKENING high kernel-hardening-disabled CWE-1188 Kernel hardening disabled on the command line P-05
VM-DISK-KEY critical key-not-bound-to-measurement CWE-347 Key release/decrypt not bound to a measurement/attestation P-03
VM-FIRMWARE-UNSUPPORTED critical unmeasured-boot-chain CWE-345 Boot component not covered by the launch measurement P-09
VM-MEASUREMENT-MISMATCH critical measurement-mismatch CWE-345 Built artifacts do not produce the expected measurement P-09
VM-PASSWORD-LOGIN high host-shell-access CWE-306 Shell/login reachable from the host-controlled console or SSH P-05
VM-ROOT-INTEGRITY high rootfs-not-integrity-protected CWE-354 Root filesystem not pinned by the measured boot (no dm-verity) P-09
VM-SERIAL-CONSOLE-LOGIN high host-shell-access CWE-306 Shell/login reachable from the host-controlled console or SSH P-05
VM-SSH-AUTHORIZED-KEYS high host-shell-access CWE-306 Shell/login reachable from the host-controlled console or SSH P-05
VM-TD-DEBUG critical debug-mode CWE-489 Debug mode enabled P-05
VM-TDX-RTMR-UNPINNED info unmeasured-boot-chain CWE-345 Boot component not covered by the launch measurement P-09

Generic rules

Rule Severity Class CWE What it finds Policy label
AST-PATTERN medium Runs the structural AST patterns over every .py file in the rootfs.
CONTENT-AWSKEY high hardcoded-secret CWE-798 baked-in AWS access key
CONTENT-CMDI high os-command-injection CWE-78 shell command execution
CONTENT-CONCAT-OPEN medium path-traversal CWE-22 open() on a concatenated path P-01
CONTENT-DYNIMPORT high code-execution CWE-94 dynamic import of a computed module — RCE if the module file is attacker-writable P-02
CONTENT-EVAL high unsafe-deserialization CWE-502 eval/exec/marshal on input → RCE P-02
CONTENT-FILE-PERMS medium insecure-file-permissions CWE-732 Insecure file permissions
CONTENT-INSECURE-RANDOM medium insecure-randomness CWE-338 non-cryptographic RNG for a secret/token — use secrets/os.urandom
CONTENT-PATHJOIN high path-traversal CWE-22 path join on an externally-influenced name without normalization P-01
CONTENT-PICKLE high unsafe-deserialization CWE-502 pickle deserialization of untrusted data → RCE P-02
CONTENT-PRIVKEY high hardcoded-secret CWE-798 baked-in private key material
CONTENT-RUNPY critical code-execution CWE-94 executes a file/module path as code — RCE if the path is attacker-writable P-02
CONTENT-TLS-VERIFY high insecure-transport CWE-295 TLS verification disabled — host can MITM the enclave's egress
CONTENT-WEAK-CIPHER medium weak-crypto CWE-327 insecure cipher (DES/3DES/ECB) — unsuitable for any security use
CONTENT-WEAK-HASH medium weak-crypto CWE-327 weak hash (MD5/SHA1) used on security material — not collision/preimage safe
CONTENT-XXE high xxe CWE-611 XML parsing with external-entity resolution enabled (XXE)
CONTENT-YAML high unsafe-deserialization CWE-502 yaml.load without SafeLoader → RCE P-02
CONTENT-ZIPSLIP high zip-slip CWE-22 archive extraction without per-member path checks (zip-slip)
TAINT medium Rule that runs the taint analysis over every .py file in the rootfs.
VM-PRIVATE-KEY high hardcoded-secret CWE-798 Hardcoded secret
VM-SSH-HOST-KEY high hardcoded-secret CWE-798 Hardcoded secret