Safeguard
Security Guides•

How does ASPM prioritize vulnerabilities: CVSS, EPSS and KEV?

ASPM prioritizes by combining CVSS severity, EPSS exploit probability, KEV listing and your own context. What each signal means and how to combine them.

Safeguard Security Team
6 min read

ASPM tools usually prioritize by combining several signals: CVSS for severity, EPSS for the likelihood of exploitation, the CISA KEV catalog for confirmed exploitation, and local context such as whether the code is reachable and exposed. No single signal is enough on its own.

What each signal tells you

SignalSourceWhat it answersWhat it cannot tell you
CVSSFIRSTHow severe is the flaw in general?Whether it matters in your app
EPSSFIRSTHow likely is exploitation in the next 30 days?Impact on your systems
KEVCISAHas it been exploited in the wild?Whether you are exposed
ReachabilityYour code analysisDoes your code call the vulnerable part?Whether attackers can reach it
ExposureYour environmentIs the service internet facing?Severity of the flaw itself

FIRST describes CVSS as a way to capture the principal characteristics of a vulnerability and produce a numerical score reflecting its severity, now at version 4.0. It describes EPSS as a model that estimates the probability that a published CVE will be exploited in the wild in the next 30 days, published daily as a value between 0 and 1. CISA describes the KEV catalog as the authoritative source of vulnerabilities that have been exploited in the wild.

A simple way to combine them

Many teams use a tiered approach. Start with the strongest evidence and work down.

  1. Tier one. In KEV and present in a running service. Fix on your shortest timeline.
  2. Tier two. High EPSS or high CVSS, and reachable in your code. Fix on a standard timeline.
  3. Tier three. High severity but unreachable or not exposed. Schedule, and revisit if context changes.
  4. Tier four. Low on all signals. Batch with routine updates.

The exact thresholds are yours to choose. FIRST publishes guidance on setting EPSS thresholds and combining it with CVSS and KEV. Read that before picking numbers rather than borrowing a cutoff from a vendor slide.

Why not just use CVSS

A high CVSS score on a library function you never call is a real finding but not an urgent one. A medium score on an internet facing component that attackers are already using is urgent. CVSS alone ranks them the wrong way round. This is the main reason ASPM platforms add other inputs.

Why not just use EPSS

EPSS is a probability across all deployments of a flaw, not a statement about yours. It also changes daily, so a finding's rank can move. Expect that and avoid freezing a decision on a single day's value.

What to do when signals disagree

Write down the reasoning, not just the outcome. For example: "KEV listed, but the component is only used in a build tool that never ships. Reviewed by the service owner, revisit on next upgrade." A recorded reason is what makes the decision defensible later.

A worked example with three findings

The values below are invented for illustration.

FindingCVSS severityEPSSIn KEVReachableInternet facing
A: parsing library flawCriticalLowNoNoYes
B: web framework flawMediumHighYesYesYes
C: build tool flawHighLowNoNot applicableNo

A ranking by CVSS alone would put A first, then C, then B. That is the wrong order for most teams.

Applying the tier approach from earlier:

  • B is in KEV, reachable and internet facing. It is tier one, fix now.
  • A has a critical score but no call path from your code, so it is tier three, scheduled, with a recorded reason and a review date.
  • C is high severity but sits in a build tool that does not ship and is not exposed. Tier three or four, handled with routine updates.

The order becomes B, A, C. The reasoning for each is a sentence long, which is exactly what you would show an auditor or a developer who asks why.

Step by step: setting up your own priority rules

  1. List the signals you can get reliably today: CVSS, EPSS, KEV, reachability, exposure.
  2. Write two or three rules in plain language, such as "KEV plus running in production is tier one."
  3. Test the rules on fifty past findings and see whether the order matches what experienced engineers would choose.
  4. Adjust, and write down why you adjusted.
  5. Review the rules every quarter, since data sources and your estate change.

Watching for score movement

EPSS is published daily, so the score for a CVE can change. A finding that was low last month may be higher now. Decide whether your platform recalculates automatically and how you are notified. A rule such as "reopen any scheduled item when it enters KEV" is simple and effective.

Why you still need a human

A scoring scheme tells you the order to look in. It cannot know that a particular service is about to be retired, or that a fix needs a coordinated release with another team. Keep a place for judgment, and require a short written reason whenever people override the order.

Where Safeguard fits

Safeguard provides reachability analysis and zero-day discovery, plus policies and gates to turn a priority decision into a rule. Try a free scan at gold.safeguard.sh/scan.

Try it yourself

Click through it at your own pace, or open it full screen. Compare how the signals line up for one finding.

Quick check

Is a KEV listing always urgent?

It raises priority because exploitation has been observed, but you still need to confirm you run the affected component.

Does a low EPSS score mean safe?

No. It means exploitation is less likely in the next 30 days, not impossible.

Do I need all of these signals to start?

No. Begin with severity and KEV, which are simple to use, and add reachability and exposure as your tooling allows.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.