Proof · How Warden tests its own build
What Warden's build replays against it, and how it did.
This is Warden's record of its own build. A signed record of a run in your own accounts is a separate thing: the signed record.
Every result on this page is read from two files the product writes at commit
e1e668dc14e8, and every number is counted from them. The results are synthetic
and offline: no real AWS account and no live attacker. The files say so themselves, in the
label below.
In this run every attack variant raised a finding,
and the benign variants raised
3 false positives.
Replayed at build time
The file's own label
Synthetic and offline: the build-time adversary and benign corpus replayed through the full pipeline over a synthetic estate. Not a measurement of any real estate.
The build-time corpus holds 91 attack variants and 13 benign variants, replayed through the full pipeline. In this run, 91 of 91 attack variants were detected, and the benign variants raised 3 false positives (listed below).
The corpus is part of the product's own source at that commit, written with the rules it tests, and nobody outside Warden has run it. A full score shows that the rules catch the variants written for them and that nothing has slipped; it does not show what an attacker the corpus does not describe would get past.
By rule: 53 detected, 3 with no variant in the corpus (the file marks them not detected: "no self-play variant exercises this rule") and 1 out of scope, of 57. Each row is one detection rule and the variants written to test it; the rule links to its entry in the rules catalogue.
Detection per rule
| Rule | Checks that fired | ATT&CK | Variants detected | Status |
|---|---|---|---|---|
V-001 Credential-shaped inline value in workload configuration |
| none listed | 1 of 1 | Detected |
V-002 Audit-logging and detection posture and tamper |
| none listed | 1 of 1 | Detected |
V-003 New or privileged principals |
|
| 1 of 1 | Detected |
V-004 Access-key anomalies |
|
| 1 of 1 | Detected |
V-005 KMS Sign behaviour | no variant | none listed | no variant | Not tested no self-play variant exercises this rule |
V-006 Key control plane |
| none listed | 4 of 4 | Detected |
V-007 Wildcard signing grants | no variant | none listed | no variant | Not tested no self-play variant exercises this rule |
V-008 Snapshot and export exfiltration |
|
| 1 of 1 | Detected |
V-009 Trust surface |
| none listed | 1 of 1 | Detected |
V-010 Standing admin and privilege escalation |
| none listed | 1 of 1 | Detected |
V-011 Resource-policy and organization perimeter |
| none listed | 3 of 3 | Detected |
V-011a Organization perimeter slice |
| none listed | 1 of 1 | Detected |
V-012 Cluster-admin surface |
| none listed | 2 of 2 | Detected |
V-013 IMDS posture |
| none listed | 1 of 1 | Detected |
V-013a IMDS posture slice |
|
| 1 of 1 | Detected |
V-014 Edge bypass and exposure |
| none listed | 1 of 1 | Detected |
V-014a EKS public endpoint slice |
| none listed | 1 of 1 | Detected |
V-014b Internet exposure slice |
| none listed | 1 of 1 | Detected |
V-015 S3 public exposure |
| none listed | 1 of 1 | Detected |
V-015a S3 public-access slice |
| none listed | 1 of 1 | Detected |
V-016 Post-revocation success |
| none listed | 1 of 1 | Detected |
V-017 Probing, unused regions and credential-use anomalies |
| none listed | 1 of 1 | Detected |
V-017a Probing and credential-use slice |
| none listed | 1 of 1 | Detected |
V-018 Secret-store reconnaissance |
| none listed | 4 of 4 | Detected |
V-019 GuardDuty triage |
| none listed | 1 of 1 | Detected |
V-019a GuardDuty parity slice | no variant | none listed | no variant | Out of scope grades another sensor's findings beside Warden's (GuardDuty parity); there is no adversary act to replay, only a third-party verdict |
V-020 Cognito posture and abuse |
|
| 3 of 3 | Detected |
V-020a Identity pool abuse slice | no variant |
| no variant | Not tested no self-play variant exercises this rule |
V-021 Network-position trust |
| none listed | 1 of 1 | Detected |
V-022 Root and console hygiene |
| none listed | 1 of 1 | Detected |
V-023 Registry exfiltration and provenance |
| none listed | 2 of 2 | Detected |
V-024 Persistence and alert-cut |
| none listed | 1 of 1 | Detected |
V-025 Coverage and self-integrity |
| none listed | 1 of 1 | Detected |
V-026 Compute and AI hijack |
| none listed | 1 of 1 | Detected |
V-027 S3 impact and exfiltration |
| none listed | 1 of 1 | Detected |
V-028 Identity Center principals and assignments |
| none listed | 3 of 3 | Detected |
V-029 EKS audit-log behaviours |
| none listed | 1 of 1 | Detected |
V-030 GitOps and IaC drift |
| none listed | 2 of 2 | Detected |
V-031 Privileged workload posture |
| none listed | 3 of 3 | Detected |
V-032 Host execution through cloud APIs |
| none listed | 1 of 1 | Detected |
V-033 CI/CD identity and project surface |
| none listed | 3 of 3 | Detected |
V-034 AI and agent surface |
| none listed | 2 of 2 | Detected |
V-035 Credential-consumer inventory |
| none listed | 2 of 2 | Detected |
V-036 Enclave-gated key posture |
| none listed | 2 of 2 | Detected |
V-037 Frontend asset integrity |
| none listed | 3 of 3 | Detected |
V-038 CloudHSM control plane and audit |
| none listed | 4 of 4 | Detected |
V-040 Application token stores and plaintext recovery secrets |
| none listed | 4 of 4 | Detected |
V-041 Idle and dangling identity |
| none listed | 1 of 1 | Detected |
V-043 Principal behaviour off its own baseline |
|
| 1 of 1 | Detected |
V-044 Text planted to steer an AI reviewer |
| none listed | 1 of 1 | Detected |
V-045 Decoy touched |
|
| 2 of 2 | Detected |
V-046 Known vulnerability in running software |
|
| 2 of 2 | Detected |
V-047 Exploited or exploitable vulnerability with a path to harm |
|
| 2 of 2 | Detected |
V-048 End of support and out-of-date platforms |
|
| 2 of 2 | Detected |
V-049 AWS security update waiting |
|
| 2 of 2 | Detected |
V-050 Vulnerability blind spots |
|
| 2 of 2 | Detected |
V-100 LOW hygiene pack |
| none listed | 3 of 3 | Detected |
Benign false positives
The benign variants are ordinary changes that should raise nothing. 1 of the 13 raised 3 findings, and all 3 are false positives. By severity: 1 high, 2 low. Each is shown as the file records it: rule, severity, then the finding.
-
enclave-host.imdsv2-hop-2 -
- V-013a high Weak-IMDS instance set grew
- V-013a low EC2 instance metadata hop limit above 1
- V-013a low Weak-IMDS instance set
What this record does not cover
- A real AWS account or cluster: the accounts are synthetic, in the file's own words above.
- An outside or live attacker: every variant is in the product's source and is replayed offline.
- Containment: this record scores detection only.
-
V-005: no variant in the corpus (no self-play variant exercises this rule). -
V-007: no variant in the corpus (no self-play variant exercises this rule). -
V-020a: no variant in the corpus (no self-play variant exercises this rule). -
V-019a: out of scope (grades another sensor's findings beside Warden's (GuardDuty parity); there is no adversary act to replay, only a third-party verdict).
How these files are made
Both files come from the product repository's main branch at commit
e1e668dc14e8ef60509c4f963bc79707125af0ba. The product repository is private, so these commands need access
to it. In a checkout, with Node 22.21 or later, they rebuild both files from the corpus and
the rules with the product's own generators, show that they match that commit byte for byte,
and print their sha256. Without access, you can still download the copies served here and
compare their sha256 with the last column.
git checkout e1e668dc14e8ef60509c4f963bc79707125af0ba
npm ci
npx tsx tools/selfplay/ratchet.ts --write
npx tsx tools/gen-coverage-map.ts --write
npx biome format --write tools/selfplay-score.json techniques.json
git diff --exit-code tools/selfplay-score.json techniques.json
sha256sum tools/selfplay-score.json techniques.json | File | Written by | sha256 at the commit |
|---|---|---|
tools/selfplay-score.json | tools/selfplay/ratchet.ts | 1d9391bff8b17ba34f522d70a56dd991c4561de8e6e4bf1b068912288856e077 |
techniques.json | tools/gen-coverage-map.ts | ebeccdd7d79fe01f25a5cc9f3127809d96d2daae83a963704e012284995324ff |
The files as this page read them:
selfplay-score.json
(the score: every variant and the findings it raised) and
techniques.json (the
technique map made from it).