A VAPT report is the deliverable of a vulnerability assessment and penetration testing engagement. It says what was tested, in which environment, at which build, over which dates, by what method, and what was found. Almost everything that decides whether the document is worth anything is settled in the first three pages — and almost nobody reads those first.
Read in this order: scope and asset list, environment and build, dates, methodology and effort — and only then the findings. A severity chart on page two of a report whose scope quietly omits your admin console is a chart about somebody else’s estate.
Plain-English explainer · CERT-In Comprehensive Cyber Security Audit Policy Guidelines v1.0, 25 July 2025 · Empanelment terms v7.2, April 2024 · Auditor guidelines v3.0, May 2018 · Sources last checked 22 September 2026
A VAPT report is the written output of a Vulnerability Assessment and Penetration Testing engagement. VAPT is CERT-In’s own abbreviation, rendered without the conjunction: §13.2.3(i)(a) of its Comprehensive Cyber Security Audit Policy Guidelines (version 1.0, 25 July 2025) lists the audit types that must be communicated to an auditee before an engagement begins, and the list opens with “VAPT (Vulnerability Assessment Penetration Testing)”. The two halves are different activities and the same document defines each. A vulnerability assessment, at §5(xxi), is the examination of an information system or product to determine the adequacy of security measures, identify security deficiencies, provide data from which to predict the effectiveness of proposed security measures, and confirm the adequacy of such measures after implementation. Penetration testing, at §5(xxii), is a security testing methodology in which individual components or the application as a whole are actively tested to identify and exploit potential vulnerabilities — the objective being to determine whether they can be exploited to compromise the application, access sensitive data, or affect the underlying infrastructure and environment. A report that covers only the first half is a vulnerability assessment report, whatever the cover page calls it. Knowing which one you are holding is the first act of reading it.
To read one critically, work from the outside in: scope, environment, build, dates, methodology and effort first, findings second, and what is missing last. The scope decides what every other page means. The environment and the build decide whether the report describes the software you are running. The dates decide whether it describes it now. The methodology and the effort decide whether the findings are the product of testing or of scanning. Only then is the severity chart worth looking at — and even then, an auditor’s severity is a statement about a weakness, not a statement about your risk. The rest of this page walks each part in turn, sets out the clause that requires it, shows what good evidence and a properly rated finding look like, explains how to dispose of a false positive without pretending it never happened, and lists the tells that reveal a thin test from the document alone.
“Audit report should be clear, precise and comprehensive to include all details of audit process, detailed scope, duration of audit, methodologies/standard used, tools, manual process, findings, prioritization, sampling decisions, manpower involved, exemptions, limitations and other constraints.”
“All the observations made during the audit are well supported with objective evidences and all evidences are compiled carefully and correctly with the report. All the evidence gathered during the process of audit is presented in a manner that the decision makers are able to use them effectively in making credible risk-based decisions.”
Those two sentences are the whole standard in miniature. The first says the report must describe the work, not just the outcome. The second says every claim in it must be backed by something a decision maker can act on. A document that fails either is not a bad report. It is a different kind of object — a summary of a tool run, wearing a report’s clothes. The tests in this page are all, in the end, tests of those two sentences.
Which rulebook applies to your report? Read this before the rest
The clauses cited throughout this page are CERT-In’s, and they do not govern every VAPT report written in India. A great many tests are commissioned under a sectoral regulator’s framework, under a customer contract, or under a certification scheme, and for those readers the fifteen-part anatomy is a very good checklist rather than a set of requirements. Work out which row you are in first, because the rest of the page reads differently depending on the answer.
| Why the test is happening | What actually governs the report | What you can therefore insist on |
|---|---|---|
| An Indian government website, web application, portal or mobile app, before it goes into production | GIGW guideline 5.3.1 requires an audit clearance certificate issued by NIC, STQC, an STQC-empanelled laboratory or a CERT-In empanelled laboratory before hosting in the production environment. Where the issuer is a CERT-In empanelled organisation, the audit policy guidelines bind it as well. | Everything on this page. The full fifteen-part anatomy, the §16.1(ii) contents list, the evidence appendix under §18, the three signatures, and the final report only after closure and the follow-up audit under §16.3(v). |
| Any engagement, anywhere, delivered by a CERT-In empanelled organisation | The audit policy guidelines themselves. §2 states that they are “binding on all CERT-In empanelled auditing organizations and auditee entities covered under the relevant provisions”, and §4 names both — empanelled auditing organisations, and auditee organisations in the public and private sectors that are required to or are seeking to evaluate their cyber security posture. §2 does not enumerate the relevant provisions. | The same list, because the clauses bind your auditor whoever you are. This is the common case for a private company that hired an empanelled firm without any government requirement in sight. |
| A regulated entity testing under its own regulator’s or scheme’s framework | That instrument, not this one. Name it in the engagement letter and cite its clauses the way this page cites CERT-In’s. Two verified connections run the other way: §12.1(i) says CERT-In’s published snapshot information should be used by organisations or sectoral regulators to identify and select auditing organisations, and §13.1.2(i) says sectoral regulators may increase the audit frequency above the annual floor. Neither makes any regulator’s requirements a CERT-In matter. | Your framework’s own report requirements first. Then use this page as a checklist of things worth having anyway — a scope derived from an inventory, stated environment and build, evidence per observation, vectors behind the severities, and a retest. |
| A customer-driven or contractual test by a firm that is not empanelled | No instrument at all. The statement of work and the engagement letter are the only standard the report will be measured against, and they bind only because you wrote them. Note termscon clause 2.1 for context even where empanelment is in play: the auditor is contracted by the customer directly, and CERT-In is not a party to that contract. | Everything you would otherwise have been entitled to, written in. The request list further down this page matters more here, not less — because nothing else is going to supply it. |
One thing the table deliberately does not do is state what any particular regulator requires. Nothing in CERT-In’s instruments makes a named sectoral regulator’s rules a CERT-In matter, and this page does not assert otherwise. If you are testing to satisfy a regulator, a card scheme or a certification standard, name that instrument in the engagement letter and cite its clauses the way this page cites these — and where the test is being read as part of a SOC 2 programme rather than an Indian audit, the different expectations are set out on SOC 2 and penetration testing.
Key Takeaways
- VAPT is CERT-In’s own abbreviation for Vulnerability Assessment Penetration Testing, named at §13.2.3(i)(a) of the Comprehensive Cyber Security Audit Policy Guidelines (v1.0, 25 July 2025) among the audit types that must be agreed before an engagement starts. A vulnerability assessment determines the adequacy of security measures and identifies deficiencies, while a penetration test actively exploits them to see what they let an attacker do.
- Read a report from the outside in: scope and asset list, environment, version and hash, the three dates, methodology and effort — then the findings, and last of all the limitations, exemptions and unknowns.
- §16.1(ii) sets what the report must contain: the audit process, detailed scope, duration, methodologies and standards, tools, manual process, findings, prioritization, sampling decisions, manpower involved, exemptions, limitations and other constraints. §16.1(iii) requires every in-scope asset to be named in the report.
- §18(iii) requires observations to be supported by objective evidence, compiled with the report and presented so decision makers can use it. §18(i) entitles the auditee to seek the working notes and the evidence as an appendix.
- CERT-In’s guidelines do not govern every VAPT report. They bind empanelled auditing organisations and the auditee entities covered under the relevant provisions (§2, §4). Where a test runs under a regulator’s own framework or a customer contract instead, that instrument governs and this page is a checklist rather than a rulebook.
- §16.3(iii) requires the report to state closure timelines according to severity — and fixes no number of days for any band, so the timelines come from the engagement letter rather than from an instrument. §16.3(ii) requires critical and high findings to be notified during the audit as and when found rather than saved for the report.
- §16.2(ii) requires CVSS for severity together with EPSS for real-world exploitation likelihood, and requires every reported observation to be mapped to a CWE and a CVE number.
- A raw CVSS base score is not a risk rating for your environment. The FIRST specification says the Base Score assumes the reasonable worst-case impact across deployed environments, and instructs consumers to enrich it with Threat and Environmental metrics specific to their own use of the system.
- Annexure I to the empanelment terms (v7.2, April 2024) expects reports to mark all unknowns clearly as unknowns, to state all states of security found rather than only the failures, and to use metrics based on a mathematical formula “and not on feelings of the auditor”.
- The tells of a thin test are readable from the document: tool output pasted as findings, a methodology that names only OWASP Top 10 — which §8(ii) says is not a standard for audits — missing evidence, generic remediation text, a scope that omits the interesting systems, no environment or build, and unknowns that are not marked as unknowns.
- We deliver CERT-In audits, end to end, with our CERT-In empanelled partners.
What should a VAPT report contain? Fifteen parts, one by one
Fifteen parts. Every row names the clause that requires it, because “the report should have an evidence appendix” is an opinion until you can point at the sentence that says so. Section references without another document named are to CERT-In’s Comprehensive Cyber Security Audit Policy Guidelines, version 1.0 of 25 July 2025. Print this table and tick it against the document in front of you. The gaps are the conversation.
| Part of the report | What you are reading it for | What requires it |
|---|---|---|
| Scope and asset list | What was tested, named asset by asset. Hostnames, URLs, IP ranges, application names, API endpoints, mobile builds, databases, network devices. This is the part that decides what every other part of the document means. | §13.1.1(a)–(g) sets what the scope must cover and requires it to be derived from the consolidated and updated asset inventory. §16.1(iii): “All the assets provided in the scope by auditee organization must be mentioned in the report.” |
| Environment tested | Test, Development, UAT, Pre-Production or Production, stated explicitly rather than implied by a hostname. A finding in staging and the same finding in production are different facts about your business. | §15.2.3(i) requires the environment to be specified. §16.3(v): where the scope was limited to staging, “the report must explicitly state that the audit was not conducted on production environment.” |
| Version, build and hash | The exact thing tested. Application version, build identifier, and the hash value with its algorithm. Without these the report describes software you can no longer identify. | §9.5(i) requires hash values, versions and timestamps to be captured by the auditee and “prominently featured in the audit certificate and reports”, restated at §16.1(v). §13.2.3(ii)(c): version-specific details of web and mobile applications must be explicitly mentioned in the audit scope and report. |
| Dates | Three different dates, all of which matter: the test window, the date of each report version, and the date up to which the asset inventory the scope was drawn from had been updated. | §16.1(ii) requires the duration of the audit. §16.1(iv) requires report versions — draft, final — with the date of issuance of each. §13.2.3(ii)(b) requires the as-of date of the scope and asset inventory to be reflected in the audit reports. |
| Methodology, standards and tools | What the testers actually did: the standard or framework followed, the tools used, and the manual process alongside them. A methodology section that names only a tool is a description of a scan. | §16.1(ii) requires methodologies and standards used, tools, and manual process. §8(i): “Solely tools-based testing should be discouraged.” §8(ii) names the frameworks that count as standards. |
| Manpower and effort | Who tested, and for how long. A report on a large estate delivered by one person in two days is telling you something the findings will not. | §16.1(ii) requires manpower involved and the duration of audit. §13.2.2(ii): “The test plan shared by auditing organization must include both calendar time and man-hours.” |
| Executive summary | A short account of what the audit found and what it means for the organisation, written for people who will not read the finding detail. It should translate technical findings into business risk, not repeat the severity counts in prose. | §16.2(i): the report should include an executive summary giving a concise overview of findings, associated risks and overall security posture, intended for board members or top management, translating technical findings into relevant business risks. |
| Findings | Each observation, with its severity, its location, how it was found, what it allows an attacker to do, and what to do about it. The body of the document — and the only section a tool can fill in volume without anybody testing anything, which is why length here proves less than length anywhere else. | §16.1(ii) requires findings and prioritization. §16.2(ii) requires CVSS with EPSS, and mapping of every reported observation to CWE and CVE. |
| Evidence | The proof behind each observation: request and response pairs, screenshots with the URL and timestamp visible, command output, decoded tokens, the specific parameter and payload. Enough for your engineer to reproduce the finding without asking the tester anything. | §18(iii): “All the observations made during the audit are well supported with objective evidences and all evidences are compiled carefully and correctly with the report.” §18(i) lets the auditee seek the working notes and evidence as an appendix to the final report. |
| Remediation guidance | What to change, where. Specific to your stack and your instance, not a paragraph about the vulnerability class in general. | §16.3(i) requires recommendations to be practical and implementable. §16.4 requires high-risk vulnerabilities to be reported immediately on discovery “along with a recommendation for a practical solution.” |
| Closure timelines by severity | How long you have to fix a critical, a high, a medium and a low — stated in the report rather than negotiated afterwards. The numbers come from your engagement, not from an instrument. What is mandatory is that the report carries them. | §16.3(iii) requires the report to state closure timelines by severity, and fixes no day count for any band. The 2018 auditor guidelines carry the same rule in the same open form: the report “should mention appropriate timelines for closure of vulnerabilities according to severity.” |
| Exemptions, limitations and constraints | What could not be tested and why. Systems that were unreachable, accounts that were never provisioned, a window that closed early, a WAF that was left in blocking mode. | §16.1(ii) requires exemptions, limitations and other constraints. §10.1(ii) requires in-scope assets that stayed inaccessible to be named in the report with reasons, and the matter brought to the notice of CERT-In. §13.2.4(ii) requires these to be communicated, not discovered. |
| Repeat observations | Findings carried forward from the previous cycle that are still open. It is the one section that cannot be written without the previous report actually having been revalidated, which is why a second-year report without it is telling you about the process rather than about the estate. | §15.2.1(iii): the auditing organisation must revalidate observations from the previous audit cycle, and any unresolved issues “should be recorded as repeat observations in the current audit cycle.” |
| Retest and closure | What was re-tested after you fixed it, what passed, what did not, and what remains open with your acceptance on the record. | §16.3(iv) requires follow-up audits after remediation to verify closure. §16.3(v): the final report issues after closure of vulnerabilities and completion of the follow-up audit on the production environment. |
| Signatures | Three of them, in a defined order. The auditors who did the work, an independent reviewer, and the head of the auditing organisation. | §9.5(iii), repeated at §10.3(ix) and §16.1(vi): signed by the auditors who conducted the audit, reviewed and signed by a designated reviewer who is not part of the audit team and is from mid-management, then authorised and signed by the head of the auditing organisation. |
Two rows deserve their own note. The repeat observations row is the fastest way to tell a real programme from an annual ritual: if last year’s findings do not appear anywhere in this year’s report, either they were all fixed — in which case the report should say so — or nobody went back to look. And the exemptions and limitations row is the only part of a report that gets shorter as the engagement gets worse, because a firm that did not test much has less it is willing to write down about what it did not test.
That is the checklist. It is deliberately not the order the document arrives in, which is the subject of the next section.
What is the VAPT report format? Front to back, as it is bound
CERT-In does not publish a page-by-page template, but it does prescribe contents, in two places. Clause 3.1.12 of the empanelment terms requires the audit report to be submitted to the auditee directly as per the format at Annexure II, and §16.1(ii) of the 2025 guidelines sets out a longer list of its own. A competent report assembles both, plus the requirements scattered through §§13, 15 and 18, in roughly the running order below. §16.1(i) is the clause that makes this worth settling in advance: the report format is to be mutually agreed and finalised before the audit commences, which makes the running order a procurement decision rather than something to discover on delivery.
| 01 | Cover pageAnnexure II item 1, §16.1(iv) | Auditee legal name and address, report title, the type of audit, the version — draft or final — the date of that version, and a classification marking. |
| 02 | Document control and version history§16.1(iv) | Every version issued, with its date. A final that is version 1.0 and carries no draft history is usually a report that was never commented on. |
| 03 | Distribution list§13.2.5 | The named recipients and their official email IDs, agreed before the report was sent. Its presence tells you the delivery was planned rather than improvised. |
| 04 | Executive summary§16.2(i) | A concise overview of findings, associated risks and overall posture, written for board members or top management and translating technical findings into business risk. |
| 05 | Scope and asset annexure§16.1(iii), §13.2.3(ii)(b)–(c), Annexure II item 3 (terms of reference) | Every in-scope asset named, the as-of date of the asset inventory the scope was drawn from, and version-specific detail for web and mobile applications. |
| 06 | Environment, build and hash§15.2.3(i)–(ii), §9.5(i), §16.1(v) | Test, Development, UAT, Pre-Production or Production, named. Application version and build. Hash value and hash algorithm. |
| 07 | Dates, plan and effort§16.1(ii), §13.2.2(ii), Annexure II items 2, 4 and 10 | The test window, the audit plan as delivered, calendar time and man-hours, and the personnel involved — including identification of any trainees. |
| 08 | Methodology, standards and tool list§16.1(ii), §8(ii), §13.2.2(iii), Annexure II items 3, 6 and 7 | The testing guide or framework at its version, the tools, the manual process alongside them, any additional standards or regulations applicable, and the sampling decisions. |
| 09 | Severity summary and rating basis§16.2(ii) | The counts by severity, and the basis: CVSS for severity with EPSS for exploitation likelihood, and the CWE and CVE mapping. |
| 10 | Detailed findings§16.1(ii), Annexure II items 7 and 8 | Each observation with location, reproduction, evidence, classification, severity, impact and remediation. Usually the longest section and rarely the most informative. |
| 11 | Exemptions, limitations, constraints and unknowns§16.1(ii), §10.1(ii), §13.2.4(ii), Annexure I item 20 | What could not be tested and why, in-scope assets that stayed inaccessible with reasons, and unknowns marked as unknowns rather than left out. |
| 12 | Repeat observations§15.2.1(iii) | Previous-cycle observations revalidated, with anything unresolved recorded as a repeat observation in this cycle. |
| 13 | Closure timelines, retest and follow-up§16.3(iii)–(v), Annexure II item 9 | Closure timelines by severity, what the follow-up audit covered, what closed and what did not, and the recommendations for action and follow-up audits. |
| 14 | Signature block§9.5(iii), §10.3(ix), §16.1(vi) | The auditors who conducted the audit, the independent mid-management reviewer, and the head of the auditing organisation. |
| 15 | Annexures§18(i), §18(iii) | The evidence appendix, the working notes where the contract provides for them, the full asset list and the tool record. |
The second of the two content lists is worth knowing in its own right, because reports predating the 2025 guidelines are still in circulation and still get handed to vendor-risk teams. Annexure II to CERT-In’s Terms and Conditions for Empanelment (version 7.2, April 2024) sets out an “Audit Report content format” of ten items: (1) identification of the auditee with address and contact information, (2) dates and locations of the audit, (3) terms of reference as agreed, including the standard for audit, (4) the audit plan, (5) explicit reference to key auditee documents by date or version, (6) any additional mandatory or voluntary standards or regulations applicable, (7) a summary of audit findings including identification tests, tools used and results, (8) analysis of vulnerabilities and issues of concern, (9) recommendations for action and follow-up audits, and (10) the personnel involved in the audit, including identification of any trainees. It is a shorter list than §16.1(ii), and the last item is the one people notice: if trainees worked on your engagement, the format expects them to be identified.
Put the two lists side by side and the gaps are informative in both directions. Annexure II asks for the audit plan and for explicit reference to your own policy and procedure documents by date or version, neither of which §16.1(ii) names. §16.1(ii) asks for sampling decisions, exemptions, limitations and constraints, and the manual process alongside the tools, none of which Annexure II names. A report that satisfies both is not doing twice the work. It is doing the work once and writing it down properly.
And here is the point of setting the running order out at all: it is very nearly the inverse of the order in which the document should be read. A report is bound outward from the findings — cover, summary, findings, then whatever qualifies them. It should be read inward towards them, scope first and limitations last. The read-through further down this page is that inverted order, step by step.
What should the scope section of a VAPT report say? It decides what the rest of it means
A scope statement is not a formality at the front of a report. It is the boundary of every claim the document makes. Read it against something external — your asset inventory, your architecture diagram, the list of systems in the contract you are being asked to sign — because a scope only looks complete when you read it on its own terms.
It should have come from an inventory, not from a conversation
§13.1.1(c) requires the scope to be derived from the consolidated and updated asset inventory, and §13.1.1(d) requires it to be vetted by the internal audit team in consultation with the CISO. §13.2.3(ii)(b) then requires the date to which that inventory was current to be reflected in the audit report. That date is quietly one of the most informative fields in the document: a scope drawn from an inventory last updated eighteen months ago has not omitted your new systems deliberately, but it has omitted them.
The default breadth is wider than most scopes turn out to be
§13.1.1(a) describes the scope as covering the entire cyber infrastructure, naming web and mobile applications, networks, operational technology and industrial control systems, cloud, APIs, databases and hosting infrastructure, code review, application security, data security and incident-response testing. §13.1.1(e) puts testing, UAT, development and production assets inside it “to achieve complete audit coverage”, and §13.1.1(f) puts third-party, vendor and supply-chain risk assessment in scope too. A narrow scope is a decision someone made. The report should say who made it and why.
Every in-scope asset has to appear in the report
§16.1(iii) is one sentence long and does a great deal of work: all the assets provided in the scope by the auditee organisation must be mentioned in the report. It closes the gap where an asset is scoped, never reached, and simply never mentioned again. §10.1(ii) closes the other half: where an in-scope asset stayed inaccessible, the auditor must inform the auditee, request resolution, and if it is still unresolved, name the asset in the report with the reason — and bring the matter to the notice of CERT-In.
Versions belong in the scope, not only in the findings
§13.2.3(ii)(c): version-specific details of web and mobile applications must be explicitly mentioned in the audit scope and the report. This is what stops a report from silently covering a build that no longer exists. Paired with §9.5(i) — hash values, versions and timestamps captured by the auditee, shared with the auditor, and prominently featured in the certificate and reports — it is the mechanism by which a reader six months later can tell whether the document still applies.
Where the scope changed mid-engagement, there should be paperwork
§14 is titled “Agreeing on the Terms of Engagement and Revisions to the Scope”, and §14.1(ii) requires the agreed terms to be documented in an audit engagement letter signed by authorised representatives of both organisations. §14.2 requires revisions to be in writing with justification, assessed for their impact on timelines, resources and deliverables, approved by both sides, and documented as an addendum or formal amendment. §14.3 names the three things that legitimately trigger a revision: discovery of previously unidentified systems or processes presenting significant risk, changes in organisational structure, ownership or regulatory environment, and security incidents or breaches occurring during the audit period. A scope that shrank quietly is a scope nobody wrote down.
One more thing to look for, and it is specific to applications hosted on somebody else’s infrastructure. §13.1.5 splits the responsibility: where a website runs on a web server owned by another organisation, auditing that server, its operating system, the hosting application software and the backend database software is the responsibility of the organisation that owns and operates the server, while the content owner remains responsible for having the website data and software audited. Two audits, two owners, one go-live date. If your report covers only the application and nobody has the other report, the scope has a hole in it that neither document will admit to. Scoping this properly before testing starts is a subject of its own — see VAPT scoping.
What methodology should a VAPT use? And whether the effort adds up
§16.1(ii) requires the methodologies and standards used, the tools, and the manual process — three separate things, in one sentence. Most methodology sections give you the middle one and hope. Here is what each is supposed to tell you.
“The limited lists such as OWASP Top 10, SANS Top 25 and similar, should not be considered as standards or references for audits.”
That is the most quotable sentence in the whole instrument. The OWASP Top 10 is an awareness document listing ten categories of risk. It is not a test plan and it does not tell a tester what to do. The OWASP Web Security Testing Guide, by contrast, is a testing methodology with numbered checks, and the Application Security Verification Standard is a set of verifiable requirements arranged in three levels. Name the version when you cite it, because the levels were reorganised at the last major release: in the current stable version, ASVS 5.0.0, Level 1 is described as the minimum set and around twenty per cent of the requirements, and the standard says in terms that it “is not necessarily penetration testable by an external tester without internal access to documentation or code”. Level 2 is the level “most applications should be striving to achieve”. Level 3 is for applications demonstrating the highest level of security. ASVS does not pick your level for you, so a scope of work should name the ASVS version and the level, and the report should say which it verified against.
The tooling question is answered the same way. §8(i) says solely tools-based testing should be discouraged, and gives the reason in the same breath: tool-based audits may focus primarily on automated processes and may overlook non-automated or manual components of the IT infrastructure, which “can result in an incomplete view of the overall security”. The 2018 auditor guidelines put it more bluntly still — auditors must use industry standard methodologies and best practices, and “solely tools based testing should be discouraged”. Tools belong in a VAPT report. Tools as the methodology do not.
Effort, stated
§13.2.2(ii) requires the test plan to include both calendar time and man-hours, and §16.1(ii) requires the duration of the audit and the manpower involved to appear in the report. Put those against the size of the estate. Forty external hosts, two web applications with authenticated roles, a mobile app and an API, tested in three man-days, is not a judgement about the firm — it is arithmetic.
Sampling, declared
§16.1(ii) names sampling decisions among the things the report must contain. Where forty servers were built from one image and six were tested, that is a legitimate decision and it belongs on the page. Undeclared sampling reads as full coverage, which is how a report comes to say more than the testing supports.
Tools, understood
§13.2.2(iv) requires the auditing organisation to have a thorough understanding of the tools it uses, including their origin and functionality, to test them in a controlled test environment before deploying them on your systems, and to have the results of that testing formally reviewed and approved by an authorised representative of the auditee. §13.2.2(iii) requires a tool list with written confirmation of intellectual property and licensing. Annexure I item 12 to the empanelment terms (version 7.2, April 2024) carries the same expectation in shorter form: auditors know their tools, where they came from and how they work, and test them in a restricted test area before use on the customer organisation.
Reviewed by someone else
§15.2.5(iii) requires a maker-checker arrangement: a separate verification team reviews and validates the work of the audit team. The 2018 guidelines put it as deploying a verification team — a Red Team — to verify the work performed by the audit team, the White Team. The signature block is where this shows up: §16.1(vi) requires the reviewer to be someone who was not part of the audit team.
One clause is worth raising with a supplier before an engagement rather than after. §8(viii) states that an application developed without any secure design and development practices should not be considered for assessment and audit, and that the auditee organisation should be informed in writing with a copy marked to CERT-In. CERT-In publishes its own application security guidelines and the Cyber Security Audit Baseline Requirements sits on the same site, named at §8(iii) as a document both sides should use to build the audit programme. If the methodology section of a report you are reading names neither a testing guide nor a baseline, there was no programme — there was a scan.
The same defect, written two ways
Both entries below describe one real class of flaw — a user able to read another user’s record by changing an identifier in the request. Both would appear in a severity chart as one High. One of them can be fixed by an engineer who has never spoken to the tester. The other cannot be fixed at all. This comparison is TCSA’s illustration, not a CERT-In template, but the clauses cited beside it are the instrument’s own.
What a thin finding looks like
Title
Insecure Direct Object Reference
Severity
High
Affected
The application
Description
The application was found to be vulnerable to insecure direct object references, which may allow an attacker to access unauthorised data.
Evidence
Screenshot of the tool panel showing the alert. Available on request.
Recommendation
Implement proper access control and follow the principle of least privilege.
Why it fails. No location, so nobody can find it. No reproduction, so nobody can confirm it. No CWE, so it cannot be counted with anything. No CVSS vector, so the severity cannot be argued with. No evidence in the document, which is what §18(iii) requires. A recommendation that was written before the engagement started, which is what §16.3(i) is aimed at. An engineer receiving this has to run the test again themselves before they can begin.
What a complete finding looks like
Title
Authorisation bypass on the invoice retrieval endpoint allows cross-tenant record access
Classification
CWE-639, Authorization Bypass Through User-Controlled Key. No CVE — defect in first-party code, so no EPSS score exists for it.
Severity
High, with the full CVSS vector string printed beside it so the rating can be recomputed, and the environmental metrics stated as left at default.
Affected
One named endpoint on one named host, in the UAT environment, at the build and hash recorded in the scope section. Two other endpoints tested and not affected, named.
Reproduction
Numbered steps: authenticate as the low-privilege test account supplied by the auditee, capture the request, substitute the identifier belonging to the second test account, replay. Expected result and actual result both stated.
Evidence
The request and the response, in full, with the session token redacted and the timestamp visible. A screenshot showing the second account’s record rendered to the first account. The test account identifiers used.
Impact
Stated in terms of the business: any authenticated customer can enumerate and read the invoices of any other customer, including counterparty names and amounts.
Remediation
Enforce the ownership check server-side in the retrieval handler rather than in the view layer. The same pattern appears in two other handlers, both named, which should be corrected together.
Closure timeline
Stated against the report’s severity-wise schedule, with the retest requirement named.
Why it works. It is reproducible, locatable, countable and arguable. It also does something the thin version cannot: it names two endpoints that were tested and were not affected, which is the “all states of security found” expectation at Annexure I item 21 of the empanelment terms, and it says plainly that no CVE and no EPSS score exist for a first-party defect rather than leaving the fields blank.
The difference between the two columns is not effort in writing. It is whether the test happened. A tester who actually performed the sequence has the request, the response and the account identifiers sitting in their working notes already, so writing the right-hand column is transcription. A tester who did not cannot produce it at any length. That is why §18(iii) is the most load-bearing clause in the reporting chapter, and why §18(i) — which lets the auditee seek the working notes, with a provision for it in the contract, and the evidence as an appendix to the final report — is the request that settles most arguments about report quality in a single email.
CVSS, EPSS, CWE and CVE — what does each one tell you? Four artefacts, four questions
§16.2(ii) of the audit policy guidelines names all four and puts two of them together: CVSS for severity alongside EPSS for real-world exploitation likelihood, and “Every reported observation / vulnerability shall be mapped with Common Weakness Enumeration (CWE) and Common Vulnerabilities and Exposures (CVE) number.” They are not four ways of saying the same thing. They answer four separate questions, and a report that supplies one of them has answered a quarter of what you need. CERT-In defines all four in its own §5 — CVE at (xviii), CWE at (xix), CVSS and EPSS together at (xxiv) — and the bodies that maintain them publish the authoritative text: FIRST for CVSS, FIRST for EPSS and MITRE for CWE.
| Artefact | What it is | The question it answers | What it does not answer |
|---|---|---|---|
| CVSS | The Common Vulnerability Scoring System, maintained by FIRST. An open framework for communicating the characteristics and severity of a software vulnerability, expressed as a vector string and a score from 0 to 10. | How severe this weakness is in the abstract: how it is reached, what it takes to exploit, and what a successful exploit does to the vulnerable system and to systems downstream of it. | It is scoped to the weakness, not to the deployment. FIRST labels a base-only score CVSS-B, and reserves CVSS-BE and CVSS-BTE for scores that carry Environmental and Threat values — so a report printing a bare number is, in the specification’s own nomenclature, reporting a quarter of the instrument. |
| EPSS | The Exploit Prediction Scoring System, also from FIRST: a data-driven machine-learning model that estimates the probability a published CVE will be exploited in the wild in the next 30 days, published daily as a 0–1 probability with a ranking percentile. | How likely this is to be used against anyone at all in the near term. It is the difference between a vulnerability that is theoretically grave and one that is being exploited this month. | It is defined for published CVEs. A flaw in your own code — broken authorisation in one of your endpoints, a tenant-isolation failure — has no CVE and therefore no EPSS score, and the absence of a number there is not evidence that nothing is happening. |
| CWE | The Common Weakness Enumeration, from MITRE: a community-developed list of common software and hardware weaknesses, where a weakness is a condition in a component that, under certain circumstances, could contribute to the introduction of vulnerabilities. | What kind of mistake this is. It is the field that lets you count across a report and across years — six findings that are all CWE-89 is a story about how the code is written, not six unrelated bugs. | It does not carry severity and it does not carry likelihood. A weakness class is a diagnosis, not a priority. |
| CVE | Common Vulnerabilities and Exposures. §5(xviii) of the audit policy guidelines defines it as a publicly disclosed, standardised list of unique identifiers assigned to known cyber security vulnerabilities, each entry carrying a distinct identifier, a brief description and references — a common language for tracking vulnerabilities across platforms and organisations. | Whether this is a known issue with a known fix. If a CVE is present, the remediation is usually a version number rather than a design conversation. | It does not reach your own code. CVE identifiers are assigned to disclosed vulnerabilities in released products, so a defect written by your own developers has no CVE by definition — and therefore no EPSS score. A report in which every finding carries a CVE is a report about third-party components. |
Read together they produce the four combinations that actually drive a remediation queue. High CVSS with high EPSS is the emergency. High CVSS with low EPSS is the thing to schedule properly rather than panic about. Low CVSS with high EPSS is the one teams under-react to, because a modest weakness that is being exploited at scale this month is a live problem. And no CVE at all — the whole category of defects in your own code — is where a penetration test earns its fee, and where neither EPSS nor a public advisory will help you prioritise. There, the ordering comes from what the finding reaches and who can reach it.
How to read an EPSS value in a report
A probability is not a percentile. FIRST publishes two numbers per CVE and reports routinely print one while captioning it as the other. The probability is absolute: it is the estimated chance that exploitation activity will be observed in the next thirty days, so 0.05 means five in a hundred. The percentile is relative: a CVE at the 90th percentile scores higher than ninety per cent of everything currently scored. Because the distribution is heavily skewed towards zero, the two look nothing alike — FIRST’s own EPSS FAQ notes that a probability of 0.10 currently sits around the 95th percentile. A finding dismissed in a meeting because “it is only five per cent” may be in the top decile of everything published.
And a printed EPSS value has a shelf life of one day. Scores are recomputed and republished every day, for every scored vulnerability. An EPSS figure in a report is therefore a snapshot, and a snapshot with no retrieval date beside it is a number that has already changed. Ask for the pull date the same way you ask for the test window — and when you sit down to plan remediation, re-pull rather than read. That is a two-minute job against a free daily feed, and it is the cheapest thing on this page that reorders a queue.
Do not let it become the whole rating. FIRST is explicit that EPSS is not a complete risk score: it does not measure the damage successful exploitation would cause, does not know what you run, and does not account for compensating controls. It also defines no bands — there is no EPSS “critical” and no official threshold, and FIRST says so, noting that the 0.10 figure commonly cited in the field carries no authority from EPSS. A report that prints EPSS severity labels has invented them.
Is a CVSS score a risk rating? The number is about the weakness
A severity column invites the reader to treat it as a priority list. The specification that defines CVSS says plainly that it is not one. It is worth quoting, because the argument usually ends the moment someone reads it out.
“The Base Score reflects the severity of a vulnerability according to its intrinsic characteristics which are constant over time and assumes the reasonable worst-case impact across different deployed environments. … Consumers of CVSS should enrich the Base metrics with Threat and Environmental metric values specific to their use of the vulnerable system to produce a score that provides a more comprehensive input to risk assessment specific to their organization.”
CVSS v4.0 has four metric groups. Base holds the intrinsic characteristics of the vulnerability, constant over time and across environments. Threat reflects what changes over time, such as the availability of proof-of-concept code or evidence of active exploitation. Environmental refines the score for one specific computing environment, taking account of mitigations present there and the criticality of the vulnerable system. Supplemental metrics add context without changing the score. The specification also notes who holds what: base metrics come from the organisation maintaining the vulnerable system or a third-party assessment on its behalf, while “Threat and Environmental information is available to only the end consumer”.
Which CVSS version is your report using, and does it matter?
The vector answers it in one glance, because the version is the prefix: a string beginning CVSS:3.1/ is version 3.1 and one beginning CVSS:4.0/ is version 4.0. §16.2(ii) requires CVSS and does not pin a version, so both are compliant and both are in circulation — which makes it the report’s job to say which it used.
What changed between them is more than cosmetic. Version 3.1 has three metric groups — Base, Temporal and Environmental — and its base group carries Attack Vector, Attack Complexity, Privileges Required, User Interaction, Scope, and single Confidentiality, Integrity and Availability impacts. Version 4.0 has four groups, drops Scope, and splits impact in two: Vulnerable System Confidentiality, Integrity and Availability (VC, VI, VA) and Subsequent System Confidentiality, Integrity and Availability (SC, SI, SA). It adds Attack Requirements (AT) to the base group. And the Temporal group becomes the Threat group with a single metric, Exploit Maturity (E), where 3.1 had three — Exploit Code Maturity, Remediation Level and Report Confidence.
The consequence for reading a report series is the part worth carrying away. The two scales are not interchangeable: FIRST’s own worked examples routinely score the same vulnerability differently under the two versions, in both directions. So a year-on-year severity comparison across a version change is not a comparison, and neither is a chart that stacks last cycle’s counts beside this cycle’s when the auditor moved from 3.1 to 4.0 in between. If your report series crosses a version boundary, ask for the vectors rather than the scores and say so in the engagement letter for next time — the vectors are stable, the numbers are not comparable, and this is precisely the trap that makes the repeat observations required by §15.2.1(iii) worth more than the severity trend.
How do I re-rate a VAPT finding for my own environment?
Start from the specification’s line about who holds what, because it is the operative one for anyone reading a VAPT report. Your auditor cannot complete the rating. They do not know, and are not expected to know, that the affected service sits behind mutual TLS on an internal segment, or that it is the only system holding data you are regulated on, or that a compensating control went live last week. The base score is where the auditor’s work reasonably stops, and the environmental metrics are where yours begins. A report that hands you a vector string has handed you something you can finish. A report that hands you only the word “High” has not.
Worked re-rating — TCSA’s illustration, FIRST’s arithmetic
Finding 4 of a specimen report: an authorisation defect that lets any authenticated user read another tenant’s records on one named service. The auditor prints this vector beside it.
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
Eleven base metrics, each of which is a claim you can agree or disagree with:
AV:NAttack Vector, Network. The vulnerable service is bound to the network stack and reachable across it.AC:LAttack Complexity, Low. No measurable evasion or preparation is required.AT:NAttack Requirements, None. Success does not depend on the deployment or execution conditions of the target.PR:LPrivileges Required, Low. The attacker needs an ordinary authenticated account — one of your customers, in other words.UI:NUser Interaction, None. No second person has to be induced to do anything.VC:HVulnerable System Confidentiality, High. Total loss of confidentiality on the affected service.VI:N / VA:NNothing is written and nothing is taken down. A read, not a write.SC:N / SI:N / SA:NNo impact on any subsequent system beyond the vulnerable one.
Put that vector into FIRST’s CVSS v4.0 calculator and it returns 7.1, High. In the specification’s nomenclature that is a CVSS-B score: base metrics only, nothing about your environment in it yet.
Now add what only you know
The affected service is not internet-facing. It answers only on a private segment, behind mutual TLS, from a fixed set of internal callers. That is a Modified Attack Vector of Adjacent, not Network. One override:
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/MAV:A
6.9, Medium. The finding has left the High band on the strength of one fact the auditor could not have supplied. Add a second: the records that particular service holds are internal reference data whose loss would have a serious but not catastrophic effect, so the Confidentiality Requirement is Medium rather than the default.
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/MAV:A/CR:M
5.5, Medium — and now a CVSS-BE score, which is what it should be labelled when you write it down beside the auditor’s 7.1. Keep both. The auditor’s number is part of the report, and yours is the basis on which you will schedule the work.
Two things this exercise teaches that no severity column can
The order changes. Finding 7 in the same report is an unauthenticated information disclosure on the public portal — CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N, which the calculator scores 6.9, Medium. On the auditor’s page, finding 4 outranks finding 7 by two tenths. On your remediation queue, once the environment is in, finding 7 outranks finding 4 by more than a point — because nothing about finding 7 improves when you look at where it actually sits, and it is the one an anonymous stranger can reach.
It can go up as easily as down. The Security Requirements only move one way: Confidentiality, Integrity and Availability Requirement all default to Not Defined, which the specification says has the same effect as High, so declaring CR:H because you are regulated changes nothing. The metric exists to let you say an asset matters less. What moves a score up is a modified base metric the auditor got wrong for your deployment — if registration on that service turns out to be self-service, so the “ordinary authenticated account” is free to anyone with an email address, then MPR:N applies and the same finding scores 8.7. Re-rating is not a polite way of arguing severity down.
What CVSS deliberately leaves out
The specification is explicit that consumers may use CVSS as an input to a vulnerability management process that also considers factors which are not part of CVSS — naming, among others, regulatory requirements, the number of customers impacted, monetary losses due to a breach, life or property threatened, and reputational impact — and states that these factors are outside the scope of CVSS. So the honest reading of a severity column is narrow: it ranks weaknesses, not consequences. The consequences are yours to add, and in most Indian engagements at least one of them is regulatory: a finding that touches personal data sits next to the obligations of a data fiduciary, and a finding that evidences a live compromise sits next to the six-hour reporting duty under the CERT-In Directions of 28 April 2022.
One practical consequence for how you record all this. When you re-rate a finding for your own environment, keep both numbers. The auditor’s rating is part of the report and should not be quietly overwritten. Your rating is the basis on which you will schedule the work. Where the two differ and you intend to act on yours, that is a risk-treatment decision, and §9.2 requires risk treatment — retain, avoid, transfer or reduce — to be authorised and accepted by the head of the auditee organisation, with exceptions authorised by the head of the organisation who owns the application. A spreadsheet where severities were softened by whoever owned the ticket is not risk treatment. It is erosion.
How long do we have to fix VAPT findings? The report states the clock
One of the quieter requirements, and one of the most useful. §16.3(iii) requires the report to state closure timelines according to severity. The 2018 auditor guidelines said the same thing seven years earlier: the audit report “should mention appropriate timelines for closure of vulnerabilities according to severity”. It belongs in the document because it is the auditor’s professional judgement about urgency — which is precisely the judgement that gets negotiated away if it arrives as an email after delivery.
One thing §16.3(iii) does not do, and it matters: it fixes no number of days for any band. Stating the timelines is mandatory, but choosing them is the engagement’s, which is why the bands belong in the audit engagement letter §14.1(ii) requires both organisations to sign before they belong in the report. Any page that tells you a critical must be closed in exactly seven days because CERT-In says so is inventing a rule. What the instruments do fix is notification timing — §16.3(ii) and §16.4 below, and the six-hour duty under the 2022 Directions where a test surfaces a live compromise. Where the bands come from, and how closure is evidenced against them, is the subject of VAPT retesting and closure.
- 01 Critical and high findings should have reached you before the report did §16.3(ii) requires critical and high-severity findings to be notified to the auditee during the course of the audit on an as-and-when-found basis, as well as appearing in the final outcome report. §16.4 goes further for high-risk vulnerabilities — those such as discovered breaches, vulnerabilities with known high exploitation rates, unmonitored or untraceable access, or those posing an immediate risk to life — which must be reported to the auditee immediately upon discovery along with a recommendation for a practical solution. If the first you heard of a critical was when the PDF arrived, that is a process failure independent of the finding itself.
- 02 A discovered breach changes the character of the engagement §15.2.2(i) requires high-risk vulnerabilities such as discovered breaches to be assessed and reported immediately to the auditee organisation and to CERT-In. That is the auditor’s duty and it does not displace yours: if a test surfaces evidence that you are already compromised, the six-hour clock under the Directions of 28 April 2022 runs from your noticing, against the twenty incident types in Annexure I to those Directions. The CERT-In FAQ of May 2022 is blunt that the reporting obligation is “neither transferrable nor indemnified or dispense with”.
- 03 Fixing is yours and verifying is the auditor’s §9.3(iii) states that patching and correction of vulnerabilities is the responsibility of the auditee organisation, and §9.1(ii) that the responsibility for maintaining a robust cyber security posture ultimately rests with the auditee, not the auditor. §9.3(iv) and §16.3(iv) then require follow-up audits — which must be included within the scope or the RFP in the first place — to be conducted after closure, to verify it. An engagement priced without the retest has a hole in it that appears three weeks later.
- 04 The final report comes after closure, not after testing §16.3(v): “The Final audit report should be issued after the closure of vulnerabilities & completion of follow-up audit of the application hosted on production environment. If the audit scope is limited to the staging platform, the report must explicitly state that the audit was not conducted on production environment.” A document marked Final with every finding open is a draft that has been mislabelled, and a certificate issued against it is worse.
- 05 What is still open next year must say so §15.2.1(iii) requires the auditing organisation to revalidate observations from the previous audit cycle and to record anything unresolved as a repeat observation in the current cycle. This is the clause that makes a report series worth reading as a series — and the one that makes a two-year-old accepted risk visible to whoever inherits it.
There is one further duty that runs from your report to CERT-In, and it is a duty many auditees first meet when they read the empanelment terms. Clause 3.2.2 of the Terms and Conditions for Empanelment makes it mandatory for an empanelled auditor to share the audit report and audit metadata with CERT-In within five days of completion of the audit, and separately to report the critical vulnerabilities, with auditee details, that were identified during the audit but not fixed even during follow-up audits. §10.6 of the 2025 guidelines repeats the five-day duty, and §13.2.1(iii) requires the auditor to tell you about it before the assignment starts. Reading a report with that in mind changes the stakes of an open critical: it is not only unfixed, it is named. The mechanics of that pipeline are covered on the rules of engagement for a CERT-In empanelled auditor.
What is a false positive in a VAPT report? Four ways wrong, one that leaves no trace
“False positive” gets used for four different problems, and treating them the same way is how a remediation programme loses credibility in both directions — real findings dismissed as noise, and noise argued about for a fortnight. Separate them, then dispose of each on its own terms. The mechanism for all of it is §18(v): the auditee may request clarifications on the audit report and the auditor responds within a mutually agreed timeframe.
| Kind | What it looks like | How to test it | How to dispose of it |
|---|---|---|---|
| False positive | The tool matched a signature, a version banner or a response pattern, and nobody checked. Classic examples: a library version reported from a header that was never the version in use, a “vulnerable” endpoint behind an authorisation check the scanner never passed, a TLS finding against a load balancer that terminates elsewhere. | Ask for the reproduction path and run it yourself. A real finding survives being reproduced by your engineer on your system. If the evidence is a scanner panel rather than a request and a response, you are looking at an unverified match. | Ask the auditor to withdraw it in writing, with a sentence explaining why the original observation did not hold. §18(v) gives you the mechanism: the auditee may request clarifications and the auditor responds within a mutually agreed timeframe. A withdrawn finding should disappear from the counts, not linger as “closed”. |
| Correct, but not yours | A finding against infrastructure your hosting provider owns, a managed database service, a CDN edge configuration, or a component of a SaaS platform you consume. Real, reproducible, and outside your ability to fix. | Check who operates the component. §13.1.5 draws the line for hosted infrastructure: where a website sits on a web server owned by another organisation, responsibility for auditing that server, its operating system, the hosting software and the backend database software lies with the organisation that owns and operates the server. | Keep it in the report, re-owned. It becomes a supplier action with a supplier ticket, not a closed finding. §13.1.1(f) puts third-party, vendor and supply-chain risk inside the scope for exactly this reason. |
| Duplicated across hosts | One misconfiguration counted forty times because forty servers share an image. The severity chart is dominated by it and the real findings sit underneath. | Sort the findings by CWE and by remediation action. If forty entries collapse into one change to one base image, they are one finding with forty instances. | Ask for it to be presented as one finding with an affected-asset list. The count is not the point. The remediation action is. Mapping every observation to a CWE, as §16.2(ii) requires, is what makes this collapse visible in the first place. |
| Right finding, wrong severity | A CVSS base score copied from a public advisory and used as the rating, with no Environmental metrics and no regard for whether the affected system is internet-facing, holds regulated data, or sits behind three controls that make exploitation impractical. It cuts both ways — over-rated internet noise and under-rated internal exposure. | Ask for the vector string. If there is no vector, there is no rating to discuss. If there is one, read the Environmental metrics: if they are all at default, the number in front of you is the abstract severity and not your risk. | Re-rate it jointly and record both numbers — the auditor’s and yours — with the reason for the difference. Do not quietly overwrite the auditor’s rating. That is what an exception register is for, and §9.2 requires risk-treatment decisions and exceptions to be authorised and accepted by the head of the auditee organisation. |
| The finding that is not there | Nothing. A false negative leaves no trace in the document — which is why the limitations section, the inaccessible-asset list and the unknowns are the only places it can show up at all. | Read the coverage rather than the findings. Were authenticated roles tested, or only the anonymous surface? Was the mobile app tested, or only its API? Was the admin console in scope? Was any business-logic testing done, or only injection and configuration checks? | Treat coverage gaps as findings of their own in your own register. Annexure I item 21 to the empanelment terms expects reports to state all states of security found, not only the failed measures — so a report that says what was examined and held up is doing more work than one that lists only failures. |
A note on how many false positives is too many. There is no published figure and it would be meaningless if there were, because it depends entirely on the estate. What is diagnostic is where they cluster. A handful scattered across a long report is ordinary professional disagreement. A cluster of them in one class — every TLS finding, every version-banner finding — means one tool ran unattended against one part of the scope, and that part of the report was never verified by a person. That is the §8(i) problem, surfacing as a dispute about individual findings rather than as an admission about method.
The report is expected to say what it does not know
This is the single best-kept requirement in the whole set, and it is one sentence long. Annexure I to CERT-In’s Terms and Conditions for Empanelment is headed “Expectations of an Auditee organisation from an Auditor” and runs to twenty-four numbered items — a list written from your side of the table.
“Reports include all unknowns clearly marked as unknowns.”
Item 21 is its twin: reports state all states of security found, not only the failed measures. Item 22 requires metrics based on industry-accepted methods and on a mathematical formula “and not on feelings of the auditor”. Item 19 requires the auditor to notify you whenever the audit plan changes, the source test venue changes, high-risk findings appear, or before running new, high-risk or high-traffic tests — and to provide progress updates at reasonable intervals. Item 23 requires the auditee to be told the report is on its way and to confirm receipt. The 2025 guidelines restate the notification duty almost word for word at §13.2.7(iii).
An unknown is not a failure of the engagement. It is a fact about the engagement, and there are always some: a system that was unreachable for two of the five days, a third-party component whose behaviour could be observed but not inspected, a test that stayed passive because §15.2.2(iv) says that in critical environments where availability is the top priority, testing should be conducted in a passive manner, and a control the developer described and nobody could exercise. The problem is never that unknowns exist. The problem is a report that reads as if they do not.
The 2025 guidelines carry the same principle in three other places, which is a good sign that it is meant. §16.1(ii) requires exemptions, limitations and other constraints in the report. §13.2.4(ii) requires the auditor to communicate any exemptions, limitations and constraints to the auditee — a duty distinct from §13.2.4(i), which is the expectation-gap clause requiring the audit process, required artefacts and expected deliverables to be explained at the outset. And §18(vi) applies the same rule to forensic work: where a digital forensic investigation faces constraints because evidence or logs are unavailable or inadequate, the report should explicitly bring that out and recommend the log detail that should be captured.
Four unknowns to look for by name
- In-scope assets that were never reachable. §10.1(ii) requires them named, with reasons — and the matter brought to CERT-In’s notice where it stayed unresolved.
- Roles that were never provisioned. If the report tested an anonymous user and an administrator but the application has four roles, the two in the middle are an unknown, not a clean result.
- Controls accepted on description rather than on test. Common for anything that would have needed a production change to exercise. Legitimate, and it should be labelled.
- Anything deferred because availability mattered more than coverage. §15.2.2(iv) says testing should be conducted in a passive manner in critical environments where availability is the top priority. Where that call was made, the report should record it and what it cost in coverage.
How do I know if a VAPT report is any good? Thirteen tells, readable from the document
None of these requires access to the testing, the testers or the tooling. Each is visible in the report you are holding, each breaches something an instrument says, and each has a question that resolves it. They are not of equal weight, which is what the last two columns are for: some cost engineering time, some cost a second procurement, and one costs a fresh audit outright, because build identity cannot be added to testing that has already happened. Read the cost column before deciding how hard to push.
| The tell | What you are actually looking at | What it breaches | What it costs you | When you find out | What to ask |
|---|---|---|---|---|---|
| Findings are tool output, pasted | Plugin identifiers and vendor boilerplate in the description field. Every finding phrased identically. Ports and banners raised as findings. A dozen entries that are really one misconfiguration seen from twelve hosts. Nothing that required a human to notice it. | §8(i): “Solely tools-based testing should be discouraged as tool-based audits may focus primarily on automated processes and may overlook non-automated or manual components of the IT infrastructure. This limitation can result in an incomplete view of the overall security.” §16.1(ii) requires the manual process to be reported alongside the tools. | Engineering time. Your developers re-derive, finding by finding, what a tester would have written down once — and the authorisation and business-logic defects a scanner cannot produce are still in the product. | At the first sprint that tries to fix something, when nobody can locate the defect. | Which findings came from manual testing? Show me one that no scanner could have produced. |
| The methodology is a list of ten things | A methodology section that says “OWASP Top 10” and stops. Sometimes “OWASP Top 10 and SANS Top 25”. The report is then structured as ten headings with findings sorted into them. | §8(ii) is unusually direct: “The limited lists such as OWASP Top 10, SANS Top 25 and similar, should not be considered as standards or references for audits.” The same clause names what does count, including the OWASP Web Security Testing Guide, OWASP ASVS, OWASP MSTG, OSSTMM3, the CSA Cloud Controls Matrix and the Cyber Security Audit Baseline Requirements. | A coverage argument you cannot make. When a customer or a reviewing authority asks what was tested, the honest answer is “ten categories of risk”, which is not an answer. | At a customer’s vendor-risk review, or at the next tender that asks for the standard by name. | Which testing guide did you work through, at which version, and which of its checks did you not run? |
| No evidence, or evidence that proves nothing | A screenshot of a scanner dashboard instead of a screenshot of your application. An image with the URL bar cropped out. “Evidence available on request.” A high-severity finding with one line of description and no reproduction path. | §18(iii) requires all observations to be well supported with objective evidence, compiled carefully and correctly with the report, and presented so that decision makers can use them in credible risk-based decisions. §18(i) lets you seek the working notes and evidence as an appendix. | Every finding becomes arguable and none of it becomes closable. Retest evidence has nothing to be compared against, so closure is asserted rather than shown. | At retest, and again at the next audit cycle when the same observation reappears. | Send the evidence appendix and the working notes. For finding 4, send the request and the response. |
| Remediation text that could have been written before the test | “Implement input validation.” “Apply the latest vendor patch.” “Follow the principle of least privilege.” Correct, generic, and identical to the text under the same finding in every other report that firm has issued. | §16.3(i) requires recommendations to be practical and implementable, and §16.4 requires a recommended practical solution to accompany a high-risk finding. Generic advice fails both, because it is not implementable by anyone who did not already know the answer. | Engineering time again, spent reconstructing the tester’s reasoning. The fix that ships is the one the developer guessed at, which is how a finding gets closed without being fixed. | At the retest, when the fix does not hold. | Which file, which parameter, which configuration key? What would you change first if this were your system? |
| A scope that quietly excludes the interesting systems | The scope names the marketing site and the public API, and says nothing about the admin console, the partner portal, the payment callback, the internal network or the mobile app. Nothing is misstated. The exclusions are invisible because they are absences. | §13.1.1(a) puts the entire cyber infrastructure in scope — web and mobile applications, APIs, network, OT and ICS, cloud, databases, hosting infrastructure, code review and incident-response testing — and §13.1.1(c) requires the scope to be derived from the consolidated and updated asset inventory. §16.1(iii) requires every asset given in scope to be named in the report. | A second engagement and a second procurement for the systems that were left out, and a committed date that moves with them. | At the hosting gate or the customer review — whoever reads the asset list against reality first. | Put the asset inventory next to the scope and mark every asset that was not tested, with the reason. |
| The environment is not stated, or staging is presented as production | No environment section at all. A test URL of localhost, or an internal IP, with a conclusion written about the live service. A certificate that names a production hostname while the testing URL in the report names something else. | §15.2.3(i) requires the environment — Test, Development, UAT, Pre-Production, Production — to be specified. §15.2.3(ii) requires testing on the staging or testing environment provided by the hosting service provider before the audit certificate is issued, with hash values and version numbers obtained from the auditee and included in the report. §16.3(v) requires an explicit statement where the scope was limited to staging. | A conclusion that is true about a system nobody is running. On a go-live path it is the defect an evaluator finds rather than you. | At the hosting gate, or at the first production incident that staging never reproduced. | Which environment was tested, and is the build identical to what is in production today? |
| No version, build or hash | An application name and nothing else. Or a hash value with no algorithm named, so nobody can recompute it. | §9.5(i) and §16.1(v) require hash values, versions and timestamps to be prominently featured in the certificate and the reports. §9.5(i) also asks the developer to avoid code changes after the certificate is issued — which is only enforceable if the report says what was tested. | A fresh audit. Build identity cannot be retrofitted onto testing that has already happened, so there is no way to prove afterwards what was examined. | The first time somebody asks whether the certificate still describes what is deployed. | Give me the hash, the algorithm and the artefact it was computed over. |
| Unknowns are not marked as unknowns | A report that reads as if everything was examined. No account of what could not be reached, what was inconclusive, what was accepted from the developer without verification, or where testing was passive because availability mattered more. | Annexure I to the empanelment terms sets out what an auditee is entitled to expect from an auditor. Item 20: “Reports include all unknowns clearly marked as unknowns.” Item 21 adds that reports state all states of security found, not only the failed measures. | False assurance, which is the most expensive product on this list because nothing about it looks wrong. Untested roles and unreachable systems are recorded as clean. | At the incident, in the part of the estate the report never reached. | What did you not manage to test, and what did you take on trust? |
| No closure timelines by severity | Severities assigned, and nothing said about how quickly each must be fixed. The timeline arrives later, in an email, usually as whatever the auditee proposes. | §16.3(iii) requires the report to state closure timelines according to severity. The 2018 auditor guidelines say the same. It belongs in the document because it is the auditor’s judgement, not the auditee’s preference. | The urgency judgement passes from the auditor to whoever has the least capacity to act on it, and remediation slips to whatever the delivery backlog allows. | Immediately, and quietly — it shows up as a critical still open in month four. | Add the severity-wise closure timelines to the report before it is finalised. |
| Severity with no vector, no likelihood and no mapping | A column headed High, Medium, Low, with no CVSS vector string behind it, no EPSS where a CVE exists, and no CWE on any finding. The ratings cannot be argued with because there is nothing to argue with. | §16.2(ii) requires CVSS for severity, EPSS for real-world exploitation likelihood, and states that “Every reported observation / vulnerability shall be mapped with Common Weakness Enumeration (CWE) and Common Vulnerabilities and Exposures (CVE) number.” Annexure I item 22 to the empanelment terms adds that metrics should be based on a mathematical formula “and not on feelings of the auditor”. | A queue you cannot re-order. Without vectors you cannot re-rate for your own environment, and without CWEs you cannot see that thirty findings are one mistake. | At the first prioritisation meeting, where the argument is about ranking and there is nothing to rank with. | Send the CVSS vector for every finding, and the CWE for every finding. |
| The report is final, but nothing was retested | A document labelled Final, issued days after the test ended, with every finding open. Sometimes accompanied by a certificate. | §16.3(v): “The Final audit report should be issued after the closure of vulnerabilities & completion of follow-up audit of the application hosted on production environment.” §16.3(iv) requires the follow-up audit to verify closure. | A document a reviewing authority can reject on its face, because §16.3(v) puts the final report after closure and the follow-up audit. Where a certificate was issued against it, the certificate goes with it. | At the hosting gate or the certificate check, before anybody reads a finding. | Is this the draft? What is the retest date, and what does the retest cover? |
| A second-year report with no repeat observations | A clean-looking report that never mentions the previous cycle. Either everything was genuinely fixed — which the report would say — or the previous findings were never revalidated. | §15.2.1(iii) requires the auditing organisation to revalidate observations from the previous audit cycle and to record unresolved issues as repeat observations in the current cycle. | A governance gap rather than a technical one: nobody can say whether last year’s risk was fixed, accepted or forgotten, and an accepted risk nobody authorised is still yours. | At the third cycle, when the same observation appears as though it were new. | Show me last cycle’s findings with their current status, one by one. |
| Nobody is named, and nobody signed | A logo, a date, and an unsigned PDF. Or one signature where there should be three. Or names that do not appear in the organisation’s declared manpower. | §16.1(vi) and §9.5(iii) set the three-signature chain. §10.2(vi) and §12.3(iii) require only manpower declared to CERT-In in the snapshot information form to be deployed, and §12.2(iii) states that auditing organisations should not field freelancers, interns, freshers, moonlighters, third-party consultants or employees serving notice — and that the auditee should verify compliance. | The report cannot be relied on by anyone downstream, and where the auditor is empanelled the §9.5(iii) chain is broken — a defect visible before a single finding is read. | At the first external review: the customer, the regulator or the hosting gate. | Who tested, who reviewed, who authorised? Are all three on your declared manpower? |
A pattern worth naming, because it explains most of the table at once. A thin test produces a report that is long in the middle and empty at both ends: lots of findings, because findings are what a tool produces in volume, and very little scope, environment, method, effort, evidence, limitation or closure detail, because all of those describe work rather than output. When you pick up a report and the first three pages are thin while the finding section runs to eighty, you already know the shape of what happened, before you have read a single vulnerability. A test that was genuinely performed is easier to describe than to summarise.
What will my auditor say, and what do I say back?
Sending a tell back rarely produces a document. It produces a sentence, usually on a call, usually one of these six. The rule behind each answer is set out in full further up the page. What follows is the reply.
“We can’t share the evidence, it’s confidential.”
Confidential from whom? It is your estate. §18(i) puts the working notes and the evidence appendix within the auditee’s reach — the auditee is to seek the working notes on completion, with a provision for it in the audit contract, and to ask for the evidence collected during the assessment to be submitted as an appendix to the final report. The rules that do restrict this material are about how it travels, not whether you get it: §16.5 requires official email IDs, delivery to the named point of contact and password protection or encryption, and §5.3.3 of the 2014 data-handling policy says the audit report should not be shared or hosted on online internet file services, online sharing platforms or cloud services unless the service is under the auditing organisation’s technical and administrative control or the auditee specifically authorises it. Ask for the appendix over the channel those clauses describe, and if the contract has no working-notes provision, that is a gap to close in the next engagement letter rather than a reason you cannot have the evidence.
“Our tool doesn’t output a CVSS vector.”
Then the severity column has no stated basis, and that is the finding. §16.2(ii) requires observations to be categorised on CVSS for severity and supplemented with EPSS, and Annexure I item 22 of the empanelment terms expects qualitative metrics derived from a mathematical formula rather than from the auditor’s judgement alone. A vector is not an output of a scanner. It is a judgement an assessor records, in a notation that lets somebody else disagree with it precisely. Ask for the vectors to be added before the report is finalised — that is an afternoon’s work for a tester who actually assessed the findings.
“Those are all false positives.”
Some of them may be, and they will not all be the same kind. A true false positive does not survive reproduction and should be withdrawn in writing and removed from the counts. A finding against infrastructure your hosting provider operates is real and gets re-owned under §13.1.5, not deleted. One misconfiguration counted once per host is one finding with an affected-asset list. A correct finding whose severity ignores your environment is a re-rating, recorded with both numbers. Lumping the four together is how a remediation programme loses credibility in both directions at once — real findings dismissed as noise, and noise argued about for a fortnight.
“The report is final. The retest is a separate purchase order.”
Both halves of that are wrong under the guidelines. §16.3(v) says the final audit report should be issued after the closure of vulnerabilities and completion of the follow-up audit on production — so a document marked Final with every finding open is a draft that has been mislabelled. And §9.3(iv) says follow-up audits should be included within the scope or the RFP proposal and must be conducted after closure. If the retest was not priced, the scope of work was incomplete, and that is a conversation about the work order, not about whether you are entitled to a retest.
“Our methodology is proprietary.”
The methodology is a required content item, not a trade secret. §16.1(ii) requires the report to include the methodologies and standards used, the tools, and the manual process. §8(ii) then narrows what counts as a standard — naming ISO/IEC standards, the Cyber Security Audit Baseline Requirements, the CSA Cloud Controls Matrix, OSSTMM3, the OWASP Web Security Testing Guide, ASVS, MSTG and the DevSecOps Maturity Model, and stating that limited lists such as the OWASP Top 10 and SANS Top 25 should not be treated as standards or references for audits. Nobody is asking for the firm’s internal playbook. They are asking which published guide was worked through, at which version.
“We tested staging. It’s identical to production.”
Then say that in the report, and prove it with the hash. §15.2.3(ii) requires testing on the staging or testing environment provided by the hosting service provider before the audit certificate is issued, with hash values and version numbers obtained from the auditee and included in the report — and §16.3(v) requires the report to state explicitly that the audit was not conducted on the production environment where the scope was limited to staging. “Identical” is a claim with an artefact hash behind it or it is not a claim. Ask for the hash of the tested build and the hash of what is deployed, computed the same way, and compare them yourself.
How do you read a VAPT report? Eight steps, worst problems first
About half an hour for a first pass on a report of ordinary length. It runs against the running order set out above, and that is the point of it: steps one to four cover the front matter that most readers skim, step five is a single finding, and the findings section that occupies most of the page count gets four minutes. If you are new to the vocabulary, start with what VAPT is and the types of VAPT, since half of what makes a report hard to read is not knowing which kind of test it was supposed to be.
Read the scope and the asset list before you read a single finding
Do not start with the executive summary. Start with the list of what was tested and put your own asset inventory next to it. Every asset in your inventory that is not in that list is an untested asset, whatever the severity chart says. §13.1.1(c) requires the scope to be derived from the consolidated and updated asset inventory precisely so that this comparison is possible, and §16.1(iii) requires every in-scope asset to be named in the report.
Confirm the environment and the build
Find the sentence that names the environment, and the version, build and hash of what was tested. If the environment is staging, §16.3(v) requires the report to say so explicitly. If the hash has no algorithm beside it, ask for the algorithm and the artefact — published specimen certificates read side by side differ on exactly this point, one printing a bare sixty-four-character hash and the other naming its algorithm outright — and a hash you cannot recompute is decoration.
Check three dates, not one
The test window, the date of this report version, and the date to which the asset inventory behind the scope was current. §16.1(iv) requires draft and final versions to be dated, and §13.2.3(ii)(b) requires the inventory as-of date to be reflected in the report. A test window that predates your last two releases tells you what the report is worth today.
Read the methodology and the effort together
Which testing guide, at which version. Which tools, and what was done by hand. How many man-hours, over how many calendar days, by how many named people. §16.1(ii) requires all of it, and §13.2.2(ii) requires the test plan to carry both calendar time and man-hours. Effort and estate size have to be plausible against each other before the findings mean anything.
Read one finding end to end, and pick a medium
Not the critical — the critical is where the effort went. Take a medium-severity finding and see whether it has a location, a reproduction path, evidence you could act on, a CWE, a CVSS vector, and remediation guidance specific to your stack. How a firm writes up a medium is how it writes up everything it was not being watched on.
Re-rate the top findings for your own environment
Take the CVSS vector, not the number, and set the Environmental metrics for the system it actually sits on: how the affected service is really reached, what stands in front of it, and how much the confidentiality, integrity and availability of that particular asset are worth to you. Where a CVE exists, pull the EPSS score fresh rather than reading the one printed in the report. Expect the order to change — the worked box above shows a finding dropping a band and changing places with a lower-rated one. This is the step that converts an auditor’s severity list into your remediation queue.
Look for what is missing
Read the limitations, the exemptions and the inaccessible assets. Then look for the things that should be there and are not: unknowns marked as unknowns, states of security found rather than only failures, repeat observations from the previous cycle, severity-wise closure timelines. Absences do not announce themselves, which is why they are read for deliberately and last.
Check the signatures, then decide what the retest must cover
Three signatures in the order §16.1(vi) sets out. Then write the retest scope yourself, from the findings you intend to fix, before the remediation work starts — so that the follow-up audit required by §16.3(iv) verifies closure against a list that already exists rather than one assembled afterwards.
Step five is the one people are most tempted to skip, and it is the highest-yield minute in the exercise. Criticals get attention: they are written up carefully because everyone knows they will be read aloud in a meeting. A medium is where the firm’s actual standard lives. If the mediums have locations, evidence and specific remediation, the report is sound all the way down. If they collapse into one-line descriptions with a generic fix, the top of the report is a display case.
What does reading a real report turn up? Forty-one pages, twelve observations
An illustrative composite, not a client engagement, and labelled as such for the same reason the finding comparison further up this page is: the counts exist to show the shape of the arithmetic, not to describe anyone. What is not illustrative is the clause beside each row. This is the read-through above, run once, on one document, with the notes somebody actually took.
| Page 2 · Scope annexure | 33 assets named. The asset inventory the organisation maintains has 41. | Eight assets are untested and the report does not say so. §13.1.1(c) requires the scope to be derived from the consolidated and updated asset inventory and §16.1(iii) requires every in-scope asset to be named in the report — so either the eight were never in scope, in which case somebody scoped them out and it is not written down, or they were in scope and §10.1(ii) required them named with reasons. The severity chart on page 4 is a chart about 33 things. |
| Page 2 · Inventory as-of date | Absent. | §13.2.3(ii)(b) requires the date to which the scope and asset inventory were updated to be reflected in the audit reports. Without it there is no way to tell whether the 33 were current at the time of testing or a list inherited from a previous cycle. This is the field that would have explained the gap in the row above. |
| Page 3 · Environment | One line: “as provided”. | §15.2.3(i) requires the environment — Test, Development, UAT, Pre-Production or Production — to be specified. “As provided” specifies nothing. If it was staging, §16.3(v) required the report to say explicitly that the audit was not conducted on the production environment. Everything downstream of this line is now unanchored. |
| Page 3 · Build identity | Application name and a release month. No version string, no build identifier, no hash, no algorithm. | §9.5(i) and §16.1(v) require hash values, versions and timestamps to be prominently featured in the certificate and the reports, and §13.2.3(ii)(c) requires version-specific detail in both scope and report. Build identity cannot be reconstructed after the fact, so this one cannot be fixed by a revised report — it can only be fixed by testing again. |
| Page 3 · Methodology | “OWASP Top 10”. No testing guide, no version, no baseline, no manual process described. | §8(ii) states that limited lists such as the OWASP Top 10 and SANS Top 25 should not be considered standards or references for audits. §16.1(ii) requires the methodologies and standards used, the tools and the manual process. What this line describes is a category scheme for sorting output, not a method for producing it. |
| Page 3 · Effort | 6 man-days across the 33 named assets, 2 named testers, 4 calendar days. | Not a judgement about the firm — arithmetic. §13.2.2(ii) requires the test plan to carry both calendar time and man-hours and §16.1(ii) requires duration and manpower in the report, precisely so this comparison can be made. Six man-days against 33 named assets including authenticated web roles and an API tier is roughly an hour and a half per asset, inclusive of reporting. |
| Pages 5–38 · Findings | 47 findings. Sorted by remediation action, 31 of them resolve to one misconfiguration in a shared container base image. | One finding with 31 affected assets, not 31 findings. The report is 47 lines long and 17 problems deep. §16.2(ii)’s CWE mapping is what makes this collapse visible in one sort — which is part of why the mapping is required rather than optional. |
| Pages 5–38 · Classification | 11 of the 47 carry no CWE. None of the 47 carries an EPSS value. 9 carry a CVE. | §16.2(ii) requires every reported observation to be mapped with a CWE and a CVE number, and requires CVSS to be supplemented with EPSS for real-world exploitation likelihood. Nine findings have a CVE, so nine EPSS values existed and could have been pulled. The eleven with no CWE cannot be counted against anything, this cycle or next. |
| Pages 5–38 · Evidence | Screenshots of the scanner console for 40 findings. Request-and-response pairs for 3. Nothing for the remaining 4. | §18(iii) requires observations to be well supported with objective evidence, compiled carefully and correctly with the report and presented so decision makers can use it in credible risk-based decisions. A picture of a tool saying something is not evidence that the thing is true. It is evidence that the tool said it. |
| Page 39 · Limitations | Two sentences, both about the testing window. | The section that should carry the eight missing assets, the unprovisioned roles, anything accepted on the developer’s description and anything left passive for availability under §15.2.2(iv). §16.1(ii) requires exemptions, limitations and other constraints, and Annexure I item 20 of the empanelment terms expects unknowns marked as unknowns. Two sentences is the length this section reaches when there is nothing anybody is willing to write down. |
| Page 40 · Repeat observations | No such section. This is the organisation’s second annual cycle with the same firm. | §15.2.1(iii) requires the auditing organisation to revalidate observations from the previous audit cycle and to record anything unresolved as a repeat observation in the current cycle. Its absence does not mean last year’s findings were closed. It means nobody looked. Last year’s report had 29 findings. |
| Page 41 · Closure | No timelines by severity. One signature. Document marked “Final”, dated four days after the test window closed. | §16.3(iii) requires closure timelines by severity. §16.1(vi) and §9.5(iii) require three signatures — the auditors, an independent mid-management reviewer, and the head of the auditing organisation. And §16.3(v) puts the final report after the closure of vulnerabilities and the completion of the follow-up audit, which cannot have happened in four days with 47 findings open. This is a draft with the wrong word on the cover. |
Twelve observations, none of which required access to the testing, the testers or the tooling. They produced six questions. The answers are where the exercise stops being an audit of the document and starts being a conversation about the engagement.
Which eight assets were not tested, and who decided that?
Answer received: six were out of scope by agreement in a call that was never minuted, and two were assumed to be covered by the network range. §14.2 requires scope revisions in writing with justification, assessed for impact, approved by authorised representatives and documented as an addendum to the engagement letter. None of that exists, so the scope on paper and the scope tested are different documents.
Which environment was tested, and is that build what is running now?
Answer received: staging, and staging was rebuilt from production “a few weeks before”. Without a hash on either side that is an assertion, not a fact. The engagement cannot produce one retrospectively, which makes this the finding that costs a fresh pass rather than a revised report.
Which testing guide did you work through, and which of its checks did you not run?
Answer received: the OWASP Web Security Testing Guide “informally”. That is a usable answer if it comes with the section list and the checks not run, but it is not a usable answer on its own. §16.1(ii) wants the methodology and the manual process both stated, which is the difference between the two.
Send the CVSS vector for every finding and the CWE for the eleven that have none.
Answer received in nine working days: vectors for 44 of 47, CWEs for all 47. Re-sorting by CWE is what turned 47 findings into 17. The three findings for which no vector could be produced were three of the four with no evidence, which is not a coincidence.
Send the evidence appendix and the working notes.
Answer received: an evidence pack for 12 findings and a statement that working notes are internal. §18(i) puts both within the auditee’s reach and expects the contract to provide for the working notes. This contract did not, which is a clause for the next engagement letter rather than an argument to win now.
Show me last cycle’s 29 findings with their current status.
Answer received after two weeks: 11 closed, 6 still open and appearing in this report as new findings, 12 never revalidated. The six that reappeared as new are the single most useful number the read produced — they are repeat observations under §15.2.1(iii), and presenting them as new findings understates the age of the risk by a year.
What the read was worth. Not the 47 findings. The read turned 47 into 17 by sorting on a field the report was required to carry and did not, surfaced six risks that were a year older than the document admitted, and identified one defect — the missing build identity — that no revised report can repair, which is the difference between a conversation about this engagement and a decision about the next one. It took an afternoon, and every question in it quoted a clause rather than an opinion. That is the whole method.
How do I review a vendor’s VAPT report? For the team on the receiving end
A report that arrives during a procurement is a different object from one you commissioned. You did not set the scope, you cannot re-test anything, and the people who can answer your questions work for the counterparty. Six questions do most of the work, and the answers are narrower than the document’s cover page suggests.
| Does this report tell me the vendor is secure? | No, and nothing can. §10.1(i) puts the limit in the auditor’s own instrument: the auditor “is not responsible for managing or maintaining the organization’s security measures directly or indirectly; their responsibility is limited to reviewing and reporting on the state of security at the point in time of the audit.” A report is a statement about named assets, in a named environment, in a named window. Everything outside those three is not addressed. |
| Does a certificate tell me more than the report? | Less, and not by a little. A certificate carries a conclusion. The report carries the four things that decide whether the conclusion means anything — what was in scope, in which environment and at which build, how it was tested, and what was still open when it was signed. None of those fits on a certificate and none of them can be inferred from one. Ask for the report, or at minimum for the scope statement, the environment and build line, the methodology section and the closure summary. |
| What can I conclude if the scope excludes the system I care about? | That the system you care about has not been tested. This is the failure mode this section is written for, because nothing in the document looks wrong when it happens: the report is genuine, the auditor is real, the findings are sound, and the product you are buying is simply not among the assets named. Read the asset list against the thing you are procuring before you read anything else. |
| Is the auditor actually empanelled, and does that matter here? | It matters where the engagement requires it, or where a contract specifies it. For an Indian government website, web application, portal or mobile app, GIGW guideline 5.3.1 requires an audit clearance certificate before hosting in production, and names four issuers: NIC, STQC, an STQC-empanelled laboratory, or a CERT-In empanelled laboratory. CERT-In empanelment is one of those four, not the whole requirement. The check itself is against the signing legal entity, by registered name, on CERT-In’s published list of empanelled information security auditing organisations — and note what that list is: its own header describes it as the up-to-date valid list, kept current as changes occur. It carries no history and no per-entry validity dates, so it answers “are they empanelled now”, not “were they empanelled then”. For the engagement dates, ask the auditing organisation for the empanelment letter or reference covering that period. Clause 1.1 of the empanelment terms makes the status valid for a stated block period subject to annual review and renewal, and clause 9.3 requires an organisation to stop claiming it on termination. A reading of the directory rather than a rule in any instrument, but worth stating: the list names legal entities, so a parent or sibling company appearing on it does not put the signing entity on it. |
| Why will the vendor not just send me the whole report? | Often for a reason that is in their auditor’s rulebook rather than in their sales policy. §16.5 requires reports to go to the specified point of contact, over official email, with password protection or encryption and end-to-end confidential channels, and §13.2.5 requires a distribution list of official email IDs before distribution. The auditor’s own data-handling policy goes further and says the audit report should not be shared or hosted on online internet file services, online sharing platforms or cloud services unless under the auditing organisation’s technical and administrative control or specifically authorised by the auditee. Those rules bind the auditor, not you — but they explain why a genuine report arrives password-protected from a named person rather than as an open link, and why a vendor who mails one round casually is worth a second look. |
| What should I accept instead of the full report? | A scoped extract is a reasonable compromise and easy to specify: the cover page, the scope and asset list, the environment statement, the methodology, the severity summary, the closure timelines, the limitations, and the retest confirmation — with the finding detail and evidence redacted. That extract answers every question in this table. A one-page certificate answers none of them. |
Where the engagement is one that requires an independent issuer — an Indian government website, web application, portal or mobile app going into production, most obviously — read the requirement as GIGW writes it. Guideline 5.3.1, at guidelines.india.gov.in, requires an audit clearance certificate issued by NIC, STQC, an STQC-empanelled laboratory or a CERT-In empanelled laboratory before hosting in the production environment. Four issuers, one of which is CERT-In empanelment. Where the requirement is specifically a CERT-In empanelled organisation — because a tender, a regulator or a customer contract says so — the empanelment check has its own method and its own failure modes, set out on how to verify a CERT-In audit certificate. What empanelment is, and what it is not, is on CERT-In empanelment explained. The agency itself is described on what CERT-In is. And if what you have been handed is a certificate rather than a report, the distinction and what each one carries is covered on what a safe-to-host certificate is and safe-to-host versus a security audit certificate.
One caution about claims made around the document rather than in it. An empanelled auditor is permitted exactly one sentence about its relationship with CERT-In — that the organisation is empanelled by CERT-In for providing information security auditing service — and no other words without CERT-In’s prior written permission, with the logo prohibited on publicity or promotional material on the same terms. A cover page carrying the CERT-In emblem, or a covering email describing the firm as “CERT-In certified”, tells you how that organisation treats claims generally, before you have read a single finding. Claims about the newer audit monitoring platform are worth the same scepticism, and are set out on AMBAK.
What should I ask my VAPT auditor for? Eleven lines to send back
Every item below is something an instrument already requires or entitles you to, so none of it is an imposition on a competent auditor and all of it is quick for one who did the work. An organisation that cannot produce most of this within a few days has told you something about the engagement that the report did not.
- 01 The scope and asset list as tested, set against our asset inventory, with the as-of date of that inventory.
- 02 The environment tested, named explicitly, and confirmation of whether the tested build is the build now in production.
- 03 The application version, the build identifier, the hash value and the hash algorithm.
- 04 The testing guide or standard followed, at its version, and the list of tools used alongside the manual testing.
- 05 The test plan as delivered, with calendar time and man-hours, and the names of the personnel who performed the work.
- 06 The CVSS vector string for every finding, the CWE for every finding, and the CVE and EPSS score where one exists.
- 07 The evidence appendix and the working notes.
- 08 The severity-wise closure timelines.
- 09 The list of in-scope assets that could not be tested, with the reason in each case.
- 10 The previous cycle’s findings with their current status, marked as repeat observations where still open.
- 11 The retest scope and date, and confirmation of whether this report version is draft or final.
Send it to the point of contact named in the engagement, over the channel the engagement uses. §16.5 requires reports to be communicated through official email IDs only, to the specified point of contact, with password protection or encryption and end-to-end confidential delivery channels, and §13.2.5 requires a distribution list of official email IDs — plus a mobile number for sharing report passwords — to be obtained before distribution. If you are the auditee, keep the request and the reply with the report. They are part of the record of what you were told, and they are the first thing anyone will ask for if a finding that was closed on paper turns out not to have been.
What if the auditor will not fix the report?
Most of the time the eleven lines are answered, because a firm that did the work has the material to hand. When they are not, there is a ladder, and it is worth knowing that it ends somewhere. Work down it in order and stop when the problem is fixed.
- 01 Put the request in writing with a date on it, under §18(v). That clause is the mechanism and it is worth naming: the auditee may request clarifications on the audit report, and the auditor responds within a mutually agreed timeframe. “Mutually agreed” means you propose one. An email citing §18(v) and §16.1(ii) gets a different answer from an email saying the report feels thin.
- 02 Ask separately for the artefacts you are already entitled to and have not seen. The evidence appendix and the working notes under §18(i), the tool list with its IPR and licence confirmation under §13.2.2(iii), and the date each critical and high finding was first identified — which §16.3(ii) required to be notified to you as and when found, so the dates exist. A firm that ran the engagement properly can produce all four inside a day.
- 03 Use the review meeting the engagement already provides for, rather than inventing a new forum. §15.2.7 expects regular review meetings with the auditee’s points of contact, and §13.2.6 expects a defined escalation matrix on both sides. Hold one, with minutes, and put the outstanding items in them.
- 04 Ask for the specific remedy, not for general improvement: a corrective action note with dates, a revised report, or a §14.2 addendum where the problem is that the scope moved. Naming which of the three you want is what makes the answer comparable to something.
- 05 Escalate to the head of the auditing organisation. That is not a rhetorical step — under §9.5(iii) the head of the organisation is the person who has to authorise and sign the report, and is therefore the person with a direct interest in it being defensible. Send them the clause list.
- 06 Hold back only the phase that has not been delivered, and only that. §7 requires payments not to be contingent upon the outcome of the audit, favourable or unfavourable, nor tied to the submission or approval of any closure report — so withholding against findings is the thing you must not do, and declining to accept an undelivered phase is the thing you may. Where the engagement cannot be repaired at all, §12.4(ii) contemplates a contract clause letting the auditee stop and appoint another organisation.
- 07 Give CERT-In feedback afterwards, whatever the outcome. §11(iii) describes auditee feedback as both a right and a duty, says feedback and complaints are kept confidential and acted on promptly, and points auditees at empanelment@cert-in.org.in for the form. §19 sets out what that feedback can trigger — adverse feedback on technical competency sits at the top of the suspension row. This step costs nothing and has no deadline, which is why it is the one that never gets done.
One thing that is not on the ladder, deliberately. Do not renegotiate the fee against the findings, in either direction. §7 of the audit policy guidelines puts independence first among the basic principles and states that payments to the auditing organisation should not be contingent upon the outcome of the audit — whether favourable or unfavourable — nor tied to the submission or approval of any closure report, and that fees should be based on predefined scopes, deliverables and timelines. A discount negotiated because the report was disappointing creates exactly the incentive the clause exists to prevent, on the next engagement rather than this one.
The roles, stated plainly
Here is who owns each part of a VAPT engagement under CERT-In’s rules. Where a test crosses into red teaming the roles shift again, which is covered on VAPT versus penetration testing versus red teaming.
| Activity | Who owns it | What everyone else does |
|---|---|---|
| Defining the scope and keeping the asset inventory current | The audited organisation | §9.6(i) is explicit that the audit process must be undertaken by the auditee organisation itself and that the responsibility must not be delegated — while adding that the organisation “may seek external support for specialized expertise, while retaining full ownership and accountability”. |
| Performing the testing and writing the report | The auditing organisation | §9.5(i) requires hash values, versions and timestamps to be captured by the auditee and “prominently featured in the audit certificate and reports”. |
| Signing the report and the certificate | The auditing organisation | Three signatures on the report under §16.1(vi) — the auditors who conducted the audit, an independent reviewer from mid-management, and the head of the auditing organisation — and the certificate signed by the lead auditor and the head. |
| Rating findings for your environment | Shared | The auditor rates severity, and you supply the environmental context that turns severity into risk. |
| Fixing what was found | The audited organisation | §9.3(iii) puts patching and correction of vulnerabilities squarely on the auditee. |
| Verifying closure | The auditing organisation | §16.3(iv) requires the follow-up audit to verify closure. |
| Reporting an incident to CERT-In | The audited organisation | The six-hour duty under the Directions of 28 April 2022 is the entity’s own, and the CERT-In FAQ of May 2022 states that it is “neither transferrable nor indemnified or dispense with”. TCSA helps build the detection and reporting path in advance. The report is filed by the organisation. |
We deliver CERT-In audits
We deliver CERT-In audits, end to end, with our CERT-In empanelled partners. See how a CERT-In audit runs with us, or read more about our security testing services.
Every claim on this page, and the document behind it
Each row is a document read directly, with the clauses this page relies on and a link to the official copy. Where any of them disagrees with anything written here, it wins.
- Comprehensive Cyber Security Audit Policy Guidelines · CERT-In, Ministry of Electronics and Information Technology — Version 1.0, 25 July 2025. The instrument most of this page rests on. §2 the binding formula and §4 who it applies to. §5 the definitions relied on here — CVE at (xviii), CWE at (xix), vulnerability assessment at (xxi), penetration testing at (xxii), and the severity-classification entry at (xxiv) that names CVSS and EPSS. §8 applicable standards and the discouragement of solely tools-based testing. §9.5(i) hash, version and timestamp. §9.5(iii) the signature chain. §10.1 the point-in-time limit and inaccessible assets. §13.1.1 scope. §13.2.2(ii) calendar time and man-hours. §13.2.3(ii) inventory date and version-specific detail. §13.2.5 report distribution. §15.2.1(iii) repeat observations. §15.2.3 environment and staging. §16.1 report contents and versions. §16.2 executive summary, CVSS, EPSS, CWE and CVE. §16.3 closure timelines, follow-up and the final report. §16.4 high-risk findings. §16.5 and §16.6 delivery and disclosure. §18 evidence and working notes. cert-in.org.in/PDF/Comprehensive_Cyber_Security_Audit_Policy_Guidelines.pdf
- Empanelment of Information Security Auditing Organisations — Terms and Conditions for Empanelment · CERT-In — Version 7.2, April 2024. Annexure I, “Expectations of an Auditee organisation from an Auditor”, 24 numbered items — item 10 (calendar time and man-hours), item 12 (tools understood and tested before use), item 16 (high-risk findings reported immediately with a practical solution), item 19 (notification of changes to the plan and of high-risk findings), items 20 to 22 (unknowns marked as unknowns, all states of security found, metrics on a mathematical formula), item 23 (delivery confirmed). Annexure II, the audit report content format. Clause 2.1: CERT-In is not a party to your contract. Clause 3.2.2: the five-day submission of report and metadata to CERT-In. cert-in.org.in/PDF/termscon.pdf
- Guidelines for CERT-In Empanelled Information Security Auditing Organizations · CERT-In — Version 3.0, May 2018. The earlier statement of the same rules, useful where a report predates the 2025 guidelines: observations supported by objective evidence and compiled with the report, timelines for closure of vulnerabilities according to severity, the environment in which the application was tested stated clearly, a verification team reviewing the audit team, and the discouragement of solely tools-based testing. cert-in.org.in/PDF/Auditor_Guidelines.pdf
- Policy Guidelines for Handling Audit related Data · CERT-In — Version 1.0, June 2014. §5.3.3, on how an audit report may and may not be circulated, and the storage, access, retention and destruction rules that sit behind a password-protected delivery. cert-in.org.in/PDF/Policy_Guidelines_Handling.pdf
- Directions under sub-section (6) of section 70B of the Information Technology Act, 2000 · CERT-In, No. 20(3)/2022-CERT-In, 28 April 2022. The six-hour incident reporting duty and the twenty mandatorily reportable incident types at Annexure I — the obligation that starts running if a test turns up evidence of a live compromise. cert-in.org.in/PDF/CERT-In_Directions_70B_28.04.2022.pdf
- Empanelled information security auditing organisations, with snapshot information · CERT-In. The published directory and the per-organisation snapshot of skills, competence, audits performed and technical manpower — the document any empanelment check is performed against. cert-in.org.in/PDF/Empanel_org.pdf
- Cyber Security Audit Baseline Requirements · National Security Council Secretariat — Publication NSCS-46-16 Rev 1.0, October 2020, published on CERT-In’s website. Named at §8(iii) and §13.1.8(i) of the audit policy guidelines as a document auditees and auditing organisations should use to build their audit programme. Its own abstract describes it as the minimum-security assurance baseline expected across the cyber information infrastructure of organisations. cert-in.org.in/PDF/CyberSecurityAuditbaseline.pdf
- Common Vulnerability Scoring System version 4.0: Specification Document · FIRST.Org, Inc. — Document Version 1.2. The four metric groups (Base, Threat, Environmental and Supplemental), the statement that the Base Score assumes the reasonable worst-case impact across different deployed environments, and the instruction that consumers should enrich the Base metrics with Threat and Environmental values specific to their use of the vulnerable system. first.org/cvss/v4.0/specification-document
- Common Vulnerability Scoring System v3.1: Specification Document · FIRST.Org, Inc.. The version most reports in circulation still use, and the comparison this page draws: three metric groups rather than four (Base, Temporal and Environmental), a base group carrying Attack Vector, Attack Complexity, Privileges Required, User Interaction, Scope and single Confidentiality, Integrity and Availability impacts, and a Temporal group of three metrics (Exploit Code Maturity, Remediation Level and Report Confidence) where v4.0 has one. first.org/cvss/v3.1/specification-document
- CVSS version 4.0 calculator · FIRST.Org, Inc.. The tool this page tells the reader to use, and the source of the scores in the worked re-rating: 7.1 for the base vector, 6.9 with a modified attack vector of Adjacent, 5.5 with a Confidentiality Requirement of Medium as well, and 8.7 where modified privileges required drop to None. first.org/cvss/calculator/4.0
- Exploit Prediction Scoring System (EPSS) · FIRST.Org, Inc.. The definition relied on here: a data-driven machine-learning model estimating the probability that a published CVE will be exploited in the wild in the next 30 days, published daily as a 0–1 probability with ranking percentiles. first.org/epss
- EPSS Frequently Asked Questions · FIRST.Org, Inc.. The operational detail the landing page does not carry: that the probability is an absolute measure and the percentile a relative ranking, that because the distribution is skewed towards zero a probability of 0.10 currently sits around the 95th percentile, that scores are recomputed and republished daily for every scored vulnerability, that EPSS is not a complete risk score (measuring neither impact nor environment nor compensating controls), and that EPSS defines no severity bands and endorses no threshold. first.org/epss/faq
- About CWE · MITRE. The definition of the enumeration and of a weakness: a condition in a software, firmware, hardware or service component that, under certain circumstances, could contribute to the introduction of vulnerabilities. cwe.mitre.org/about
- OWASP Application Security Verification Standard · OWASP — current stable version 5.0.0. Named at §8(ii) of the audit policy guidelines as a standard an audit may be built from, and named in GIGW’s cybersecurity chapter. Relied on here for the level structure as ASVS 5.0.0 states it: Level 1 as the minimum starting set at around twenty per cent of the requirements, described as “not necessarily penetration testable by an external tester without internal access to documentation or code”, Level 2 as the level “most applications should be striving to achieve”, and Level 3 for applications demonstrating the highest level of security. The level definitions were reorganised between 4.0.3 and 5.0.0, which is why a scope of work must name the version as well as the level. owasp.org/projects/asvs
- Application Security Guidelines · CERT-In, Ministry of Electronics and Information Technology. CERT-In’s own secure design and development guidance, named at §8(vii) of the audit policy guidelines and relied on here for §8(viii) — that an application developed without any secure design and development practices should not be considered for assessment and audit, and that the auditee should be told in writing with a copy marked to CERT-In. cert-in.org.in/PDF/Application_Security_Guidelines.pdf
- Guidelines for Indian Government Websites — security guidelines and attributes · National Informatics Centre, STQC and CERT-In, published by MeitY at guidelines.india.gov.in. Guideline 5.3.1, quoted here for the issuer question: the website, web application, web portal or mobile app must have been security audited and an audit clearance certificate issued by NIC, STQC, an STQC-empanelled laboratory or a CERT-In empanelled laboratory before hosting in the production environment. Four issuers, of which CERT-In empanelment is one. guidelines.india.gov.in/security-guidelines-and-attributes
Sources last checked 22 September 2026. Two notes on citation. First, section references on this page without another document named are to the Comprehensive Cyber Security Audit Policy Guidelines of 25 July 2025, and references to Annexure I and Annexure II are to the empanelment terms of April 2024, not to the Annexures of the 2022 Directions, which are a different list entirely. Second, where the requirement for government systems is the operative question, the audit clearance rule sits in GIGW guideline 5.3.1 at guidelines.india.gov.in, and the route to a certificate is set out on how to get a safe-to-host certificate with the common failure modes on why applications fail safe-to-host. Where a penetration test is being read as part of a SOC 2 programme rather than an Indian audit, the different expectations are covered on SOC 2 and penetration testing.
Frequently Asked Questions
What is a VAPT report?
What does VAPT stand for?
What is EAPT, and how is it different from VAPT?
What is the difference between a vulnerability assessment and a penetration test?
What should a VAPT report contain?
What is the VAPT report format?
Is there a VAPT report sample we can look at?
What do P1, P2 and P3 mean in a VAPT report?
Our VAPT report has 200 findings. Is that bad?
Does a VAPT report have to come from a CERT-In empanelled auditor?
How do I know if a VAPT report is any good?
Is a CVSS score a risk rating?
What is the difference between CVSS and EPSS?
Why does a finding in my report have no CVE number?
What counts as a false positive in a VAPT report, and how do I get one removed?
How long do we have to fix the findings in a VAPT report?
Does our auditor send our VAPT report to CERT-In?
Is a VAPT report the same as a safe-to-host certificate?
Can we share our VAPT report with a customer?
How long is a VAPT report valid?
Does a clean VAPT report mean we are secure?
Who signs a VAPT report?
Is the OWASP Top 10 an acceptable methodology for a VAPT?
Related Reading
What VAPT Actually Is
Vulnerability assessment and penetration testing are two activities. Why India bundles them, and what a real one covers.
Read moreRetesting and Closure
Severity-based closure timelines, what counts as evidence of a fix, and the traps in partial closure.
Read moreHow to Verify a CERT-In Audit Certificate
Check the issuer, the signatures, the environment and the hash — before you accept the document.
Read moreThe Types of VAPT
Web, network, mobile, API, cloud configuration and wireless — what each can and cannot find.
Read moreScoping a VAPT
Assets, environments, credentials, exclusions and the rules of engagement to agree before testing starts.
Read moreRules of Engagement for an Empanelled Auditor
What the auditor must do, must not do, and needs your written permission for.
Read more