Download NESSviewer
14-day free trial, no license key required to start.
Beta
NESSviewer 0.0.20
Posted
This build follows the 21 September beta (0.0.17). The headline change is how NESSviewer tells scanned machines apart: two machines that share an IP address are no longer treated as one. The POA&M Update page now keeps track of which project it belongs to, and several reported problems are fixed. This review build runs through 31 October 2026; a newer build will be posted before then.
Feature-complete and in testing. Includes the baseline module.
- Windows
- NESSviewerMAUI_0.0.20.0_x64.zip · 114.6 MBSHA-256 A9B8D170935C0D3F8D7E6FEF8EF12593D1FAB1C928B1BD1196CED2D58215D992
- Requirements
- Windows 10 (1809 or later), Windows 11, or Windows Server 2019 or later. x64
What’s changed
Machines that share an IP address
Until now, NESSviewer told hosts apart by IP address and hostname. Reusing private addresses across enclaves is common, so two different machines scanned at the same IP could be folded into one host: one Scan Status row, one status built from both machines' results, and one host in the Dashboard counts. Hosts that Nessus could not name were affected worst, because all of them were grouped together when working out scan status. Each machine is now counted on its own.
- How machines are identified. NESSviewer uses what the scan itself reports about the machine: the AWS instance ID, BIOS UUID, Active Directory computer account, McAfee ePO GUID, fully qualified domain name, MAC address and hostname. Two scans that report the same machine are recognised as one machine, even when its IP has changed between scans.
- What is deliberately not used. Tenable's host TAG is ignored, because a cloned machine carries the same TAG as the machine it was cloned from. If a scan reports nothing that identifies the machine, that scan's host stands on its own rather than being merged by IP.
- A machine scanned more than once is shown once, with its best scan. "Best" means the most successful scan status, and the most recent scan when two are equal. The Scan Status tab has two new columns. Scans shows how many loaded scans saw the machine. Asset ID shows what identified it. Analyze also has an Asset ID column.
- Each scan's status comes from that scan alone. A good rescan no longer hides a failed scan, and another machine's results no longer count towards this one's status. The Files compliance flags judge each scan file by its own hosts in the same way.
- Counts are per machine. Hosts scanned, top hosts, asset totals and all three Ports views now count machines, not IP addresses.
- Hosts without a name show their IP. A host Nessus could not name used to have a blank hostname. It now shows its IP address, so no host is nameless in a grid.
Severity totals on the Dashboard still count every finding in every loaded scan, as before. If you load several scans of the same machine, its findings are counted once for each scan.
Baseline and scanned hosts
The Baseline now works with the same picture of the scanned machines.
- In Scans and Host Info Matches Scan compare each baseline host against the scanned machines, not against hostnames. When two scanned machines share a baseline host's IP, the MAC address and then the hostname decide which one it is. If nothing tells them apart, the column reads "Unclear: 2 share IP" and the tooltip names the machines. NESSviewer does not guess, and it does not offer Use scan, which would copy the other machine's details onto this host.
- Add/Update Hosts from Scans no longer writes one machine's details over another's:
- Two machines on the same IP that Nessus could not name are added as two hosts, named "10.0.0.5" and "10.0.0.5 (2)". Rename them to their real names.
- A second machine found on a baseline host's IP is offered as a new host. It no longer proposes updates to the existing host.
- When nothing ties a scanned machine to a baseline host, no change is proposed.
- Adding a host never replaces a value you already have with a blank.
- Fill blank hostnames from Baseline treats a host that shows its IP as unnamed and fills it in. Turning the option off puts the IP back. The Scan Status tab picks up the filled names. If two baseline hosts share an IP, that IP is not used to fill either one. Only a MAC address or hostname that identifies one of them is used.
Two machines on one IP: the workflow
If your scans could not name two machines that share an address, and the scans report their MAC addresses:
- Open your baseline and choose Add/Update Hosts from Scans. Both machines are offered, each with its own IP, MAC address and FQDN.
- Add both, then rename them to their real hostnames.
- Turn on Fill blank hostnames from Baseline. The MAC address ties each machine's findings to the right name throughout NESSviewer.
POA&M Update
- An update now knows which project it belongs to. The first time you use an update with an eMASS POA&M export loaded, the update is linked to that system's name and eMASS item IDs. Afterwards, a bar on the page shows the linked system and how many scanned hosts are loaded. NESSviewer warns you when:
- the loaded POA&M belongs to a different system
- none of the items being updated are in the loaded POA&M
- no POA&M is loaded
- the loaded scans do not contain any of the update's hosts
These are warnings only, and nothing is blocked. If the system was renamed in eMASS, you can re-link the update.
- The two exports can no longer be mistaken for each other. Export to eMASS writes
POAM_Update_eMASS_Import.xlsx, which is the file to upload to eMASS. The grid's own Excel export writesPOAM_Update_Working_View_NOT_FOR_eMASS.xlsx, and its tooltip says it is a working copy. - Fill from Defaults:
- It now applies a default you have changed, not only defaults filling blank fields.
- Each row has one checkbox, labelled Overwrite, which says whether to replace a value that is already filled in.
- The risk defaults now save.
- Milestones that already exist in eMASS, and items being closed, are never changed.
Fixed
- An opened POA&M Update document closed itself shortly after it was opened. Fixed.
- Excel exports drew an X through every cell. The POA&M, POA&M report and test-result exports now have normal grid lines.
- The DVL per-scan Excel export failed without any message. It now saves, and if it cannot save it tells you why.
Earlier releases
NESSviewer 0.0.17, posted
Dialogs you can resize
Every dialog in the application can now be resized, and each one remembers the size you gave it.
- Drag the bottom-right corner, the right edge or the bottom edge to resize. Drag the title bar to move the dialog out of the way. Double-click the title bar to fill the window, and again to restore.
- The size is remembered per dialog and kept between sessions. A size saved on a large monitor is fitted to the window when you open it on a smaller one, so a dialog never opens off screen.
- Every dialog has a close button in its title bar, and Escape closes it. Both behave exactly like the dialog's own Cancel or Close button.
- This matters most for the dialogs that hold a grid: the add-findings picker, the POA&M item picker, the corrections review and the Baseline add-hosts dialogs. They used to be a fixed size, which meant scrolling sideways to read the columns.
POA&M aging, where you need it
If you use the POA&M aging rule (Options, POA&M Rules), it now shows up where you make the decision rather than in a separate column.
- Analyze. The POA&M Status column states what the rule says about each finding: "Not on POA&M - POA&M required", "Ongoing - not required yet", and so on. A finding past its threshold that is missing from the POA&M is now obvious at a glance. This also works before any POA&M is loaded, which is useful when building a first POA&M from scan results.
- POA&M Update, adding findings. The picker now shows each finding's Publication Date, Days Since Publication and the same POA&M Status you see in Analyze, so you can choose what to add without going back to check.
- With the rule switched off, the status reads exactly as it did before.
Fixed
- Grid layouts were lost when files were loaded or unloaded. Hidden columns, widths and column order on the Analyze grid reset to their defaults, and the defaults were then saved over your layout. Layouts now survive loading and unloading scans. If your layout was affected, set it up once more and it will hold.
- Scan Status details were empty. Selecting a host on the Scan Status tab showed its status and nothing else. The description, the logic behind the status, the plugins that determine it and the troubleshooting plugins are all back.
- "Update Selected" closed the application. Ticking items on the POA&M Update page and choosing Update Selected could crash the application. Fixed.
- Grouping a grid could close the application after the last framework update. Fixed.
Options
- The "Use CVSSv3 score instead of Nessus severity" rule now lists every band in full: 0.1 - 3.9 Low, 4.0 - 6.9 Moderate, 7.0 - 8.9 High, 9.0 - 10.0 Very High. A finding with no CVSSv3 score, or a score of 0.0, keeps its Nessus severity.
NESSviewer 0.0.16, posted
NESSviewer 0.0.15, posted
eMASS POA&M: 2026 template
eMASS changed its POA&M export template. NESSviewer reads both the old and the new layout, and writes the new one.
- Import accepts either generation. "Vulnerability Description" and "Resources" are recognised alongside the old "Control Vulnerability Description" and "Resources Required", and a POA&M is now identified by POA&M Item ID + Security Checks + POA&M Status, so the rename cannot stop a file being recognised.
- Export (POA&M Update and the generated POA&M report) matches the 2026 template column for column: Summary, Date Identified and Actual Cost added; POA&M Status moved to the front; Milestone Status before Milestone Description; Comments after Office/Org; Resources and Actual Cost last. The info block uses the new positions and labels ("CC/S/A/FA", "DoW IT Registration No"), and the hidden validation lists match the template.
- Summary carries the finding title; Vulnerability Description is the plain description text.
- Labels throughout the POA&M pages use the template's wording.
Loading scans
- Duplicate scans are loaded once. A folder holding a .zip together with its extracted .nessus files (or a copy in a subfolder) used to load every scan twice or three times. Scans are now matched by content, not path; identical copies are skipped and listed in the load dialog with both paths.
- Files that fail to load are named, with the reason, in one dialog. A deleted recent file is reported and removed from the recent list. Dropped files of an unsupported type are named rather than ignored.
Reports
- The POA&M Status and Remediation Plan report sections now contain the loaded POA&M and remediation plans. Both were empty in every previous build.
Reliability
- Pending edits in the Software List, Ports List, Baseline and Remediation Plan editors are saved before the window closes. Previously an edit made in the last second before closing was lost.
- Unhandled errors are written to
%TEMP%\nessviewer-crash.log. If the application closes unexpectedly, send that file. - Startup is faster: the Files page builds its Baseline, POA&M and Remediation tabs on first use rather than at launch.
Licence
- The End-User Licence Agreement is version 1.1. Every user is asked to accept it once on the next start.
Housekeeping
- Legacy test-plan and POA&M loaders that had been unreachable since the kits took over are removed.
- Framework and component updates (.NET MAUI 10.0.101, Telerik UI for MAUI 15.0.0, Telerik Document Processing 2026.3.826).
Current release
NESSviewer 1.0.8
Posted
The shipping release. It does not include the baseline module, which arrives with the beta.
- Single-file EXE
- NESSviewer-1.0.8-x64.zip · 12.3 MBSHA-256 11D3E426011CDD08D0ADA351F62B081A2D716A3BAC5FB138A4D6ED78B8C1C8E7
- MSIX
- NESSviewerMSIX_1.0.8.0_x64.zip · 24.9 MBSHA-256 90D1E6018771116E495950ABB3FE9CABF9ED814ABE0BBA4FBB6E096DEDCB50E8
- Requirements
- Windows 7, 8, 10, 11; Server 2012, 2016, 2019, 2022. .NET Framework 4.6 or higher
What’s changed
eMASS POA&M
- 2026 eMASS POA&M template supported. NESSviewer now imports POA&M exports in both the new 2026 layout and the older layout.
- The renamed columns ("Vulnerability Description", "Resources") are recognized automatically.
- All 36 columns are now read. Before, the last three (Recommendations, Resources and Actual Cost) were dropped.
- POA&M export matches the 2026 template.
- Exported POA&Ms use the template's column order and header wording, with headers on row 7.
- The 2026 information block is included, along with the template's risk level and milestone status lists.
- A saved grid layout no longer changes the column order of the exported file.
- Protected workbooks no longer need Microsoft Excel. When a spreadsheet is protected or marked as final, NESSviewer can now remove the protection itself. If that isn't possible, it tells you how to fix the file in Excel (click Enable Editing, then save).
- Fixed: answering No to "Remove Protection" crashed NESSviewer. It now just cancels the load.
- Fixed: the Hostnames and Descriptions Excel imports crashed when a workbook couldn't be opened, for example because it was open in Excel. They now show a message and stop.
File loading
- Recent files on the POA&M, Test Plan and Remediation Plan tabs. A new dropdown button next to each file path lists the last 8 files you loaded there. Click an entry to load it again.
- To remove an entry, right-click it and choose Delete, or highlight it and press the Delete key.
- If a file has been moved or deleted, NESSviewer tells you and removes it from the list.
- On the Test Plan tab, Save As also adds the new file to the list.
- New Clear (X) button on the same three tabs. It unloads the current file and returns the findings to their "not loaded" state:
- POA&M status returns to "No POA&M Loaded", or to the business-rule status if you enforce POA&M rules.
- "In Testplan?" returns to "No Testplan Loaded", and the dashboard's Test Plan indicator resets.
- The remediation columns return to "No Remediation Plan Loaded".
Your recent-files list is kept, so you can load the same file again with one click.
- Remediation plans: a plan file that can't be read now shows an error message. It no longer fails silently or becomes the current plan.
- Fixed: with "load on open" turned on and no POA&M file saved, NESSviewer crashed at startup. It now skips the load.
Software tab
- The software list now uses the CPE (Common Platform Enumeration) data in your scans instead of a built-in plugin list, so new products are detected automatically.
- A new Version column shows each item's version where it can be found.
- Linux package names no longer include the extra detail the scan appends, so the same package groups together across scans.
- The Red Hat package-list header no longer shows up as a software entry.
More on NESSviewer
- NESSviewer overview: what it does and how it compares
- User guide: how to use it
- License agreement: the NESSviewer EULA
- All downloads: every product’s current version