Evidence-Verified Vulnerability Scanning: Telling Real Findings From False Positives
Most scanners hand you a list of alerts and let you guess which are real. 2MNY now re-verifies every critical and high finding by re-checking its live evidence after the scan — and exports everything to SARIF for your CI and VM platforms.
Every security team knows the real cost of a vulnerability scanner is not the scan — it is the triage time afterwards. A report with 200 findings where 40 are false positives does not just waste an afternoon; it quietly trains your team to distrust the tool, and the one real critical finding gets the same skeptical glance as the noise.
That is why false-positive control — not scanner count — is the hardest problem in automated security testing. Today we are documenting how 2MNY solves it end-to-end: evidence-verified scanning, where every critical and high finding is re-checked against the live target after the scan, plus the negative-control system that catches noisy scanners before they pollute your reports.
The problem: alerts without proof
A typical scanner reports "XSS vulnerability found" and moves on. Was the payload actually reflected? Is the endpoint still reachable? Did a WAF page get mistaken for a vulnerable response? The scanner captured something during its run — but you are left to reproduce it by hand before you can open a ticket.
The result is a trust gap. Engineers batch-dismiss scanner output, or worse, auto-create tickets that rot because nobody can confirm the issue. Vulnerability management stalls not because findings are missing, but because nobody can tell which findings are real, right now.
Evidence-verified scanning: re-checking the proof
2MNY's scan engine already captures evidence for every finding — the response body, the URL, the artifact that proves the issue. The new verification layer goes one step further: after the scan completes, the platform re-fetches the evidence URL of every critical and high severity finding and records what it finds.
The verification pass is deliberately boring and safe:
- It sends a
HEADrequest first, falling back to a small rangedGET(1 KB) only when a server rejects HEAD. - It never submits forms, never replays exploits, never modifies anything — verification is read-only by design.
- It runs twice daily across the platform for fresh findings, plus a bounded backlog drain (400 findings per day) that progressively re-verifies older findings.
Each re-checked finding gets one of four labels, shown as a badge in your report:
| Badge | What it means | What you should do |
|---|---|---|
| VERIFIED LIVE | The evidence URL still responds exactly as it did during the scan — the vulnerability is confirmed present right now | Fix it — this is real and reachable |
| REMEDIATED (VERIFIED) | The evidence URL now returns 404/410 — the exposure is gone | Good news; it drops out of your next scan's diff |
| UNREACHABLE AT CHECK | The server did not respond to the verification request (timeout, 5xx, blocking) | Re-check later; neither confirmed nor cleared |
| NOT MACHINE-VERIFIABLE | The finding's evidence is not a re-checkable URL (DNS records, policy analysis) | Human review decides |
The report header now carries an Evidence Verification summary band — for example, "27 of 31 critical/high findings re-verified (87%) — 21 confirmed live, 3 already remediated" — with the date of the most recent check. That single line is what a CISO reads first: it converts a list of alerts into a list of confirmed exposures.
The other half: negative controls against noisy scanners
Verification handles findings; but what about scanners that are systematically wrong? 2MNY runs a daily clean-control test: every HTTP-surface scanner is pointed at a known-clean control site built inside the engine — plain pages, all security headers set, no secrets, no panels. A scanner that reports problems on a clean target is, by definition, generating false positives.
When that happens, three things follow automatically:
- The scanner's unresolved findings from the last 14 days are quarantined (suppressed from reports, evidence preserved for forensics).
- A 7-day false-positive flag goes up, and the scanner's confidence weighting is downgraded.
- Engineering gets an audit trail showing exactly what the scanner claimed on the clean rig.
This is the same logic a laboratory uses with negative controls: a test that fires on a clean sample is contaminated, full stop. Combined with live evidence re-checks, it means a finding in your report survived two independent quality gates — its scanner passed a clean-control test, and its evidence was re-confirmed live after the scan.
Machine-readable exports: SARIF 2.1.0 for CI and VM platforms
Verification makes findings trustworthy for humans; SARIF makes them actionable for machines. Every scan report can now be exported as SARIF 2.1.0 — the OASIS standard format understood by GitHub code scanning, DefectDojo, SonarQube, CI quality gates and virtually every vulnerability-management platform.
The export is built for pipeline use:
- Stable fingerprints — each result carries the platform's cross-scan finding key, so diffing tools match findings between scans instead of duplicating them.
- Severity mapping — critical/high map to
error, medium towarning, low/info tonote, with the raw severity preserved in result properties. - Honest coverage metadata — the run carries a coverage note tied to the report's Coverage Ledger, so an empty results file can never be mistaken for a scan that never ran.
Download it from any scan page (SARIF button) or programmatically via the report endpoint — alongside the existing PDF, HTML and JSON formats.
Which scanners run at which depth?
Verification applies across all of 2MNY's 232 live scanner modules, but not every scan runs every module. The tier system is now fully explicit and documented:
| Depth | Modules | What it includes | Best for |
|---|---|---|---|
| Quick | 63 | Fast single-request checks — headers, cookies, TLS basics, technology fingerprinting | Continuous monitoring, daily re-checks |
| Deep | 228 | Everything in Quick + 165 deep modules: CMS audits, injection testing, CORS vectors, secret extraction, subdomain enumeration, email security (SPF/DKIM/DMARC), port scanning | Scheduled assessments (weekly/monthly) |
| Super-Deep | 232 | Everything + the heavy artillery: OWASP ZAP, Wapiti, full Nuclei template corpus | Pre-launch audits, annual reviews |
Because Deep is a strict superset of Quick, there are no coverage gaps between tiers — a Deep scan always includes everything a Quick scan found, and the rescan diff in every report tracks exactly what changed between scans (new findings, resolved findings, risk-score movement).
Why this matters for vulnerability management
The economics are simple. Verified findings mean:
- No wasted engineering hours reproducing scanner output by hand — the evidence re-check already did it.
- Faster ticket acceptance — "VERIFIED LIVE" is a defensible reason to prioritize.
- Renewal-ready reporting — scan-over-scan diffs plus "REMEDIATED (VERIFIED)" badges turn your next report into a progress story, not just a problem list.
- Pipeline-native integration — SARIF exports gate your CI and feed your existing VM tooling without manual import work.
False positives are not a cosmetic problem; they are the reason scanner output gets ignored. Evidence verification is how a scan report earns back its credibility — one re-checked URL at a time.
1 What is evidence-verified vulnerability scanning?
It is a scanning methodology where findings are not just reported but re-checked: after the scan completes, the platform re-fetches the evidence URL of every critical and high severity finding and labels the outcome — Verified Live, Remediated, Unreachable, or Not Machine-Verifiable. You see which vulnerabilities are confirmed present right now, not just what the scanner saw during its run.
2 How does 2MNY verify that a vulnerability finding is real?
During the scan, every finding captures evidence — the URL, response, or artifact proving the issue exists. After the scan, a verification pass re-requests those evidence URLs using read-only HEAD requests (with a small ranged GET fallback). If the evidence still responds as it did during the scan, the finding is marked Verified Live; if it now returns 404/410, it is marked Remediated. Verification never submits forms or exploits anything.
3 What is SARIF and why does my team need it?
SARIF (Static Analysis Results Interchange Format) is the OASIS standard format for machine-readable security findings. 2MNY exports every scan as SARIF 2.1.0 with stable cross-scan fingerprints, so you can import results into GitHub code scanning, DefectDojo, SonarQube or CI quality gates and track findings across scans without duplicates.
4 How does 2MNY prevent false positives in the first place?
Two mechanisms. First, live evidence verification re-confirms critical and high findings after every scan. Second, a daily negative-control test runs every HTTP-surface scanner against a known-clean control site — any scanner that reports problems on a clean target is flagged as a false-positive source, its unresolved findings are quarantined from reports, and its confidence weighting is downgraded until fixed.
5 What is the difference between Quick, Deep and Super-Deep scans?
Quick scans run 63 fast modules for continuous monitoring. Deep scans run 228 modules — everything in Quick plus 165 deep-tier scanners like CMS audits, injection testing and secret extraction — and are the standard for scheduled assessments. Super-Deep runs all 232 modules including OWASP ZAP, Wapiti and the full Nuclei template corpus, intended for pre-launch audits and annual reviews.