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:
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
- Attack Vector (AV) — How is the vulnerability accessed? Network (remotely over internet), Adjacent (local network), Local (requires local access), Physical (requires physical access). Network is worst.
- Attack Complexity (AC) — How hard is the exploit? Low (reliable, reproducible), High (requires specific race conditions or configurations). Low is worse.
- Privileges Required (PR) — What level of access does the attacker need? None, Low (user), High (admin). None is worst.
- User Interaction (UI) — Does exploitation require user action? None (no interaction needed), Required (victim must do something). None is worse.
Impact Metrics
- Scope (S) — Does the vulnerability affect only the vulnerable component, or can it impact other components? Changed scope (can jump to other systems) is worse.
- Confidentiality (C) — Impact on data confidentiality: None, Low, High.
- Integrity (I) — Impact on data integrity: None, Low, High.
- Availability (A) — Impact on availability: None, Low, High.
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:
- Exploit Code Maturity — Is there a proof-of-concept? An active exploit kit? Unproven vs. Proof-of-Concept vs. Functional vs. High
- Remediation Level — Is there a patch? A workaround? Or is it unmitigated?
- Report Confidence — How certain is the vulnerability? Confirmed vs. Reasonable vs. Unknown
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:
- Sort by CVSS Base Score — this gives you a rough severity ranking to start from
- Apply exposure filter — is the vulnerable service internet-facing? If yes, maintain priority. If no, consider downgrading one severity level.
- 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.
- Apply data sensitivity — anything touching payment, health, or identity data stays at stated priority or higher
- Verify compensating controls — if a control genuinely mitigates the attack path, document it and adjust timeline accordingly
- 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:
- Consistent — everyone on the team applies the same criteria, so priorities don't vary based on who runs triage that week
- Documented — when you decide to accept a risk or defer a finding, you write down why, who approved it, and when to review the decision
- Reviewable — deferred findings get reviewed on a defined cadence, not filed and forgotten
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