A client sends you a security questionnaire. A bank asks for "a VAPT report". Your board asks whether you are secure. These three sentences do not describe the same piece of work, but they are routinely answered with whichever service the vendor happens to sell.
The difference is not academic. Buying a vulnerability scan when the requirement was a penetration test means paying twice. Buying a penetration test when all you needed was a scan means paying four times more than necessary for a result you could have had in an afternoon.
Vulnerability scan: breadth, no judgement
A scanner connects to your systems, compares what it finds against a database of known issues, and prints a list. It is fast, it is cheap, it covers everything you point it at, and it runs as often as you like.
What it cannot do is decide whether a finding matters. A scanner sees an outdated library and reports it as critical. It does not know the vulnerable function is never called, or that the server sits behind an authenticated gateway. Equally, it does not know that the "informational" directory listing it found exposes a backup file containing your database credentials.
Scanners also only find what somebody has already written a check for. Anything specific to your application — a price field a user can edit, an order id another customer can guess — is invisible to them. That class of bug is the majority of what actually gets exploited in a business application.
Buy a scan when you need continuous coverage, a patching worklist, or evidence that you are monitoring for known issues between deeper assessments.
Penetration test: depth, with a human
A penetration test is a person attempting to reach a defined objective in your environment — read another tenant's data, escalate from a standard user to an administrator, move from the web application into the internal network.
The scan is a step inside that work, not a substitute for it. The value is in what follows: chaining three low-severity findings into one serious outcome, recognising that an error message leaks the ORM in use, noticing that a password reset token is predictable.
A test produces a narrative, not a list. It should tell you what was reached, how, what it proves about the design rather than the individual bug, and what to change so the class of issue does not come back.
Buy a test when a customer or regulator requires one, when you have shipped something significant, or when you need to know what an attacker could actually achieve rather than what software is out of date.
Security audit: paperwork, measured against a standard
An audit compares what you do against a named framework — ISO 27001, SOC 2, PCI DSS, an internal policy set. It asks whether a control exists, whether it is documented, and whether you can evidence that it operated over a period.
An audit will not find a SQL injection flaw. It will find that nobody has reviewed admin access in fourteen months, that your backups have never been restored as a test, and that three former employees still have accounts. Those are often the findings that would have mattered most in a real incident.
Buy an audit when you are pursuing certification, answering a procurement process, or you suspect the problem is process rather than code.
So which one are you being asked for?
Read the request, not the acronym. A few reliable tells:
- "Provide your most recent penetration test report" — they want the human-led test, dated within twelve months, with a retest or remediation note.
- "Confirm you perform regular vulnerability scanning" — they want the scan, plus evidence of cadence.
- "Complete the attached questionnaire" — this is an audit in disguise. The answers are about process, not findings.
- "We need VAPT" — ambiguous by construction. Ask whether the deliverable has to name a tester and describe exploitation. If yes, it is a penetration test.
The honest order for most organisations
If you have none of the three, do them in this order. Scan first, because it is cheap and removes the noise. Fix what it finds. Then test, so the tester spends their time on logic and design rather than on missing patches you already knew about. Audit when somebody is asking for certification, or when the test keeps surfacing the same root cause and you need to know why the process allowed it.
Running a penetration test against an environment that has never been scanned is a common and expensive mistake. You pay specialist day rates for a list of outdated packages.
0 comments
Leave a comment