Blog

Exploit Evidence, Built Into Your Priority Score: Threat Intelligence in DefectDojo Pro

Written by Chris Azuma | Aug 6, 2026, 2:29:59 PM

Every vulnerability management program eventually runs into the same question: of the thousands of findings in the queue, which ones are attackers actually using right now?

CVSS cannot answer that. EPSS gets closer by predicting exploitation probability, and the CISA KEV catalog confirms a subset of known-exploited CVEs. But teams have been stitching those signals together manually, or worse, treating a 9.8 with no known exploit the same as a 7.5 that ransomware crews are actively weaponizing.

DefectDojo Pro closes that gap. Threat Intelligence brings exploit availability, known exploitation, and threat-actor activity directly into the platform as a first-class input to Priority and Risk. No lookups, no spreadsheets, no separate feed to correlate.

What it does

Every finding with a CVE is matched nightly against a curated intelligence feed built from CISA KEV, Metasploit, Exploit-DB, Nuclei templates, and public proof-of-concept tracking. When exploit evidence exists, the finding displays a Threat Intelligence card showing:

  • An exploit-maturity badge that moves through four stages: None, PoC, Weaponized, and Active in the wild
  • A threat score from 0 to 100
  • Evidence chips that link to the receipt: the KEV entry with its listing date, ransomware usage, a Metasploit module, an Exploit-DB entry, a Nuclei template, or public proof-of-concept repositories
  • A plain-language explanation of why the finding's priority rose

This is not just a badge on a detail page. The intelligence becomes a working surface across DefectDojo:

  • A sortable, filterable Exploit Maturity column on the findings list, so you can pull up "Weaponized or Active only" in one click
  • An "Urgent & Actively Exploited" tile on the Priority Layout dashboard that counts active Urgent-risk findings with in-the-wild exploitation, with click-through to the exact filtered list
  • A notification event that fires when an existing finding's CVE gains new exploit evidence, such as landing in CISA KEV or gaining a Metasploit module. Notifications trigger on upgrades only; evidence quietly aging out never pages anyone.

How it changes scoring

DefectDojo's Priority engine already combined severity, business context, and an external score built from EPSS and KEV. Threat Intelligence generalizes that external score. Each kind of exploit evidence acts as a floor on the EPSS scale:

Evidence

Priority floor (EPSS-equivalent)

Active exploitation plus ransomware or named actor

45%

In CISA KEV and used in ransomware

30%

In KEV or exploited in the wild

20%

Weaponized public exploit (Metasploit / Exploit-DB)

15%

Nuclei detection template exists

12%

Public proof-of-concept only

8%

No exploit evidence

No change

 

The finding's external score becomes the greater of its EPSS-derived value and the highest applicable evidence floor. Intelligence only ever raises a score, never lowers it. A finding whose EPSS already exceeds the floor is unaffected, and the per-product-type external-score scalar in your Prioritization Engine settings scales this contribution exactly as it always scaled EPSS and KEV.

"Actively exploited" should never sit in a Low band

The floors above raise Priority proportionally to a finding's base severity. That leaves an edge case worth stating plainly: a Low-severity finding with a CVE that is being exploited in the wild would receive only a small absolute bump and could still land in a low Risk band. Most security teams consider that wrong.

So there is a second, categorical rule. When threat intelligence reports active exploitation in the wild, the finding's Priority is raised to at least the level of a configured Risk band, regardless of what the weighted calculation alone produced. It ships set to Needs Action, and each product type can raise it to Urgent, lower it, or clear it to switch the floor off entirely.

Like everything else in this feature, the floor only ever raises. It never moves a finding down, and a finding that already scores higher on its own is untouched. Because it applies at the Priority level, the Risk band and Risk score follow automatically, so every list, filter, chart, and SLA calculation sees the same consistent number.

What about findings without a CVE?

Threat intelligence is matched by CVE. Many findings have no CVE: most SAST results, secrets, misconfigurations, and custom rules. No vulnerability-instance threat intelligence exists for them anywhere, from any vendor.

DefectDojo handles this honestly. Those findings keep their exact current Priority and Risk, remain prioritized by every other engine input (severity, business criticality, exposure, and so on), and display a clear "no CVE to match against" message that is distinct from a CVE finding that simply has no known exploit yet.

One consequence worth knowing: in a mixed queue, as CVE-bearing findings gain exploit evidence, no-CVE findings will drop in relative rank even though their scores are unchanged. That is the intended behavior, and it reflects reality.

Built for trust and stability

Prioritization data that attackers could tamper with, or that bounces your queue around every night, is worse than no data. Threat Intelligence was designed against both failure modes:

  • Signed intelligence. Every nightly bundle is cryptographically signed by DefectDojo, and your instance refuses tampered or unsigned data.
  • No score flapping. Evidence upgrades apply the night they appear. If a source drops evidence, scores hold steady for a stability window (14 days by default), so a feed hiccup never reshuffles your queue. Genuine de-escalations settle in quietly after the window.
  • Fails closed. If your instance cannot reach the feed, the run is recorded as failed and your existing scores and evidence are left exactly as they were. Nothing degrades except intelligence freshness.

Works everywhere DefectDojo Pro runs

Cloud instances need no configuration. Self-hosted instances have three options:

  • Connected (default). The instance fetches the signed bundle nightly from intel.defectdojo.com over HTTPS. Open outbound 443 to that host, and on Kubernetes add it to your egress network policy. The fetch runs on the Celery worker rather than the web pod, so proxy settings must reach that workload too.
  • Internal mirror. Point the bundle URL environment variable at a location inside your network that you sync yourself. Signature verification still applies, so a mirror cannot alter the data.
  • Air-gapped. Transfer the bundle and its signature by hand and import them with a management command. The signature is verified on import, and the daily bundle includes EPSS data, so isolated instances get the same enrichment as everyone else.

Getting started

Threat Intelligence ships off by default. Administrators can enable it directly, or first run it in shadow mode, which computes the would-be scores without changing anything live and produces a drift report showing exactly which findings would move. For large instances, contact support for the recommended rollout.

If your team is still cross-referencing KEV in a browser tab while your findings queue sorts by CVSS, this feature exists to end that. The evidence attackers care about now lives where your prioritization happens.

Learn more in the Threat Intelligence documentation, or contact us to see it in action.