GapScan Sample Report

acme/payments-api against OWASP ASVS 5.0, Level 2

RUN
#42 · compared with #41
COMMIT
3f9c2a1 → 8be41d0
GENERATED
21 Oct 2026, 14:08 UTC
STANDARD
OWASP ASVS 5.0.0 · L2
LANGUAGES
Python, YAML, Dockerfile
AI REVIEW
qwen3-coder:30b, on this machine
MODE
Local. Nothing was sent anywhere.
CODE
Read only. Never built or run.

1 · Where things stand

9 gaps across 105 controls.

9Gaps

Controls with evidence in the code that they are not met.

52Checked, no finding

Checked by code and nothing was found. That is not the same as met.

44Needs a person

Controls that code alone cannot show, such as policies and documents.

Three gaps are critical, and two of them sit in code that handles refunds and webhooks. Fix the SQL query in the refund lookup and move the webhook signing key out of the code first. The OS command injection in the export endpoint was fixed in this run and re-scanned clean.

3 critical 4 high 2 medium 1 closed · 3 fix proposed · 5 open

2 · Coverage by chapter

Where the gaps are.

The five ASVS chapters with requirements that code can show at Level 2. Each control is counted once.

ChapterControlsGapsNo findingNeeds a personSplit
All chapters10595244

3 · Gaps

Each gap, with its evidence.

Most severe first. Open a gap to see the path the data takes, the AI review and the fix.

4 · Needs a person

44 controls GapScan cannot decide.

These ask for documents, processes or behaviour at run time. GapScan lists them so they are not forgotten, and leaves the decision to your reviewer. Four examples:

V6.1.1Rate limiting and anti-automation are documented for authentication.
V11.1.1A documented policy covers how cryptographic keys are managed.
V13.1.1Every communication need of the application is documented.
V16.1.1An inventory says what is logged at each layer.

5 · What ran

Tools and what they covered.

A tool that did not finish is reported here, never hidden.

ToolStatusWhat it means for this report
Semgrep with GapScan rulesRanCode patterns checked in every file.
GapScan data-flow engineRanRequest data followed across files to each sink.
BanditRanPython security checks done.
GitleaksRanSecrets searched for. Values are redacted.
OSV-ScannerRanDependencies checked against the local advisory snapshot of 20 Oct 2026.
TrivyRanContainer image and Dockerfile checked.
CheckovTimed outKubernetes files were not checked. V13 results may miss configuration gaps.

6 · AI review

How the AI review went.

Every verdict is advice from a model running on this machine. It is checked against a fixed format before it is accepted, and a reviewer decides.

61Confirmed real

of 128 findings reviewed

39Dismissed as false alarms

each with a written reason you can check

28Sent to a person

4 of them contain text that tries to instruct the AI reviewer

7 · Limits

What this report cannot tell you.

Coming with the cloud service

Closed gaps get a signed record.

In the cloud service, a gap closed by a clean re-scan becomes a signed record that you can give an auditor or attach to a customer questionnaire.

Proof of fix · V1.2.5Planned
Gap
ASVS V1.2.5 · OS command injection
Opened
commit 3f9c2a1 · run #41
Closed
commit 8be41d0 · run #42 re-scan clean
Evidence
trace, AI review, diff, re-scan log
signed ed25519 · 7c1e…a94f
Generated by GapScan · run #42Sample data, not a real project