2 · What each severity actually means
Severity is about consequence, not how alarming the name sounds.
| Severity | Meaning | Act within |
| Critical | Directly exploitable now, with serious consequence — full account takeover, mass data exposure, remote code execution. | Immediately. Before your next release. |
| High | Exploitable with modest effort, or exposes sensitive data to the wrong party. | Days. |
| Medium | Not exploitable alone, but removes a defensive layer or meaningfully helps an attacker. | This sprint. |
| Low | Defence-in-depth gap. Little standalone risk; compounds with others. | Backlog. |
| Info | No risk today. Worth knowing — often hygiene or drift. | When convenient. |
Severities interact. A reflected parameter (Low) plus a weak Content-Security-Policy (Medium) is materially worse than either alone: the CSP is what would have contained the reflection if it ever became injectable. We call out these combinations in the report.
10 · Business-logic & state-changing tests
These change application state, so they are not part of the automated non-destructive Go-Live scan. They run self-serve — only against a non-production target you designate and explicitly approve in-app. No engineers are involved; the platform executes and gates them automatically.
Privilege escalation in workflows Critical if found Aggressive
How we test it
We attempt real state-changing actions as the wrong role — approving one's own request, triggering a payment without finance rights, acting on another party's order. Each attempt is bounded and logged, with a cleanup contract.
What the result means
These are the flaws that cost money rather than data: self-approved purchases, unauthorised payments, tampered orders. Scanners essentially never find them, because they require understanding your workflow — this is the closest automation gets to a human tester.
How to fix
- Enforce separation of duties in the backend: the requester must not be the approver; whoever enters bank details must not release payment.
- Validate the state transition, not just the role — can this record legally move from here to there?
- Log every privileged action with the actor, and make blocked attempts auditable.
- Add a regression test per rule.
Cross-site request forgery (CSRF) High if found Aggressive
How we test it
We submit state-changing requests without a valid token, and with a token belonging to a different session, to see whether they are accepted.
What the result means
Another website can make your logged-in users perform actions without their knowledge — changing an email address, transferring funds, approving a request.
How to fix
- Require a per-session CSRF token on every state-changing request; reject when missing or mismatched.
- Set
SameSite=Lax (or Strict) on session cookies as a second layer.
- Never make GET requests state-changing.
12 · Verified controls — what we prove is safe
The section other reports don't have.
Most reports list only what's broken. That leaves an auditor asking the obvious question: "what did you actually try?"
Every Aegis report includes a Verified Controls section recording the attacks we ran that failed — the exact endpoints a lower-privilege user was refused, the cross-tenant replay that was rejected, the injection probes that found nothing, and how many of each we ran. That is the evidence a reviewer needs to accept the result, and it's what turns "no findings" from an empty page into a defensible assurance.
13 · Using the report as audit evidence
What SOC 2 and ISO 27001 actually require, and where the report satisfies it.
A point of precision most vendors gloss over. There is no such thing as a "SOC 2 compliant" or "ISO 27001 certified" report — those frameworks certify organisations, not documents. What they require is that you test for vulnerabilities and act on what you find. A penetration test report is the evidence that you did. Anyone selling you a "SOC 2 certified report" is describing something that does not exist.
The controls this report speaks to
| Framework | Control | What it requires | Where the report answers it |
| ISO/IEC 27001:2022 | Annex A 8.8 | Management of technical vulnerabilities — identify, evaluate, act | Findings with severity, business impact and remediation; re-test after fixes |
| ISO/IEC 27001:2022 | Annex A 8.29 | Security testing in development and acceptance | Scope & methodology (Appendix A) and the dated assessment record |
| SOC 2 (TSC) | CC7.1 | Detect and monitor for new vulnerabilities | Scheduled re-scans plus the assessment history in your dashboard |
| SOC 2 (TSC) | CC4.1 | Ongoing evaluation of controls | Verified Controls — the attacks attempted that failed |
| PCI DSS v4.0 | 11.4 | External/internal penetration testing | Partially — see the caveat below |
What your auditor will ask for — and where it is
- "What was in scope?" → Appendix A, with the exact verified hosts and the tier used.
- "What methodology?" → Appendix A, plus this page in full.
- "When was it performed?" → Report header and every finding's Identified on date.
- "What did you find, and how bad?" → Master findings table with severity and state.
- "What did you do about it?" → Remediation per finding, then a re-test showing the state change to Resolved.
- "How do you know the controls work?" → Verified Controls: the attacks that were attempted and refused, with counts. This is the question most reports cannot answer.
- "Who performed it?" → Aegis, automated — stated plainly. See the caveat.
The caveat you should hear from us, not your auditor.
Aegis is automated testing. Many auditors accept automated penetration-test evidence for SOC 2 and ISO 27001 — but your auditor decides, and some engagements specifically require a named, qualified human tester. That is common for PCI DSS 11.4 and in government or defence procurement. If yours requires a human, no automated product — ours or anyone's — satisfies it, and you should hire a consultancy. Ask your auditor before you buy; we would rather lose the sale than have you fail an audit holding our report.
14 · What we don't test — and why that matters
Stated plainly, because a vendor who claims to test everything is telling you something untrue.
| Not tested | Why |
| Denial-of-service, load, stress | Deliberately excluded — the risk of harming your service outweighs the finding. |
| Provider infrastructure (Cloudflare, AWS, DigitalOcean…) | Not yours to authorise. Blocked in code. |
| Social engineering & phishing | Targets people, not systems. Needs a human-led engagement. |
| Physical security | Out of scope for an application test. |
| Source-code review (SAST), dependencies (SCA), containers | A different discipline. We test the running application from the outside, as an attacker meets it. |
| Novel zero-day discovery | Requires human creativity. Automation tests known and structural classes exceptionally well; it does not invent new attacks. |
The honest bottom line. No automated test proves the absence of vulnerabilities. A clean Aegis report means the checks we ran — documented above, in full — found nothing. That is genuinely valuable evidence, and it is not the same as "your system is secure." Any vendor implying otherwise is selling you certainty that does not exist.