All integrations

Tenable Integration with DefectDojo

Tenable Integration with DefectDojo

Tenable is a vulnerability management vendor best known for Nessus, its network vulnerability scanner. Its product line includes Tenable Vulnerability Management (formerly Tenable.io, cloud hosted), Tenable Security Center (formerly Tenable.sc, on-premises), and Tenable Web App Scanning for DAST. These products scan hosts, network services, and web applications using Tenable's plugin library, and export results as .nessus XML or CSV, including CSV exports from Vulnerability Management workbenches. Tenable also took over Terrascan, an open source infrastructure as code scanner, when it acquired Accurics in 2021; the Terrascan repository was archived and marked no longer maintained in November 2025.

Tenable Integration with DefectDojo

We scan our server fleet with Tenable, and we have other teams running SAST, SCA, and container scanners that Tenable doesn't cover. DefectDojo is where those results meet. Importing Tenable exports, or syncing them with the DefectDojo Pro connectors, turns each plugin hit into a Finding with the affected hosts as endpoints, CVEs, CVSS data, and Tenable's own solution text. Host vulnerabilities then get the same owners, SLAs, and reports as application findings on the same Asset.

Why Tenable Matters

Most organizations' largest volume of vulnerabilities comes from operating systems, network services, and third-party software on servers. Tenable is built to find them.

  • Nessus plugins cover a very large set of software, configuration, and compliance checks, updated continuously.
  • Authenticated scans see installed packages and patch levels, not just exposed banners.
  • Exports include CVEs, CVSS vectors, Tenable's VPR, and EPSS where available, which supports risk-based prioritization.
  • Tenable Web App Scanning extends coverage to application-layer issues on the same platform.
  • Host findings alone don't show how a server's exposure relates to the application running on it. That needs a platform that holds both.

Advantages of This Integration

What we gained by sending Tenable data through DefectDojo:

  • Deduplication on plugin, severity, and CVE. Tenable Scan findings are hashed on title, severity, vulnerability IDs, and CWE, so rescans of the same hosts update existing findings instead of duplicating them.
  • Lifecycle through reimport or sync. Reimporting a new export into the same Test mitigates vulnerabilities that were patched and reopens ones that return. The Web App Scanning connector closes findings Tenable marks fixed on the next sync.
  • Prioritization data kept. CSV imports store the EPSS score on the finding and copy columns such as VPR score, CVSS v3 and v4 scores, STIG severity, and exploit framework flags into the severity justification, when the export uses those column names.
  • Application and host risk together. Tenable findings can sit on the same Asset as code and dependency findings, with SLAs, assignment, risk acceptance, and Jira push.
  • IaC coverage alongside runtime. Terrascan results import into the same platform, so a misconfiguration in Terraform and the exposure it causes can be tracked side by side.

How This Integration Works

The row covers two scan types: Tenable Scan for Tenable and Nessus exports, and Terrascan Scan for Terrascan JSON.

Option 1: Tenable Scan file import (Community Edition and DefectDojo Pro). Export scan results from Nessus, Tenable Vulnerability Management, or Tenable Security Center as .nessus or CSV. The parser chooses its XML or CSV reader by file extension (.nessus, .xml, or .csv) and accepts Nessus WAS reports in both formats. Import in the UI with Import Scan Results, or with the API:

curl "https://YOUR_INSTANCE/api/v2/import-scan/" \
  -H "Authorization: Token $DD_API_TOKEN" \
  -F "scan_type=Tenable Scan" \
  -F "file=@weekly-servers.nessus" \
  -F "product_name=datacenter-east" \
  -F "engagement_name=Weekly Network Scan" \
  -F "auto_create_context=true"

DefectDojo Pro users can run the same import with Universal Importer:

universal-importer import \
  --defectdojo-url "https://YOUR_INSTANCE.cloud.defectdojo.com/" \
  --scan-type "Tenable Scan" \
  --report-path "./weekly-servers.nessus" \
  --product-name "datacenter-east" \
  --engagement-name "Weekly Network Scan" \
  --auto-create-context

Option 2: Tenable connectors (DefectDojo Pro). Two Upstream Connectors pull from Tenable's cloud API at https://cloud.tenable.com; on-premises Tenable connectors are not available.

  • Tenable.io pulls scans from the Tenable Vulnerability Management /scans endpoint. Enter the location and a valid API key.
  • Tenable Web App Scanning imports DAST findings. It needs an access key and secret key for a user with Web App Scanning permissions, creates one Record per scanned web application, and can apply a minimum severity. Findings keep the severity Tenable reports (including recast severities) and carry the URL, parameter, payload, proof, CWE, CVE, CVSS, and EPSS where available. Only open or reopened findings are imported.

Option 3: Terrascan Scan. Run Terrascan against your IaC and write JSON:

terrascan scan -i terraform -d ./infra -o json > terrascan.json

Import it with scan_type=Terrascan Scan using the same API or Universal Importer commands. Because Terrascan is no longer maintained, plan a migration to a maintained IaC scanner for new work.

Data Granularity: What Gets Imported

Tenable Scan, .nessus (XML)

DefectDojo Field Source in .nessus Notes
Title pluginName One finding per plugin and severity across all hosts
Severity severity 0 to 4 Overridden by cvss3_base_score when present (9+ Critical, 7+ High, 5+ Medium, above 0 Low)
Description synopsis, plugin_output Plugin output added per host and port
Impact description and CVSS fields CVSS scores and vectors appended
Mitigation solution  
References see_also, xref  
Vulnerability IDs cve First CVE element per report item
CWE / CVSS v3 cwe, cvss3_vector, cvssv3 When present
Endpoints Host FQDN or IP, port, service One per affected host and port
Deduplication Hashcode Title, severity, vulnerability IDs, CWE

Tenable Scan, CSV

DefectDojo Field Source in CSV Notes
Title Name or Plugin Name Plugin name
Severity Risk, severity, or Severity Text or 0 to 4; None and unknown become Info
Description Synopsis plus Plugin Output  
Mitigation / Impact Solution or Steps to Remediate / Description  
Severity Justification VPR, EPSS, CVSS v3 and v4, STIG, exploit frameworks, XREF  
EPSS / CVSS v3 EPSS Score, CVSS V3 Vector, CVSSv3  
Component Name / Version CPE First CPE only
Vulnerability IDs CVE All CVEs found in the column
Endpoints Host or DNS Name or IP, protocol, port  

The CSV reader also understands Tenable Vulnerability Management exports with asset.* and definition.* columns and semicolon delimiters. Within one CSV, findings are kept separate per host and port.

Terrascan Scan

DefectDojo Field Source in Terrascan JSON Notes
Title category, rule_name Formatted as category: rule_name
Severity severity HIGH, MEDIUM, LOW; anything else Info
Description description  
File Path / Line file, line  
Component Name resource_type/resource_name  
Vuln ID from Tool rule_id  
Deduplication Hashcode Vuln ID from tool, title, severity, file path, line, component name

Use Cases

Weekly infrastructure scanning: A scheduled Nessus scan exports .nessus and reimports into one Test per network segment. Patched vulnerabilities close automatically, and SLA reports show which teams are behind on Critical host findings.

Cloud-first programs on DefectDojo Pro: Teams on Tenable Vulnerability Management use the connector so scans flow in on a schedule, and add the Web App Scanning connector to bring DAST findings into the same Assets.

Risk-based patching: CSV exports that include an EPSS Score column populate each finding's EPSS score, which lets a team work High findings with meaningful exploit likelihood first.

Legacy IaC coverage: Repositories still scanned with Terrascan keep reporting into DefectDojo while the team moves to another IaC tool, and the history stays with the Asset.

Operational Tips

  • Choose XML or CSV and stay with it per Test. The two readers group findings differently (XML merges hosts into one finding per plugin, CSV keeps them per host), so switching formats changes the finding count.
  • Remember the CVSS override in .nessus imports. A 4.x CVSS v3 score maps to Low rather than Medium, so review severity rules before tying SLAs to them.
  • Filter out informational plugins with minimum_severity=Low. Nessus reports many severity 0 items that are inventory rather than vulnerabilities.
  • Keep the file extension intact. The parser rejects files that don't end in .nessus, .xml, or .csv.
  • Use one Engagement per scan policy or network zone so reimport doesn't close findings from hosts that simply weren't in this scan.
  • Don't import the same Tenable scans through both files and the connector; their findings won't line up cleanly.