Skip to main content

Retest, Closure and the Evidence That Ends an Engagement

A report describes a moment. What turns it into a closed engagement is the retest, and there are three things to agree about it before the first test starts.

By Abhinav A
August 18, 20264 min read

A penetration test report describes the state of a system on a particular day. It records that somebody looked, and what they found. On its own it is not evidence that anything is secure.

What converts it into a closed engagement is the retest, and the documentation that comes out of it. This is the most frequently omitted part of a proposal and the most frequently assumed part of a purchase, which is an unfortunate combination.

Agree three things before the first test

All three are cheap to settle up front and expensive to negotiate afterwards, when your leverage is gone and the findings are already known.

  • Is retesting included, or billed separately? Both are legitimate arrangements. Find out which one you have bought.
  • How long does the window stay open? Thirty, sixty and ninety days are all common. Check it against how long your release process realistically takes. A thirty-day window against a quarterly release cycle will expire before the fix ships.
  • Does the retest produce its own dated document? This is the one that matters most and is asked about least.

What a retest actually involves

The tester re-attempts each finding using the original reproduction steps and records the outcome. Three results are possible.

Closed. The original steps no longer produce the result. A competent retest goes further and tries obvious variations, because a fix that blocks one specific input while leaving the underlying flaw in place is common. If the fix for an injection was to filter one character, the retest should try the others.

Partially closed. The reported instance is fixed; the weakness class is not. This is the most useful result a retest produces and the one buyers most often misread as success. If a report listed three instances of one CWE, fixing three instances is not the same as fixing the habit that produced them.

Still open. Either not yet fixed, or the fix does not work. The distinction matters, because the two lead to different conversations.

The closure document

The deliverable is a dated document listing every original finding with its current status, what changed, and how it was verified. It should stand on its own. A reader with no memory of the engagement should be able to follow it.

This is what an auditor asks for. The original report shows problems; the closure document shows resolution. "We fixed it" is not evidence, and neither is a report with no retest attached; the question being asked is whether somebody independent confirmed the fix.

For anyone working to a framework with a testing requirement, the retest record is usually the artefact that satisfies it. It cannot be reconstructed a year later from memory.

Findings you are not going to fix

Every engagement produces some. The system is being decommissioned in four months. The fix requires a vendor who will not ship until next year. The remediation costs more than the risk.

These are legitimate outcomes. What goes wrong is deciding informally. A finding that is quietly not fixed is indistinguishable, a year on, from one that was forgotten.

A recorded acceptance carries the finding and its severity, the reason, any compensating control, who accepted it, and when it will be reviewed. That last field is what stops an acceptance becoming permanent by default: a decision made because a system was being retired in four months should be revisited when it is still running eighteen months later.

Written down, this is a risk decision. Undocumented, it is an open finding with nobody's name on it.

Where the fix changes the system

Occasionally remediation is substantial enough that the retest is not the right instrument: a rewritten authentication flow, a re-architected permission model. Re-testing the original findings against a component that no longer works the same way only tells you that the old attacks fail.

New code deserves testing as new code. Raise it explicitly when the remediation plan involves rebuilding instead of patching, because the scope of the retest was agreed against the original system.

The sequence, end to end

  1. Test, and receive the report.
  2. Re-rank the findings against your own context (see how to read a security finding).
  3. Fix, in priority order, recording what was changed for each.
  4. Decide and record acceptances for anything you are not fixing.
  5. Retest within the window.
  6. Receive the closure document.
  7. Keep it with the original report. They are one artefact in two parts.

Then the question becomes when to test again, which depends on what changed and what you are subject to, not on the calendar alone. That is covered in how often you should run a VAPT.

About the author

Abhinav A

Lead — VAPT & Security Assessments

Leads Security Brigade's VAPT delivery team, having progressed from Security Consultant to Team Lead. Has executed advanced penetration tests across BFSI, fintech, QSR and telecom.