Nessus with Dradis

Step-by-step guide to importing Nessus vulnerability scan results into Dradis. Includes screenshots, field mappings, tips for managing large scan files, and common troubleshooting.

  • Upload Nessus XML to create Dradis nodes, issues, evidence, and notes
  • Combine Nessus results with results from other testing tools and automatically discard, group, and update issues
  • Centralized security engagement info and findings make it simple to collaborate across teams to keep everyone up-to-date
  • Generate high-quality, customized vulnerability or pen test reports that include Nessus findings without hours of manual work

Nessus is a popular and comprehensive vulnerability scanner tool covering security testing for a wide range of technologies, including operating systems, network devices, hypervisors, databases, web servers, and critical infrastructure. With the Dradis Nessus integration, ingest the results of Nessus scans, combine the findings with other tools, update remediation information, and quickly generate a full vulnerability assessment or pentest report.

The Nessus® name, if trademarked, is the intellectual property of the vendor. Uses of the Nessus® name in this page are for identification purposes only and do not imply an endorsement by the trademark owner. Dradis is not endorsed or owned by, or affiliated with, the Nessus® vendor.

Ready to use Nessus and Dradis?
Get Started Today
Dradis Pro is a game changer. We use it regularly to track our assessments and gather artifacts for the reports. Before, we had spreadsheets, lots of emails and lots of wasted time. Now, we seamlessly integrate team members, often working remotely, and have gained in efficiency and profitability.
Allen Harper's picture

Allen Harper

Executive Vice President at Tangible Security

How to Import Nessus Results into Dradis

Nessus scans generate detailed vulnerability data — plugin IDs, CVSS scores, remediation steps, compliance checks — but consolidating those results across multiple hosts and scans into a coherent pentest report is where most teams lose hours. Dradis eliminates that gap by importing your .nessus files directly, mapping each Nessus plugin to a structured Issue with linked Evidence per host, so you can go from scan output to client-ready report without copy-pasting between tools.

What You'll Need

  • A Dradis instance (Community Edition or Professional) — get started free
  • A Nessus scan output file in .nessus format (XML v2)
  • Nessus Professional, Nessus Expert, or Nessus Essentials with a completed scan

Quick Overview

Detail Value
Dradis Plugin Dradis::Plugins::Nessus
Supported File Format .nessus (Nessus XML v2)
Available In Community Edition and Professional
Data Imported Issues, Evidence, Nodes (hosts), Host properties
Typical Import Time ~5 seconds for 30 findings, ~30 seconds for 500+

How Nessus Data Maps to Dradis

When you import a .nessus file, the Dradis Nessus plugin parses the XML v2 format and creates three types of objects:

  • Nodes: Each <ReportHost> in the Nessus file becomes a Node in Dradis. The node label is set to the hostname (e.g., scanme.insecure.org) and host properties like IP address, FQDN, operating system, and MAC address are stored as node properties. All host nodes appear under the Scanner output parent node in the sidebar.

  • Issues: Each unique Nessus plugin (identified by pluginID) becomes a single Issue in Dradis. If the same plugin fires across 10 hosts, Dradis creates one Issue and links it to all 10 hosts through Evidence. The Issue contains the vulnerability metadata: plugin name as the title, description, solution, CVSS scores, and references.

  • Evidence: For every host where a plugin fires, Dradis creates an Evidence entry that links the Issue to the specific Node. Evidence captures the port/protocol combination (e.g., tcp/443) and the plugin_output — the host-specific technical details Nessus observed during the scan.

This structure means you avoid duplication: the vulnerability description lives in one place (the Issue), while host-specific details live in Evidence. When you generate a report, you can pull from both.

Default Field Mapping: Issues

The Nessus plugin maps these fields to each Issue by default:

Dradis Field Nessus Source Template Variable
Title pluginName attribute {{ nessus[report_item.plugin_name] }}
CVSSv3.BaseScore <cvss3_base_score> {{ nessus[report_item.cvss3_base_score] }}
CVSSv3.Vector <cvss3_vector> {{ nessus[report_item.cvss3_vector] }}
Type Static value Internal
Description <description> {{ nessus[report_item.description] }}
Solution <solution> {{ nessus[report_item.solution] }}
References <see_also> (all entries) {{ nessus[report_item.see_also_entries] }}

Default Field Mapping: Evidence

Dradis Field Nessus Source Template Variable
Location protocol + port attributes {{ nessus[evidence.protocol] }}/{{ nessus[evidence.port] }}
Output <plugin_output> {{ nessus[evidence.plugin_output] }}

Default Field Mapping: Host Notes

Dradis Field Nessus Source Template Variable
Title Static value Nessus host summary
Host information Multiple <tag> elements Name, IP, FQDN, OS, MAC, NetBIOS
Scan information HOST_START / HOST_END tags Scan start/end timestamps

Complete Source Fields Reference

Beyond the defaults, the Nessus plugin exposes over 50 additional fields you can use in custom templates (available via the Mappings Manager in Dradis Pro):

Issue fields (report_item.*):

Field Description
report_item.plugin_id Nessus plugin ID number
report_item.plugin_name Plugin title
report_item.plugin_family Plugin category (e.g., "Web Servers", "General")
report_item.severity Numeric severity (0=Info, 1=Low, 2=Medium, 3=High, 4=Critical)
report_item.risk_factor Text risk level (None, Low, Medium, High, Critical)
report_item.synopsis Brief one-line summary
report_item.description Full vulnerability description
report_item.solution Remediation guidance
report_item.see_also_entries Reference URLs (newline-separated)
report_item.cvss3_base_score CVSSv3 base score
report_item.cvss3_vector CVSSv3 vector string
report_item.cvss3_temporal_score CVSSv3 temporal score
report_item.cvss3_temporal_vector CVSSv3 temporal vector
report_item.cvss3_impact_score CVSSv3 impact subscore
report_item.cvss_base_score CVSSv2 base score
report_item.cvss_vector CVSSv2 vector string
report_item.cvss_temporal_score CVSSv2 temporal score
report_item.cvss_temporal_vector CVSSv2 temporal vector
report_item.vpr_score Tenable Vulnerability Priority Rating
report_item.exploit_available Whether public exploits exist (true/false)
report_item.exploitability_ease Exploit difficulty description
report_item.exploit_code_maturity Exploit maturity level
report_item.exploit_framework_metasploit Metasploit module available
report_item.metasploit_name Metasploit module name
report_item.exploit_framework_canvas CANVAS exploit available
report_item.exploit_framework_core Core Impact exploit available
report_item.cve_entries CVE identifiers (newline-separated)
report_item.bid_entries Bugtraq IDs (newline-separated)
report_item.cwe_entries CWE identifiers (newline-separated)
report_item.xref_entries Cross-reference IDs (newline-separated)
report_item.plugin_publication_date When the plugin was first published
report_item.plugin_modification_date Last plugin update date
report_item.vuln_publication_date When the vulnerability was disclosed
report_item.patch_publication_date When the vendor patch was released
report_item.plugin_version Plugin revision number
report_item.plugin_type Detection method (remote, local, combined)
report_item.age_of_vuln How long the vulnerability has been known
report_item.product_coverage Tenable product coverage level
report_item.threat_intensity_last_28 Recent threat activity level
report_item.threat_recency Time since last threat activity
report_item.threat_sources_last_28 Recent threat source count
report_item.port Port number
report_item.protocol Protocol (tcp/udp/icmp)
report_item.svc_name Service name (http, ssh, etc.)
report_item.plugin_output Raw scan output

Evidence fields (evidence.*):

Field Description
evidence.port Port where the finding was detected
evidence.protocol Protocol (tcp/udp)
evidence.svc_name Service name
evidence.severity Numeric severity level
evidence.plugin_output Host-specific plugin output

Host fields (report_host.*):

Field Description
report_host.name Hostname or IP from the scan target
report_host.ip IP address
report_host.fqdn Fully Qualified Domain Name
report_host.operating_system Detected OS
report_host.mac_address MAC address
report_host.netbios_name NetBIOS name
report_host.scan_start_time When the host scan started
report_host.scan_stop_time When the host scan finished

Compliance fields (compliance.*, available in Evidence):

Field Description
compliance.cm_actual_value Actual value found on the host
compliance.cm_audit_file Compliance audit file used
compliance.cm_check_id Compliance check identifier
compliance.cm_check_name Human-readable check name
compliance.cm_info Additional compliance information
compliance.cm_output Compliance check output
compliance.cm_policy_value Expected policy value
compliance.cm_reference Compliance framework references (PCI, CIS, etc.)
compliance.cm_result Result: PASSED, FAILED, or WARNING
compliance.cm_see_also Reference URLs
compliance.cm_solution Remediation for compliance failures

Step-by-Step: Importing Nessus Results

Step 1: Export Results from Nessus

In the Nessus web interface:

  1. Navigate to Scans and select your completed scan.
  2. Click the Export button in the top-right corner.
  3. Select Nessus from the export format options. Do not choose CSV or HTML — only the .nessus XML format preserves the full data structure that Dradis can parse (plugin metadata, CVSS vectors, compliance data, and host properties).
  4. Save the downloaded .nessus file to your local machine.

The .nessus file is an XML document following Nessus's v2 schema (NessusClientData_v2). Each <ReportHost> contains <ReportItem> elements, one per plugin finding per port.

Step 2: Open Your Dradis Project and Navigate to Upload

Log into Dradis and open your project. Click the Upload tab in the navigation bar.

You'll see the Upload Output Files form with three sections: tool selection, record state, and file selection.

Dradis Upload page showing the three-step upload form The Upload interface in Dradis. Step 1 (highlighted) selects the plugin, step 2 sets the state, step 3 selects your file.

Step 3: Select the Nessus Plugin

Click the Tool you are uploading output from dropdown. You can type "Nessus" in the filter field to quickly find it, then select Dradis::Plugins::Nessus.

Plugin dropdown filtered to show Nessus Type "Nessus" in the filter field (1) to quickly locate the Dradis::Plugins::Nessus option (2).

After selecting, the dropdown will show Dradis::Plugins::Nessus as the active plugin.

Nessus plugin selected in the dropdown Dradis::Plugins::Nessus selected and ready for file upload.

Step 4: Upload Your .nessus File

Click Choose File and select your .nessus file. The upload begins automatically once the file is selected — there is no separate submit button. You'll see the filename and size appear in the Output console on the right.

Upload in progress with file selected The file is uploading. The progress bar (1) shows upload status, and the Output console (2) will display the import log.

Step 5: Review the Import Log

The Output console streams the import progress in real time. You'll see entries like:

Creating new issue (plugin_id: 51192) Adding reference to this host Creating new issue (plugin_id: 10287) Adding reference to this host ... Report processed. Worker process completed.

Each "Creating new issue" line means a new Nessus plugin was encountered for the first time. "Adding reference to this host" means Evidence was created linking an existing Issue to the current host.

Import complete showing the output log Import complete. The Output console (1) shows all created issues and host references. "Worker process completed" confirms a successful import.

Step 6: Explore Imported Issues

Click the Issues tab to see all imported Nessus findings. Each unique Nessus plugin becomes one Issue, displayed with its title, affected hosts, tags, and state.

Issues list showing imported Nessus findings The Issues tab (1) shows all imported findings. The table (2) displays each issue with its title, affected hosts, and state.

Click any Issue to see its full detail view. The fields map directly from the Nessus plugin data: Title from pluginName, Description from <description>, Solution from <solution>, and CVSS scores from the corresponding XML elements.

Detail view of a single imported Nessus issue Issue detail view. The breadcrumb (1) shows navigation context. The sidebar (2) lists all issues for quick switching. The main content area (3) displays the imported fields: Title, CVSSv3 scores, Type, and Description.

Step 7: Review Host Nodes and Evidence

Navigate back to the project overview or expand the Scanner output node in the sidebar. Each host from the Nessus scan appears as a child node — in this example, scanme.insecure.org and snorby.org.

Node tree showing imported hosts in the sidebar The sidebar node tree (1) shows the Scanner output parent with individual host nodes (2) for each scanned target.

Click a host node and select the Evidence tab to see all findings linked to that specific host. Each Evidence entry shows the Issue title, the host label, and the port/protocol combination where the finding was detected.

Evidence tab showing host-specific findings The Evidence tab (1) for scanme.insecure.org lists every finding detected on that host, with the Issue title (2) and affected location.

Tips for Working with Nessus Data in Dradis

Understanding the Plugin ID Deduplication

Nessus often detects the same vulnerability on multiple hosts and ports. Dradis handles this intelligently: the first time a pluginID is encountered during import, it creates an Issue. For every subsequent occurrence (on a different host or port), it creates only Evidence linking back to that same Issue. This means if Nessus finds "SSL Certificate Cannot Be Trusted" on 50 hosts, you get one Issue with 50 Evidence entries — not 50 duplicate issues cluttering your project.

Combining Nessus with Nmap for Richer Context

Nessus provides vulnerability and compliance data, but its service detection is secondary to its vulnerability checks. Import an Nmap scan of the same targets into the same Dradis project to get detailed service banners, OS fingerprinting, and port state information alongside your Nessus vulnerabilities. The host nodes will merge: if both tools scanned 192.168.1.100, the node will contain Evidence from both Nessus and Nmap under the same host.

Handling Nessus Compliance Checks

If your .nessus file includes compliance audit results (from Nessus Compliance Checks or SCAP audits), the Dradis plugin imports the cm:compliance-* fields as Evidence. You can access compliance-specific data like compliance.cm_result (PASSED/FAILED), compliance.cm_policy_value (expected value), and compliance.cm_actual_value (what was found on the host). In Dradis Pro, use the Mappings Manager to create a custom Evidence template that surfaces these compliance fields prominently.

Filtering Informational Plugins Before Import

Nessus scans typically include many informational plugins (severity 0) like "Nessus Scan Information" (plugin 19506) and "Nessus SYN Scanner" (plugin 11219). The Dradis plugin automatically skips certain special plugins — plugin ID 0 (empty placeholders), 11219 (SYN Scanner), 34220 (Netstat Portscanner), and 22964 (Service Detection) — which are converted to node services instead of issues. However, other informational plugins will still be imported. If you want a cleaner import, filter your Nessus export to exclude severity 0 plugins before uploading to Dradis.

Using the VPR Score for Prioritization

Tenable's Vulnerability Priority Rating (VPR) is available via the report_item.vpr_score field. VPR incorporates threat intelligence and exploit maturity beyond what CVSS provides. In Dradis Pro, you can use the Rules Engine to automatically tag or categorize issues based on their VPR score — for example, auto-tagging anything with VPR >= 7.0 as "Critical Priority" to focus your remediation recommendations.

Troubleshooting

"Worker process completed" but No Issues Appear

This usually means the plugin selection was wrong. Verify you selected Dradis::Plugins::Nessus (not another plugin). Also check that your file is actually in .nessus XML v2 format — if you exported as CSV or HTML from Nessus, the plugin cannot parse it. Open the file in a text editor and confirm it starts with <?xml and contains <NessusClientData_v2>.

Import Completes but Only a Few Issues Appear

If your scan produced hundreds of findings but only a handful imported, the file may be truncated or corrupted. Re-export from Nessus and verify the file ends with </NessusClientData_v2>. Also check the Output console log for parsing errors — the plugin will skip malformed <ReportItem> elements and continue processing the rest of the file.

"undefined method" or Plugin Error During Import

If you see a Ruby error in the Output console, the .nessus file may contain XML elements the plugin doesn't expect. This can happen with very old Nessus versions (v1 format) or files that have been manually edited. Ensure you're using Nessus XML v2 format (any Nessus 6.x or later produces this format by default).

Large File Takes Too Long or Times Out

For very large .nessus files (100MB+, thousands of hosts), the import may take several minutes. The Dradis worker processes the file synchronously. If the import appears stuck, check the Dradis server logs (log/development.log or log/production.log) for progress. For extremely large scans, consider splitting the Nessus export by host group or scan policy before importing.

Fields Show "n/a" in the Issue Detail

The n/a value appears when a Nessus plugin doesn't include a particular XML element. For example, many older or informational plugins lack <cvss3_base_score> or <cvss3_vector>, so those fields display n/a. This is expected behavior — the plugin faithfully reports what Nessus provides. You can edit the Issue manually in Dradis to fill in missing values, or use the Mappings Manager (Pro) to remap fields to alternative sources.

What's Different in Dradis Pro?

Feature Community Edition Professional
Nessus file import Yes Yes
Default field mapping Fixed template Customizable via Mappings Manager
Custom Issue/Evidence templates No Yes — remap any Nessus field to any Dradis field
Rules Engine No Yes — auto-tag, categorize, or assign issues by severity, VPR score, plugin family, etc.
Report generation with Nessus data Manual (HTML export) Automated Word/Excel reports with Nessus field placeholders
Integration with Jira/ServiceNow No Yes — push Nessus findings as remediation tickets
Multi-project Nessus imports Manual per project Project templates with pre-configured Nessus mappings

The Mappings Manager in Pro is particularly valuable for Nessus imports because Nessus provides far more fields than the default template uses. You can build custom Issue templates that pull in VPR scores, exploit availability, CVE lists, patch dates, and threat intelligence data — creating richer reports without manual data entry. Request a demo to see the Mappings Manager in action.

FAQ

Does Dradis support all Nessus versions?

Dradis supports the Nessus XML v2 format (NessusClientData_v2), which has been the default export format since Nessus 5.x. Any scan exported from Nessus 6.x, 7.x, 8.x, 10.x, or Nessus Expert/Professional will work. The legacy Nessus v1 XML format (.nessus files from Nessus 3.x and earlier) is not supported.

Can I import multiple Nessus files into the same project?

Yes. Each import adds new Nodes, Issues, and Evidence to the existing project. If you import a second .nessus file that contains the same host, the existing Node will be reused and new Evidence will be added under it. Issues are deduplicated by pluginID — if the same plugin already exists as an Issue from a previous import, the plugin creates new Evidence linking to the existing Issue rather than creating a duplicate.

What happens if I re-import the same Nessus file?

Dradis will create duplicate Evidence entries for the same host/plugin combinations. The Issues themselves won't be duplicated (they're matched by pluginID), but you'll get a second set of Evidence entries. If you need to re-import cleanly, delete the existing Nodes and their Evidence first, or start a new project.

How does Dradis handle the Nessus severity levels?

Nessus uses numeric severity levels 0-4 (Info, Low, Medium, High, Critical). These are available through the report_item.severity and evidence.severity fields, as well as the text-based report_item.risk_factor. The default template doesn't include severity as a standalone field, but you can add it via the Mappings Manager in Dradis Pro, or manually tag issues after import.

Does the plugin import Nessus compliance check results?

Yes. If your .nessus file contains compliance data (from audit files), the plugin imports the cm:compliance-* namespace fields into Evidence. You can access check names, pass/fail results, expected values, actual values, and remediation guidance through the compliance.* field family. This is particularly useful for PCI DSS, CIS Benchmark, and DISA STIG audits where you need to report on both vulnerabilities and compliance posture.

Seven Strategies To Differentiate Your Cybersecurity Consultancy

You don’t need to reinvent the wheel to stand out from other cybersecurity consultancies. Often, it's about doing the simple things better, and clearly communicating what sets you apart.

  • Tell your story better
  • Improve your testimonials and case studies
  • Build strategic partnerships

Your email is kept private. We don't do the spam thing.