← Security research

What Is a Vulnerability Assessment? Scope, Process and What the Output Should Tell You

A vulnerability assessment is a structured review of an application, its APIs and its exposed infrastructure that identifies security weaknesses, confirms which of them are real, and rates each one by the risk it presents to the business. It answers a narrow question well: what is currently wrong, where, and how serious is it.

Four stage vulnerability assessment process with two dismissed scanner results and one confirmed high severity tenant isolation finding.

That definition sounds simple, and the confusion around it is not about the words. It is about what buyers actually receive. A vulnerability assessment can mean a genuine review carried out by someone who understands your application, or it can mean a scanner report with a cover page. Both get sold under the same name. This article covers what the scope should include, how the process works when it is done properly, what the report should tell you, and how to tell the two apart before you pay for one.

What a Vulnerability Assessment Actually Is

A vulnerability assessment is breadth first. The goal is coverage: enumerate the attack surface, identify weaknesses across all of it, validate what is real, and rate it. It is not primarily about proving how far an attacker could get from any single weakness. That is a different exercise.

For a SaaS product, the surface is wider than most teams assume when they first scope this work. It includes the web application, every API the application depends on, the authentication and session layer, the authorization model across roles and tenants, the administrative interfaces, the third party integrations, and the infrastructure and assets exposed on the public internet. A review that looks only at the main web application and stops there has covered a fraction of what an attacker sees.

The output is an inventory of confirmed weaknesses with severity, evidence and remediation guidance, ordered so your team knows what to fix first.

Vulnerability Assessment, Vulnerability Scanning and Penetration Testing

These three terms are routinely used as if they were interchangeable. They are not, and the differences change what you get.

Vulnerability scanning is automated. A tool sends known probes, compares responses against a signature database, and produces output. It runs in minutes or hours, costs very little, and is genuinely useful for the class of problems it detects: missing patches, outdated components, known CVEs in identifiable software, obvious misconfiguration. Its weakness is that it only finds what it has a signature for, and it cannot tell whether a finding matters in your context. A scanner can tell you a library is three versions behind. It cannot tell you that the vulnerable function is never reached in your code.

A vulnerability assessment includes automated scanning as one input and then does the work the scanner cannot. Someone reads the output, reproduces each finding, discards the false positives, and reviews the parts of the application where automation is structurally blind: authorization decisions, ownership checks, multi step workflows, business rules. The deliverable is validated rather than generated.

A penetration test is depth first. Rather than cataloguing weaknesses, the tester picks the most promising paths and pushes them to demonstrate real impact: chaining two low severity issues into account takeover, escalating from a standard user to an administrator, crossing from one tenant into another. The goal is proof of consequence. That is the subject of the SaaS penetration testing service page.

If you want to know how bad things could get, that is a penetration test. If you want to know what is wrong across the whole surface, that is an assessment. Most teams need both eventually, and which one comes first depends on how much you already know about your own attack surface. There is a fuller breakdown in the comparison of penetration testing and vulnerability scanning.

What Should Be in Scope

Scope is where most assessments are quietly weakened, because the parts that get cut are usually the parts that matter. A complete scope for a SaaS application covers the following.

The web application. Every authenticated area, not only the pages a marketing walkthrough would show. Settings, billing, user management, exports, file handling, search, anything that accepts input or returns data.

Every API. Modern applications are API driven, and the API is usually a larger surface than the interface built on top of it. REST endpoints, GraphQL, internal services reachable from the browser, webhook receivers, and any mobile backend. The application may hide an endpoint. The API still answers it. This is covered in more detail in the review of common API vulnerabilities in SaaS applications and on the API penetration testing page.

Authentication and session handling. Login, registration, password reset, multi factor enrolment and bypass, token lifetime, session invalidation, and every flow that issues or accepts a credential. The common authentication vulnerabilities post covers where these break in practice.

Authorization, across roles and across tenants. This is the single most productive area in SaaS assessment work and the area automation covers worst. Role boundaries, object ownership, tenant isolation. A request that returns another organization’s data with a 200 response is not a malformed request, so nothing about it looks wrong to a scanner. Broken access control and IDOR are the two most common serious findings in this category.

Business logic. Quantity and price handling, discount and refund paths, approval and invitation flows, quota and limit enforcement, anything where the correct answer depends on a rule rather than on syntax. Business logic vulnerabilities exist precisely because the request is valid and the rule behind it is wrong.

Exposed assets and external attack surface. Subdomains, staging and development environments left reachable, forgotten services, storage buckets, administrative panels, endpoints that were never meant to be public. Exposed asset detection belongs inside an assessment because you cannot assess what you have not found, and most organizations have more exposed than their own inventory records. The reasoning behind that is in the post on asset visibility, and it runs as an ongoing service under external attack surface monitoring.

Anything excluded from scope should be excluded deliberately and written down, so nobody later mistakes silence for a clean result.

The Process

A vulnerability assessment done properly runs through the following stages. The order matters, because each stage narrows what the next one has to look at.

1. Scoping and rules of engagement. What is in scope, what is explicitly out, which environment is being tested, what accounts and roles are provided, what is off limits, and who to contact if something serious is found mid assessment. Testing authorization properly requires at least two accounts in different roles and, for a multi tenant product, accounts in two separate tenants. An assessment given one account cannot test tenant isolation at all.

2. Reconnaissance and asset discovery. Enumerate what is actually exposed rather than what the documentation claims. Subdomains, hosts, services, endpoints, JavaScript bundles that reveal API routes, and any environment that was stood up and forgotten. This stage regularly finds the thing that ends up being the most serious item in the report.

3. Mapping the application. Walk every function with every provided role while capturing traffic. The result is a map of endpoints, parameters, object identifiers, roles and workflows. Without this map, later stages are guesswork.

4. Automated scanning. Run the tooling. It is fast, it covers known issues well, and there is no reason to do by hand what a scanner does reliably. Treat the output as a list of leads rather than a list of findings.

5. Manual validation. Reproduce every lead. Confirm what is real, discard what is not, and correct the severity the tool assigned. A meaningful share of scanner output on a modern application is either a false positive or a real behaviour whose severity is wrong in context.

6. Manual testing of what automation cannot reach. Authorization across roles and tenants, object ownership, business logic, multi step workflows, race conditions, account lifecycle and invitation flows. The method behind this stage is set out in the guide to authorization testing in modern SaaS applications. This is the part of the assessment that produces findings nobody else has reported.

7. Risk rating. Each confirmed finding is rated on what it actually allows in your application, not on a generic score attached to a vulnerability class.

8. Reporting. A written deliverable with evidence for each finding.

9. Retest. Once fixes are deployed, the original findings are tested again to confirm the fix works and did not introduce a new problem. A finding is not closed because a ticket was closed.

Why Manual Validation Is the Part That Matters

Two applications can run the same scanner and get nearly the same output. What separates a useful assessment from an expensive PDF is what happens to that output afterwards.

Automated tools decide whether something is wrong by pattern. They are good at malformed input, known signatures and missing headers. They are structurally poor at anything where the request is well formed and the answer is simply wrong for the person asking. A tool cannot know that user 8842 should not be able to read invoice 3391, because nothing in the request or the response looks abnormal. It returns 200 with valid JSON. Only someone who understands the application’s ownership model can look at that exchange and recognise it as a breach of tenant isolation.

This is also why two assessments of the same product can differ so much in value. The automated portion converges. The manual portion does not.

What the Report Should Tell You

The deliverable is the product. Judge it on whether your engineers can act on it without a follow up call. A report worth paying for contains, for every finding:

  • The affected endpoint or function, specifically enough to locate it in the codebase.
  • The exact steps to reproduce, including the request, the account and role used, and the response received.
  • Evidence. The actual request and response, not a screenshot of a tool’s summary pane.
  • A severity rating with the reasoning behind it, in terms of what this allows in your application.
  • The security impact stated in business terms: what data is exposed, which accounts are affected, what an attacker gains.
  • Remediation guidance specific to the flaw, not a link to a generic reference page.

It should also state scope and coverage plainly, including what was not tested, and it should distinguish confirmed findings from observations that could not be fully validated. A report that presents scanner output and validated findings in the same list is telling you the validation step did not happen. There is a longer treatment of this in the post on what a penetration test report should contain, and example deliverables are in the resources section.

How Severity Should Be Decided

Severity attached to a vulnerability class is close to meaningless on its own. The same technical flaw can be trivial in one application and critical in another, and the difference is entirely context.

Rating a finding properly means answering what an attacker actually gains, what access they need first, how much of your user base is reachable, whether it is exploitable by an unauthenticated visitor or only by an authenticated user in the right role, and whether it can be chained with anything else found in the same assessment. A missing ownership check on a low value object is a real finding and a low one. The same missing check on the endpoint that returns billing records is not.

Inflated severity is a real problem in this industry. It makes reports look impressive and it makes them useless for prioritisation, because if everything is high then nothing is.

Where Assessments Commonly Fall Short

A few failure patterns show up repeatedly.

Scope too narrow. The web application is tested and the API behind it is not, or one tenant is provided and tenant isolation therefore goes untested.

One account only. Authorization cannot be assessed without multiple roles, and tenant isolation cannot be assessed without multiple tenants. This is the most common scoping mistake and it removes the most valuable category of findings from the engagement before it starts.

Unvalidated output. False positives left in, real findings rated by a tool’s default score.

No business logic coverage. The assessment covers everything a tool can reach and nothing that requires understanding what the application is for.

No retest. Fixes are assumed to work. Frequently they address the reported path and leave an adjacent one open.

Staging that does not resemble production. Testing an environment with different roles, different data or different configuration produces findings that do not map to the system your customers use.

How Often to Assess

Point in time assessment fits a product that changes slowly. Most SaaS products do not. Every release can introduce a new endpoint, a new role, a new integration or a new way for one tenant’s data to reach another.

A workable pattern for most teams is a full assessment on a regular cadence, a focused review of anything that materially changes the authorization model or adds a significant new surface, continuous monitoring of externally exposed assets between assessments, and a retest after each round of fixes. A vulnerability assessment establishes the baseline. What you do between assessments determines whether it stays accurate.

Final Thoughts

A vulnerability assessment is worth exactly as much as the validation behind it. The automated part is commodity, and anyone can run it. What you are actually paying for is the judgement applied to the output, and the coverage of the areas automation cannot reach at all: authorization across roles and tenants, object ownership, business logic and the assets you did not know were exposed.

When you evaluate a provider, ask them how many accounts and roles they need and why, ask what they do with scanner output, ask to see a sample report, and ask how severity is decided. The answers to those four questions tell you more than any certification list.

If you want to see how this work is scoped and delivered in practice, the vulnerability assessment page covers the service, and the resources section has sample reports and checklists you can read before speaking to anyone. If you would rather discuss a specific application, get in touch.

Frequently Asked Questions

Is a vulnerability assessment the same as a penetration test?

No. An assessment is breadth first and catalogues weaknesses across the whole attack surface with severity ratings. A penetration test is depth first and demonstrates how far an attacker could actually get by chaining findings together. An assessment tells you what is wrong. A penetration test tells you what it would cost you.

Can a scanner replace a vulnerability assessment?

No. A scanner is one input to an assessment. It reliably finds known issues with signatures and it cannot evaluate authorization, ownership or business logic, because in those cases the request is valid and only the decision behind it is wrong. Scanner output also contains false positives and context free severity ratings that need correcting before anyone acts on them.

How many accounts do you need to run an assessment?

At minimum two accounts in different roles, and for a multi tenant application, accounts in two separate tenants. Without them, role boundaries and tenant isolation cannot be tested, which removes the highest value category of findings from the engagement.

Should the assessment run against production or staging?

Either can work, but staging only produces accurate results if it matches production in roles, configuration and data shape. Where staging differs materially, findings may not map to the live system, and that gap should be recorded in the report.

What happens after the report?

Your team remediates in the order the severity ratings set, then the findings are retested to confirm each fix works and has not opened an adjacent path. A finding should not be considered closed until it has been retested.

Does a vulnerability assessment cover APIs and exposed assets?

It should. The API is usually the larger surface, and exposed asset detection belongs in the assessment because anything you have not discovered cannot be assessed. If a proposal covers only the web application, that is a narrower engagement than the name suggests.

SECURITY REVIEW

Need help testing your SaaS application?

I help SaaS and API teams find exploitable vulnerabilities, access control gaps and attack paths before they become incidents.

SaaS SecurityAPI SecurityAccess ControlManual Validation
Request a Security Review