Each Canon test now has a fixture-asm registration that fails known-bad and passes known-good in-process. Live asm-tNN targets stay pending. No network, OpenBao, or packet. Assistant: grok Assistant-Session: 01a05e32-c776-72a3-86ec-c490e027aca9
296 lines
10 KiB
Markdown
296 lines
10 KiB
Markdown
---
|
||
id: WHITEHAT-WP-0007
|
||
type: workplan
|
||
title: "Triage Gate House ASM T-01–T-10 executable targets"
|
||
domain: infotech
|
||
repo: whitehat-security
|
||
status: active
|
||
owner: net-kingdom
|
||
topic_slug: whitehat-security
|
||
created: "2026-09-02"
|
||
updated: "2026-09-02"
|
||
related:
|
||
- WHITEHAT-IN-0002
|
||
- WHITEHAT-WP-0001
|
||
state_hub_workstream_id: "a06d1a9b-d9fa-5bec-bf03-e0e9b5b0ee3a"
|
||
---
|
||
|
||
# WHITEHAT-WP-0007 — ASM T-01–T-10 triage
|
||
|
||
## Goal
|
||
|
||
Triage Gate House `asm-assurance-targets.v1` tests T-01…T-10 into this
|
||
repository's work structure: applicability, owning surface, known-bad
|
||
calibration design, and result route for each Canon test id.
|
||
|
||
This plan authorizes no fixture, engagement, runner, credential, traffic, or
|
||
load. A later probe needs a new engagement and an `applicable` registration.
|
||
|
||
## Origin
|
||
|
||
`WHITEHAT-IN-0002`, from gate-house GH-WP-0001-T06 (commit `8cb7250`, message
|
||
`8229c9a4-862f-4d55-842c-5c95702f79d9`). Specs:
|
||
|
||
- `gate-house/docs/assurance/asm-t01-t10-executable-targets.md`
|
||
- `gate-house/docs/assurance/asm-targets.yaml`
|
||
- `gate-house/docs/contracts/conformance-reporting.md`
|
||
|
||
WHITEHAT-IN-0001 already recorded the split: gate-house specifies the
|
||
invariant; this repository designs the attack and records whether it held.
|
||
|
||
Gate House's first completion condition is ten triaged targets, not ten green
|
||
results.
|
||
|
||
## Schema decision
|
||
|
||
Do **not** map ASM onto `fixture-e2` / `live-e2` / `e3` / `capacity`. Those
|
||
classes model tenant isolation, RLS detection, and bounded saturation. ASM
|
||
tests a different attacker: a privileged agent or credential path trying to
|
||
cross an Active Secrets Management invariant.
|
||
|
||
`whitehat-target/v1` therefore grows two approval classes:
|
||
|
||
| Class | Meaning |
|
||
| --- | --- |
|
||
| `fixture-asm` | In-process known-bad/known-good calibration. No network. |
|
||
| `asm` | Live run against a named component revision. Needs a dated engagement. |
|
||
|
||
Technique name: `asm-assurance`. Canon `test_id` (`T-01`…`T-10`) is stored on
|
||
the registration, not folded into Tenancy Posture claims.
|
||
|
||
A revision of a Gate House target must keep the Canon test id and say what
|
||
changed. None of the ten oracles is rejected at triage; each is `pending`
|
||
with a named blocker.
|
||
|
||
## Result routes (every test)
|
||
|
||
| Result | Route |
|
||
| --- | --- |
|
||
| Implementation control failed | `risk-nexus` (severity/disclosure); Gate House gets the safe conformance report |
|
||
| Doctrine ambiguous, unsafe, or untestable | Gate House intake/message citing test and evidence |
|
||
| Harness or target-registration gap | this repository |
|
||
| Posture/stream-silence gap | `kings-guard` |
|
||
| Pass, finding, inconclusive, aborted | State Hub message to `gate-house`, subject `[GH-CONFORMANCE] <test> <outcome> <target>@<revision>` |
|
||
|
||
`whitehat conformance-message` renders that envelope from a native
|
||
`whitehat-run/v1` report. It does not send the message.
|
||
|
||
## Triage
|
||
|
||
Live registrations live in `targets/asm-t01.json` … `targets/asm-t10.json` and
|
||
remain `pending`. In-process fixtures live in `targets/fixture-asm-t01.json` …
|
||
`targets/fixture-asm-t10.json` and are `applicable`. The plane will not admit
|
||
a pending live ASM target.
|
||
|
||
### T-01 — Malicious Model
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T01
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "3c1c1001-268e-5bf0-bcb2-b6608a84d715"
|
||
```
|
||
|
||
- **Applicability:** `pending`
|
||
- **Surface:** agent runtime, `access-engine` (today `flex-auth`) decision, PEP,
|
||
and a fixture resource that shows whether a mutation occurred
|
||
- **Known-bad design:** ceiling check disabled; the excluded effect must occur
|
||
or the oracle otherwise fails
|
||
- **Blocker:** no named agent runtime, ceiling-bound identity, or excluded
|
||
action class. `glas-harness` and `access-engine` must name those before a
|
||
fixture is built
|
||
- **Route:** `[GH-CONFORMANCE] T-01 …`; finding → `risk-nexus` (`access-engine` / PEP owner)
|
||
|
||
### T-02 — Credential Exfiltration
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T02
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "321548eb-86b7-5405-809d-42f08e290275"
|
||
```
|
||
|
||
- **Applicability:** `pending`
|
||
- **Surface:** model-visible context, tool output, environment, credential
|
||
broker, egress, target-side use
|
||
- **Known-bad design:** a canary credential placed in model-visible context;
|
||
the probe detects it without retaining the value
|
||
- **Blocker:** no synthetic canary credential lane and no agent-context oracle.
|
||
This repository's value-safe receipts are not T-02
|
||
- **Route:** `[GH-CONFORMANCE] T-02 …`; finding → `risk-nexus` (broker / runtime owner)
|
||
|
||
### T-03 — Human Disconnect
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T03
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "3bb3c08c-4874-5820-b721-a81281194610"
|
||
```
|
||
|
||
- **Applicability:** `pending`
|
||
- **Surface:** human session, agent session, `access-engine` assistant mode,
|
||
PEP, one supervision-bound protected operation
|
||
- **Known-bad design:** session binding omitted; a post-disconnect privileged
|
||
operation succeeds
|
||
- **Blocker:** no supervised-mode fixture. Session cutoff belongs to
|
||
`glas-harness` and `access-engine`
|
||
- **Route:** `[GH-CONFORMANCE] T-03 …`; finding → `risk-nexus` (harness / `access-engine`)
|
||
|
||
### T-04 — Policy Self-Modification
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T04
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "90bc48d4-b31a-5bf1-baac-e8c7d91d3e64"
|
||
```
|
||
|
||
- **Applicability:** `pending`
|
||
- **Surface:** policy-change PEP, `access-engine`, policy repository or fixture,
|
||
high-value security evidence route
|
||
- **Known-bad design:** the actor can modify its own ceiling; oracle becomes
|
||
`finding`
|
||
- **Blocker:** no ordinary-actor versus independent-governance identity pair
|
||
exposed to this facility
|
||
- **Route:** `[GH-CONFORMANCE] T-04 …`; finding → `risk-nexus`; doctrine
|
||
ambiguity → Gate House
|
||
|
||
### T-05 — Confused Deputy
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T05
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "77ff7edc-364c-544a-9761-dd78f2605ae9"
|
||
```
|
||
|
||
- **Applicability:** `pending`
|
||
- **Surface:** two audience-distinct protected services, MCP/PEP path,
|
||
credential issuer or exchange, target-side audience enforcement
|
||
- **Known-bad design:** audience/resource validation disabled; A's artifact is
|
||
accepted at B
|
||
- **Blocker:** no two named services with distinct audiences registered for this
|
||
attacker. Existing `audit-core` E2 is tenant isolation, not audience replay
|
||
- **Route:** `[GH-CONFORMANCE] T-05 …`; finding → `risk-nexus` (PEP / MCP owner)
|
||
|
||
### T-06 — Approval Replay
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T06
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "dfe0ff4e-cafe-5f4e-bfe7-6238412632f3"
|
||
```
|
||
|
||
- **Applicability:** `fixture-asm-t06` **applicable** (in-process). Live
|
||
`asm-t06` remains `pending`.
|
||
- **Surface:** secrets-engine `approval_consume` PEP client driven through an
|
||
in-process CAS opener. Live surface is still approval-engine plus a consuming
|
||
PEP.
|
||
- **Known-bad design:** CAS disables different-digest conflict; the PEP then
|
||
calls OpenBao. The same probe against the enforcing CAS rejects the replay
|
||
and does not call OpenBao.
|
||
- **Reassessment:** Gate House candidate `3cd9955` does **not** contain
|
||
`approval_consume.py`. That module first appears at `4b4d556`. The in-process
|
||
fixture is sufficient to admit `fixture-asm` only. It is not a live
|
||
approval-engine.
|
||
- **Route:** `[GH-CONFORMANCE] T-06 …`; finding → `risk-nexus` (secrets-engine /
|
||
approval-engine)
|
||
|
||
### T-07 — Circuit Breaker
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T07
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "ca94ec12-7119-5a61-8eef-9d3614d8ec85"
|
||
```
|
||
|
||
- **Applicability:** `pending`
|
||
- **Surface:** change-dynamics / posture input, `access-engine`, grant or
|
||
credential revocation owner, PEP, running autonomous fixture
|
||
- **Known-bad design:** independent stop path disconnected; an over-threshold
|
||
mutation succeeds or misses the visibility bound
|
||
- **Blocker:** stop path not named. This is not P1/P2; do not use `capacity`
|
||
- **Route:** `[GH-CONFORMANCE] T-07 …`; finding → `risk-nexus` (posture /
|
||
revocation owner)
|
||
|
||
### T-08 — Audit Reconstruction
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T08
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "26e97415-df84-5431-95a3-13541816d2fe"
|
||
```
|
||
|
||
- **Applicability:** `pending`
|
||
- **Surface:** identity/context sources, `access-engine`, approval and
|
||
credential path where applicable, PEP/resource, emitters, `audit-core`
|
||
- **Known-bad design:** remove or unlink one required fixture record; separately
|
||
suppress an emission while leaving the archive chain intact. The probe must
|
||
distinguish reconstruction failure from emission omission
|
||
- **Blocker:** `audit-core` is a real E2 target, but reconstruction and
|
||
emission-completeness are a different attacker model. Needs an authorized
|
||
synthetic mutation and an emission bound from `audit-core` / `kings-guard`
|
||
- **Route:** `[GH-CONFORMANCE] T-08 …`; implementation finding → `risk-nexus`
|
||
(`audit-core`); emission-gap may also go to `kings-guard`
|
||
|
||
### T-09 — Audit Failure
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T09
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "f5e4a346-4dbe-5db2-957c-40d42e5a50e7"
|
||
```
|
||
|
||
- **Applicability:** `pending`
|
||
- **Surface:** state owner, local transactional outbox, drain, audit archive,
|
||
heartbeat/reconciliation observer, protected operation
|
||
- **Known-bad design:** emit-after-commit (silent gap) and
|
||
synchronous-archive-in-transaction (blocked revocation) fixtures
|
||
- **Blocker:** load-bearing evidence semantics not declared by the owner.
|
||
Disabling outbox or archive is outside standing live-e2 and needs its own
|
||
engagement class
|
||
- **Route:** `[GH-CONFORMANCE] T-09 …`; finding → `risk-nexus` (`audit-core`)
|
||
|
||
### T-10 — Revocation Closure
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T10
|
||
status: done
|
||
priority: high
|
||
state_hub_task_id: "28b231b2-b51f-5484-89cb-e709258a3a15"
|
||
```
|
||
|
||
- **Applicability:** `pending`
|
||
- **Surface:** credential lifecycle owner, issuer, target verifier,
|
||
`access-engine`/PEP where applicable, evidence path
|
||
- **Known-bad design:** one accepted validation path left unrevoked
|
||
- **Blocker:** no issuer/verifier pair admitted. This repository's lease
|
||
cleanup is not T-10
|
||
- **Route:** `[GH-CONFORMANCE] T-10 …`; finding → `risk-nexus` (issuer /
|
||
secrets-engine)
|
||
|
||
## Residual
|
||
|
||
```task
|
||
id: WHITEHAT-WP-0007-T11
|
||
status: wait
|
||
priority: medium
|
||
state_hub_task_id: "13518801-015f-51ef-9d07-8cf989e08710"
|
||
```
|
||
|
||
In-process known-bad calibration exists for T-01…T-10
|
||
(`targets/fixture-asm-tNN.json`, `evidence/offline-asm-tNN-calibration.json`).
|
||
Any live ASM run is blocked until a target owner names the surface, identities,
|
||
and window for that test. Do not relabel a pending live target to finish this
|
||
plan. Do not send a packet.
|
||
|
||
## Sequencing
|
||
|
||
T01–T10 are the triage and are done together. T11 cannot start without an
|
||
owner-named surface. Offline Tenancy Posture work remains on
|
||
`WHITEHAT-WP-0001` / `WHITEHAT-WP-0006`.
|