Security testingReading reportsSecurity basics

How to Read a Vulnerability Scan Report

7 min read

A scan report runs to dozens of pages and opens on a wall of red high-risk markers. The IT contact's first question is usually whether all of it has to be fixed. The owner's question is what fixing it costs and how long it takes. Both are fair, and the answers are buried in the detail. This piece covers how these reports are structured, what a CVSS score does and does not tell you, and how to turn a long list of findings into a remediation order somebody can actually work through.

1. The five sections almost every report has

Templates differ between suppliers, but the content lands in roughly five sections: an executive summary, risk statistics, the findings themselves, remediation advice, and appendices. Owners read the summary and the statistics. The IT contact lives in the findings and the remediation advice.

Read it in reverse. Start at the appendices and confirm which assets were actually scanned, with what tooling, and what was excluded. Once you know the scope, the numbers at the front mean something. A report covering three URLs can come back entirely green and still tell you nothing about the state of your environment.

SectionWhat is in itHow to use it
SummaryOne page on what was scanned, how many findings, where overall risk sitsGives a decision maker a basis for how much to spend
Risk statisticsCounts by critical, high, medium and low, usually with a chartFor the overall distribution and comparison against last time, not for detail
FindingsWeakness name, severity, affected URL or IP, supporting evidence, CVE reference or OWASP categoryThe body of the work. Every line needs a name attached to it
Remediation adviceSpecifics: upgrade to this version, turn off that settingAny line that says only "strengthen validation" is one you can send back for detail
AppendicesScan dates, source IPs, tool and signature versions, exclusionsThe basis for comparing a retest and for evidencing an audit later

2. What CVSS is, and what the 0 to 10 bands mean

CVSS, the Common Vulnerability Scoring System, is an open standard for rating how severe a weakness is. It converts the attack path, whether privileges are needed, whether a user has to be involved, and the impact on confidentiality, integrity and availability into a number between 0 and 10. The point of it is to give findings from different tools and different suppliers one common yardstick.

What appears on most reports is the base score, which describes the technical characteristics of the weakness itself and knows nothing about your environment. It reflects whether the flaw can be triggered straight off the network, how difficult that is, what privileges it needs, whether a user has to cooperate, and how much damage it does to the data.

ScoreRatingRoughly what it means
0NoneNo practical impact
0.1 to 3.9LowHard conditions to meet, or very limited impact
4.0 to 6.9MediumReal impact, but usually needs particular conditions to line up
7.0 to 8.9HighEasy to exploit, or wide in what it affects
9.0 and aboveCriticalUsually exploitable remotely and directly, with serious consequences

The exact bands follow whichever CVSS version the report uses, commonly v3.1 or v4.0, so check the version number first. The same CVE can show slightly different scores in different tools, normally because of a version difference or a different reading of the scoring vector. Ask your supplier to include the full vector string so you can check the reasoning yourself.

The base score carries one large limitation: it does not know whether you have a web application firewall, whether the host sits on an internal network only, or how sensitive the data on it is. Those three facts only you can supply, and they are exactly what the next section runs on.

3. The three things that really set the fix order

Sorting the report by score, highest first, is the least effort and frequently the wrong order. A 9.8 that exists only on an internal test box can be less urgent than a 5.3 configuration slip, if that slip lets anyone on the internet list your backup files.

The first thing to weigh is exploitability. Items exposed to the internet with public exploit code already circulating go straight to the front. Items that require an internal account first, or physical access to the machine, can wait.

The second is blast radius and how much the asset matters. Anything carrying customer personal data, payments or member logins deserves early attention even at medium severity. A genuinely isolated test environment can sit further down the list even at high severity. No supplier can make this call for you, because only you know what is stored on which machine.

The third is what the fix costs and what it risks. Configuration changes and added security headers are cheap: clear them out without booking a change meeting. Anything requiring a major framework upgrade needs a test window and a maintenance slot, and in the meantime you can reduce the exposure by restricting source IPs or adding a firewall rule. Mitigation is not remediation, but it takes the urgency down.

Once the order is set, put a target date and an owner against every line. A list with no dates will still be the same list in three months, and the next scan will simply prove it again.

4. False positives, and why a human has to verify

Automated scanning works from signature matching and version detection, which produces error in two directions. A false positive reports a problem that is not there. A false negative misses one that is. Neither means the supplier was lazy: it is the limit of the tooling, and manual verification exists to cover that gap.

Version detection is the most common source of false positives. Some systems backport fixes into an older version number, so the software is patched but the version string never changes and the scanner still counts it as vulnerable. Two other frequent cases are a custom error page being misread as a finding, and something already blocked by a firewall still being listed as present.

Verification comes down to evidence. Every finding should carry a request and response fragment, a screenshot, or steps that reproduce it. A line supported by nothing but one message from a tool is one you can question. Anything marked as a false positive needs the reasoning and the date recorded, so the same line does not get argued over again at the next retest.

One more thing to settle upfront: a vulnerability scan compares you against a database of known weaknesses. Changing a parameter in a URL to see somebody else's order is not in that database. Business logic problems like that need a penetration test or manual testing to surface. A clean report is not evidence that they do not exist.

5. How to read the OWASP Top 10 categories in a report

Web scan reports usually map each finding to a category from the OWASP Top 10: broken access control, cryptographic failures, injection, security misconfiguration, use of vulnerable or outdated components. The category codes and names shift between editions, so check which year the report is using.

The value of the categories is not in a single line but in the distribution. The same category appearing repeatedly points at a systemic gap in the process rather than a set of individual bugs. Missing access control on several pages means authorisation is not being checked in one shared place, and fixing it page by page will miss whichever page gets built next. Outdated components showing up round after round means going back to check whether there is a dependency inventory and an update process at all, because otherwise a fresh crop appears next quarter.

Security misconfiguration is the opposite case. That category is usually cheap to fix, which makes it a good one to clear early so the remaining findings are easier to focus on.

6. After the fix: retesting and keeping records

Fixed is not finished. You want a retest on record showing the weakness is genuinely gone. The retest has to use the same scope, tooling and configuration as the original for the comparison to mean anything. Rescanning with a different product produces a second report, not a verification.

A retest report should map back to each numbered finding from the first scan and mark it with one of four states: fixed, mitigated, risk accepted, or false positive. Anything marked risk accepted needs the reasoning, the name of whoever approved it, and a review date. That is the part an auditor will always ask about.

The remediation record should hold at minimum the date found, what was changed, who did it, and the retest date and result. Client security questionnaires, management-standard audits, and tender documents for government or large-enterprise work all ask for this, and it is very hard to produce retrospectively. Scan frequency can follow your release rhythm: quarterly, say, with an extra scan after a major release or whenever a new service goes public.

7. What to ask a supplier before you buy

The difference between a useful report and a useless one is mostly decided at the quoting stage. Settling the questions below is what stops you receiving two hundred pages of raw tool output that nobody can act on. Anywhere the answer is vague, write it into the contract or the quote.

Six things to settle before you sign

  • How is scope counted? Per URL, per domain, per IP or per host. Whether subdomains, integration endpoints and test environments are included.
  • Is there manual verification? Whether false positives get marked with reasoning, or whether the tool output is handed over as it comes.
  • Is a retest included? How many, within what window, and what happens if you run past it.
  • Can the report be shown to clients or auditors? Whether there is a shareable summary version, and how internal IPs and paths are handled in it.
  • Am I buying a vulnerability scan or a penetration test? The two differ substantially in depth, timeline and cost, so confirm which one is being quoted.
  • Will scanning disrupt operations? How the window is arranged, and who to call, plus the mechanism for stopping if something goes wrong.

The value of a report is in what happens after it: pick out what is genuinely exploitable, get it into the operations schedule, and keep the retest evidence once it is closed. The score is one input into the ordering, and the final judgement still rests on what you know about your own assets. The first time you read one of these, clear the items that are reachable from the internet and cheap to fix, then take your time scheduling the rest.

Common questions

Does anything scoring above 7 on CVSS have to be fixed immediately?
High scores deserve to be assessed first, but the ordering also depends on exposure. A 7.5 that is internal only and needs a login before it can be triggered may be less urgent than a 5.3 information leak that faces the internet. Confirm whether it can be reached from outside and what data it touches before you commit to a timeline.
Can I hand a vulnerability scan report straight to a client or auditor?
Yes. Plenty of client security questionnaires accept a scan report less than a year old together with the retest record. The external version normally redacts internal IPs, paths and similar detail, so check when you buy whether the supplier provides a summary edition. If the other side has specifically asked for a penetration test report, a scan report will not substitute for it.
The report marks items as false positives. How do I know they were not marked that way to flatter the numbers?
Require reasoning and supporting evidence on every one, such as the actual patch status of the package in question and the connection record at the time. Anything that can be written down can be reviewed, and you can spot-check a few yourself or have a second supplier cross-check.

Read next