In one sentence
EPSS is a daily-updated probability, from 0 to 1, that a given CVE will be exploited in the wild within the next 30 days — a likelihood score to set beside CVSS's severity score.
Why it matters
Somewhere between 2 and 7 % of published CVEs are ever exploited in the wild, yet every one of them arrives with a CVSS score, and roughly a fifth of them are rated High or Critical. A team that patches by CVSS alone spends most of its time on vulnerabilities nobody will ever attack, while the one that gets weaponised next week sits at 7.5 in the queue. EPSS is the model that separates the two: it looks at the evidence that predicts exploitation — exploit code published, vendor, product, CWE, references, mentions on lists — and outputs a probability. Sorting the backlog by EPSS instead of CVSS catches a much larger share of the vulnerabilities that actually get exploited, for the same patching effort. FIRST publishes the numbers.
How to read it
Each CVE gets two numbers, recomputed daily by FIRST's model (v3 since March 2023, v4 since March 2025):
- The score: a probability between 0 and 1 that exploitation activity will be observed in the next 30 days.
0.02means 2 %;0.94means it is being exploited or is about to be. - The percentile: where that score sits among all scored CVEs. A score of 0.10 sounds small but is around the 94th percentile — only ~6 % of CVEs are more likely to be exploited. Most CVEs cluster below 0.01, so the percentile is what makes a score meaningful.
Thresholds are yours to pick; a common operating point is EPSS ≥ 0.1 or in CISA KEV as "fix now", EPSS ≥ 0.01 as "fix this cycle", the rest by CVSS and exposure. KEV is the complement: not a prediction but a confirmed list of CVEs with evidence of exploitation, with a due date for US federal agencies (which the rest of the world borrows as a deadline). Anything on KEV should sit at the top regardless of its EPSS score; anything with high EPSS and not yet on KEV is the early warning.
EPSS is a global probability. It knows nothing about whether you run the product or whether the vulnerable component is reachable — that is the Environmental part of CVSS or a decision framework like SSVC.
Try it yourself hands-on
Monthly patch review: the scanner lists 340 findings, 61 of them Critical or High. You have capacity for perhaps fifteen emergency changes.
- Start with the Actionable CVEs Dashboard: it shows the CVEs added to CISA KEV in the last days alongside the highest-EPSS CVEs overall. Intersect with your scanner output — anything in both lists is emergency change number one, whatever its CVSS.
- Take the rest of the 61 to the EPSS Score Lookup. Paste the CVE ids; for each you get the score, the percentile and whether it is in KEV. Sort by score. A typical spread: three above 0.5 (patch this week), eight between 0.05 and 0.5 (this cycle), fifty below 0.01 (the "Critical" label was severity, not likelihood — normal cadence).
- For the borderline ones, run the SSVC Decision Tree: exploitation state (none / PoC / active — EPSS and KEV inform this), automatable, technical impact, mission and well-being. It outputs Track, Track*, Attend or Act with the rationale, which is what goes in the change record.
- For the one your CISO asks about by name, rebuild its score in the CVSS v3.1 Calculator with Environmental metrics filled in, and present the three numbers together: severity (CVSS), likelihood (EPSS), and your decision (SSVC). That is a defensible answer to "why isn't this 9.8 fixed yet".
Common misreadings
- Low EPSS is not "safe". A 0.5 % chance per month, across a thousand internet-facing hosts, is not nothing — and targeted attackers are not modelled by a population statistic.
- Scores move. An exploit published on Tuesday can move a CVE from 0.01 to 0.9 by Wednesday; re-query at decision time, do not cache last month's export.
- EPSS is for CVEs only. Misconfigurations, missing controls and zero-days without a CVE id have no score; the absence of a number is not a low number.