Skip to content

9. Finding History and Remediation Tracking

A single scan file is a photograph. It tells you what was true at one moment and carries no memory of what came before, which is why the question everyone actually asks — are we getting better? — cannot be answered from one scan.

Finding history answers it. As you load scans with a Baseline open, NESSviewer records each one into that Baseline and works out, for every host-and-plugin pair, when it was first seen, whether it is still open, when it was fixed and which scan proved it. From that it can tell you how long remediation actually takes, how much is overdue, and whether your fixes are holding.

There is no import step and nothing to set up. Open the system’s Baseline on Files → Baseline and load your scans; each scan is recorded as it loads. Open the Baseline afterwards instead and everything already loaded is recorded at that moment. Either way round works.

Behaviour Detail
Each scan is recorded once Identified by the content of the file, not its name or location — so the same scan loaded from a different folder, or renamed, is still one scan.
Order does not matter Dates are worked out from every recorded scan in scan-date order, never in the order you happened to load them.
Unloading keeps the history Taking a scan out of the Files page does not remove it from the Baseline’s history.
Walkthrough samples are never recorded The sample scan a walkthrough loads cannot contaminate your history.
Informational findings are not tracked Only Low severity and above.

This is the part worth understanding, because it is what stops the numbers being nonsense.

NESSviewer only accepts that a finding was fixed when a later scan could have seen it and did not. The proving scan must have a Good scan status, and if any credentialed scan ever found that finding, the proving scan must also be credentialed and have run local checks. A failed scan, or one that ran without credentials, is ignored rather than treated as proof — so a broken scan can never produce a false “fixed”.

A finding that reappears is handled by the grace period, set under Options → Analysis → Finding history grace period and defaulting to 30 days.

Situation What NESSviewer records
Reappears within the grace period of the scan that showed it fixed The fix is cancelled — it was never really fixed. The finding is flagged Intermittent.
Reappears after the grace period A genuine new occurrence. The finding is flagged Recurred.

Open Reports → Finding History. The page has a status banner, a filter row, the findings grid, and beneath it a list of the scans that have been recorded.

Column What it shows
Status Open or Remediated.
Hostname / Host IP The machine, as named in the most recent scan that saw it.
Plugin ID / Plugin Name The finding.
Nessus Severity The scan’s own severity — not the calculated DOD severity.
First Identified The date of the earliest recorded scan that found it on this machine.
Last Seen The date of the latest scan that found it in the current stretch.
Remediated The date of the scan that proved it fixed. Blank while open.
Proved Fixed By The name of that scan file — your evidence.
Occurrences How many separate stretches it has been present for. More than 1 means it came back.
Finding History The flag text, such as Recurred (2nd occurrence, since 2026-08-15) or Intermittent.
Asset ID The machine identity the history is keyed to.
Control What it does
Show Filters the grid: Remediated, Open or All. It opens on Remediated, so if the grid looks short, that is why.
Match hosts with no name, MAC or FQDN on IP (this Baseline) Off by default, and saved per Baseline. Turn it on only where IP addresses are stable in your system — the same IP can be a different machine in a different enclave.
Remove from history… Select a recorded scan below, then use this to take it out — for a scan recorded into the wrong system’s Baseline.

The lower grid lists every scan in the history, newest first, with File, Report, Scanned, Hosts, Good Hosts, Credentialed Hosts, Recorded and Scan ID. Good Hosts and Credentialed Hosts are worth watching — they are what determines whether that scan can prove anything fixed.

The same history, read as performance. Open Dashboard → Remediation.

Tile What it measures
Fixed on time The share of all recorded fixes completed within that severity’s POA&M deadline.
Median time to fix The middle number of days from identification to the scan that proved it fixed, across fixes in the last 90 days.
Overdue Open findings whose age has passed their severity’s deadline, counted from First Identified.
Fixes that didn’t stick The share of findings ever fixed whose fix did not hold, split into {n} recurred · {n} intermittent.

A grid with one row per severity plus a Total, columns Severity, Deadline (d), Fixed, On time, Median (d), 90th (d), Open and Overdue. The 90th percentile is the honest companion to the median: it is where your slow tail actually sits.

The same age buckets as Vulnerability Aging on the Summary tab — ≤7 through >180 — but aged from when a finding was first identified on the host, not from when the plugin was published.

Two bars per month over the last twelve active months: New (identified, or back after a fix) against Fixed, with a net figure where a plus means the backlog grew. This is the single clearest picture of whether remediation is keeping up.

9.5 Ageing the POA&M from first identified

Section titled “9.5 Ageing the POA&M from first identified”

By default, the POA&M Required column ages a finding from the date its plugin was published. With a history in place you can age it from when you actually first saw it instead, using Options → POA&M Rules → Age from First Identified.

Findings the history has no date for still age from publication, and the original date is used even after a recurrence — so fixing something and letting it regress cannot reset its clock.

Being clear about the limits keeps the numbers defensible:

  • Nothing before the oldest recorded scan. Load old scans once if you need the history to reach back.

  • Nothing about a scan removed from history, deliberately or otherwise.

  • No remediation date for a finding whose only later scans were non-credentialed or incomplete — the fix may well have happened, but nothing proved it.

  • Nothing at all without a Baseline open, or with a Baseline still in the older XML format.

  • Nothing about informational findings, which are not tracked.