CVSS Scores Explained: How to Prioritize Vulnerability Findings

Your automated scanner just ran and produced 47 findings. Twelve are marked Critical. Do you drop everything and fix them all right now?

Not necessarily. CVSS scores measure potential severity — not actual risk in your specific environment. A Critical CVSS score on a vulnerability in a service that's only accessible from your internal network behind VPN is very different from a Critical score on your public login endpoint.

This matters because prioritization is where most security programs break down. Teams either treat all Criticals as equal (inefficient and creates alert fatigue) or ignore scores entirely and rely on gut feel (inconsistent and misses real threats).

Here's how CVSS actually works, and how to use it correctly for prioritization.

What CVSS Is (and Isn't)

CVSS stands for Common Vulnerability Scoring System. It's an open industry standard maintained by FIRST (Forum of Incident Response and Security Teams) for rating the severity of security vulnerabilities. The current version is CVSS v3.1.

CVSS produces a numeric score from 0 to 10 that maps to severity bands:

9.0–10.0
Critical
Typically remotely exploitable, no user interaction, high impact
7.0–8.9
High
Significant impact, may require some privileges or interaction
4.0–6.9
Medium
Moderate impact, often requires specific conditions
0.1–3.9
Low
Limited impact, difficult to exploit or minimal consequence

CVSS does not know your deployment. It doesn't know whether the vulnerable service is public or internal, what data it handles, whether you have compensating controls, or whether there's a known exploit actively used in the wild. That context is your job to apply.

How CVSS Calculates a Score

A CVSS v3 Base Score is built from eight metrics across two groups:

Exploitability Metrics

Impact Metrics

A finding with AV:Network, AC:Low, PR:None, UI:None, S:Changed, C:High, I:High, A:High is a perfect 10. This is the "unauthenticated remote code execution on a critical system" scenario. These are genuinely drop-everything situations.

Most real findings are messier. AV:Network, AC:Low, PR:Low (authenticated user), UI:None, S:Unchanged, C:High, I:Low, A:None might score 7.1 — High, but far more contextualized.

The Three Score Types: Base, Temporal, Environmental

CVSS has three score types, and most teams only use one of them.

Base Score (what scanners report)

The Base Score is intrinsic to the vulnerability — it doesn't change based on your deployment. Your scanner's severity rating is almost always the Base Score. It reflects worst-case exploitability.

Temporal Score (exploitation maturity)

The Temporal Score modifies the Base Score based on the current state of the vulnerability in the wild:

Temporal scores are rarely used in scanner output but are extremely useful for prioritization. A CVE with Base Score 9.8 that has Exploit Maturity: Proof-of-Concept is different from the same CVE with Exploit Maturity: High and active ransomware campaigns using it.

Environmental Score (your context)

The Environmental Score lets you adjust the Base Score based on your specific deployment. You can modify confidentiality, integrity, and availability requirements based on how critical the affected system is.

An authentication bypass in a development environment that has no production data should be scored differently than the same vulnerability in your payment processing service. Environmental scoring formalizes that judgment.

Few teams calculate Environmental Scores systematically, but applying the concept informally — mentally adjusting risk based on system criticality and data sensitivity — is standard practice.

CVSS vs. EPSS: A Better Prioritization Framework

CVSS tells you how bad it would be if exploited. EPSS (Exploit Prediction Scoring System) tells you how likely it is to be exploited.

EPSS is a machine learning model maintained by FIRST that assigns each CVE a probability (0–1) of being exploited in the wild within 30 days, based on threat intelligence signals. A CVE with EPSS 0.95 has a 95% chance of being actively exploited in the next 30 days. A CVE with EPSS 0.01 is unlikely to be targeted.

The insight EPSS provides is striking: the vast majority of CVEs are never exploited in the wild. CVSS scores vulnerabilities based on theoretical severity; attackers choose targets based on availability of working exploits, ROI, and threat actor toolkits.

Combining CVSS Base Score and EPSS gives you a more accurate prioritization matrix:

CVSS Score EPSS Score Priority Action
Critical (9+) High (>0.1) P0 — Immediate Fix now, 24-48hr SLA
Critical (9+) Low (<0.01) P1 — High Fix in current sprint
High (7-8.9) High (>0.1) P1 — High Fix in current sprint
High (7-8.9) Low (<0.01) P2 — Medium Fix within 30 days
Medium (4-6.9) Any P3 — Standard Backlog, regular triage

Context That CVSS Doesn't Know About

Beyond EPSS, your prioritization should incorporate four contextual factors that no scoring system captures automatically:

1. Exposure

Is the vulnerable component accessible from the internet, or only from an internal network? A Critical in an internally-facing admin panel with no public exposure deserves a different response timeline than the same vulnerability in your customer login flow.

2. Data sensitivity

What data does the affected service handle? Payment card data, personal health information, or user credentials warrant faster response than vulnerability in a marketing analytics service. Regulatory requirements (PCI DSS, HIPAA, GDPR) often formalize this into hard requirements.

3. Compensating controls

Are there upstream controls that reduce exploitability? A WAF that blocks the attack pattern, rate limiting that prevents brute force, or IP allowlisting that restricts access can all reduce effective risk below the CVSS Base Score.

4. Business criticality

How critical is the affected service to business operations? A vulnerability in your core payment processing service warrants faster response than the same vulnerability in an internal wiki.

A Practical Prioritization Workflow

Here's how to apply all of this when your scanner produces a list of findings:

  1. Sort by CVSS Base Score — this gives you a rough severity ranking to start from
  2. Apply exposure filter — is the vulnerable service internet-facing? If yes, maintain priority. If no, consider downgrading one severity level.
  3. Check EPSS — for Critical and High findings, look up the CVE's EPSS score (FIRST publishes a data feed; many scanners integrate it). Active exploits in the wild push P2 to P1.
  4. Apply data sensitivity — anything touching payment, health, or identity data stays at stated priority or higher
  5. Verify compensating controls — if a control genuinely mitigates the attack path, document it and adjust timeline accordingly
  6. Assign tickets — every finding that survives triage gets an owner and SLA

The shortcut: Most teams don't have time to run this full analysis on every finding. Apply it to Critical and High findings rigorously. For Medium and Low, use CVSS score alone plus a 30/90-day SLA — the time spent on granular prioritization of Low findings exceeds the risk reduction.

Common CVSS Mistakes

Treating Base Score as risk

Base Score is potential severity under worst-case conditions. It's a starting point for prioritization, not a final answer. Always contextualize with exposure, data sensitivity, and compensating controls.

Ignoring Medium findings indefinitely

Medium findings are often treated as permanent backlog. But a Medium vulnerability in a customer-facing authentication flow handles more practical risk than a Critical vulnerability in an internal development tool no one uses. Don't let CVSS score alone determine review frequency.

Prioritizing by count instead of severity

Twenty Low findings resolved is less meaningful than one Critical finding resolved. Track your open Critical and High counts as primary metrics — not total open finding count.

Not reassessing after context changes

A vulnerability's practical risk changes when you change its exposure. Moving a service from internal-only to internet-facing should trigger re-triage of all its outstanding findings. Deployment changes don't automatically recalculate scanner priorities.

What Good Prioritization Looks Like

A mature vulnerability prioritization process has three properties:

CVSS scores give you a starting point. Your judgment about exposure, data sensitivity, and compensating controls gives you the final priority. Both are necessary — neither is sufficient alone.

Ironimo produces findings with detailed CVSS breakdowns, exploitation context, and tool attribution — so you have the data to prioritize intelligently rather than just sort by score. Built for security teams that need to make defensible, auditable decisions.

Start free scan
← Back to blog