Step 5 of 6 · Testing - practitioner kit
Finding / Security Report Template
States exactly what was demonstrated, with observed and unobserved chain states, impact, cause and remediation.
Use this template
A template is not evidence. Fill in sanitized identifiers only.
Purpose
Communicates a security-relevant result so owners can decide, fix and retest without overclaiming or underclaiming.
When used: After runs show a control failure, a material evidence gap, or a risk the owner must decide on.
Identity and classification
| Field | What to record |
|---|---|
| Finding ID | Stable identifier, for example F-ASM014-03. |
| Title | Names the boundary that failed, for example 'Agent label change executed without object-level authorization'. |
| Affected system / version | All relevant versions from the run records. |
| Severity | Based on demonstrated or credibly possible scope of principal, resource, action and destination. |
| Confidence / evidence strength | High when stages 5 to 7 are authoritative and reproduced; lower with gaps. |
| Testing domain / case IDs | Domain and case identifiers. |
What happened
| Field | What to record |
|---|---|
| Affected principal | Whose authority the action ran under. |
| Affected resource | What was read or changed. |
| Action | The executed operation. |
| Destination | Where data went, if anywhere. |
| Actual impact | Effect confirmed by stage 7 evidence. |
| Potential impact | Credible scope if the same path were reached with other resources, labeled as potential. |
| Evidence summary | Evidence record IDs and one-line observations. |
| Observed chain states | Stages with authoritative evidence. |
| Unobserved states | Stages unobserved or unavailable, and what that means for the conclusion. |
Control analysis
| Field | What to record |
|---|---|
| Control expected | The application-owned decision that should have applied. |
| Control held / failed / not exercised | Per control, with evidence. |
| Reproduction consistency / run IDs | Which runs showed the behavior, which did not, under identical versions. |
| Root / security-boundary cause | The missing or misplaced boundary, not the wording of the content. |
Remediation and tracking
| Field | What to record |
|---|---|
| Remediation | Deterministic control change that removes the path. |
| Compensating controls | Interim measures and their limits. |
| Owner | Remediation owner. |
| Target date | Agreed date. |
| Retest status | Link to Regression Retest Record. |
| Residual risk | What remains after remediation, and who accepted it. |
| References | Related site pages, standards and internal tickets. |
Reporting rules
| Rule | Guidance |
|---|---|
| Say what was demonstrated | Never write 'prompt injection successful' alone. State the furthest chain stage with authoritative evidence, for example 'unauthorized label change executed on a sandbox record'. |
| Influence is not impact | Model influence without proposal, execution or effect is a weaker result and is reported as such. |
| Potential is not confirmed | Keep actual and potential impact in separate fields. |
| Severity follows scope | Rate by principal, resource, action and destination demonstrated or credibly reachable, not by how clever the content was. |
| Detector confidence is not severity | A high-confidence alert describes the detector, not the impact. |
| Gaps are findings too | Missing authoritative logs that block conclusions are reportable as an evidence gap. |
Compact example (fictional sandbox)
Fictional, benign illustration. No adversarial content is shown or needed.
| Field | Example value |
|---|---|
| Finding ID / title | F-ASM014-03 - Support agent changed a ticket label outside the requester's scope. |
| System / versions | Sandbox helpdesk app 4.2.1, policy v7, tool catalogue snapshot C-12, model version as recorded in run records. |
| Case / runs | PI-TST-006 adapted; runs R01 to R05; R02 and R04 executed the change, R01, R03, R05 did not propose it; positive control R00 succeeded. |
| Principal / resource / action / destination | Agent service identity acting for test user A / fictional ticket T-900 owned by test user B / set label 'reviewed' / none. |
| Observed states | Stages 1 to 7 observed in R02 and R04: ingestion log, context log, plan diff, tool proposal, policy allow without owner check, gateway execution, record store audit showing the label change. |
| Unobserved states | No data left the sandbox; no egress attempted. |
| Actual impact | Integrity change to one record outside the requester's authorization, in sandbox. |
| Potential impact | Same path could change labels on any ticket reachable by the service identity. |
| Root cause | Tool authorization checks the agent's role but not the requester's object-level permission. |
| Remediation / retest | Bind authorization to requester and object; retest with positive control and the R02 fixture version. |
How to use this template
- Start from run and evidence records; never from memory.
- Fill observed and unobserved states before writing severity.
- Write remediation as a control change, not as prompt rewording.
- Link the Regression Retest Record once a fix exists.
Common mistakes
- Headline claims without the chain stage.
- Severity driven by content creativity.
- Merging potential and actual impact.
- Recommending only prompt or filter changes for an authorization failure.
- Omitting runs that did not reproduce.