It’s Wednesday morning. Your queue has a CVSS 9.8 sitting next to a CVSS 7.5. The 9.8 has an EPSS probability of 0.001. The 7.5 has an EPSS probability of 0.78. Your auditor wants the 9.8 patched inside 24 hours because the policy says criticals get patched inside 24 hours. Statistically, the 7.5 is the one about to ruin your week. EPSS is the artifact you put in front of the auditor when you want to patch the 7.5 first without lying about what you’re doing.
That’s the whole pitch. CVSS tells you how bad a vulnerability could be in theory. EPSS tells you how likely it is that someone will actually point an exploit at it in the next 30 days. Both numbers are useful. Only one of them is trained on what attackers have actually done.
What EPSS is, briefly
EPSS is a model maintained by a working group under FIRST.org. It ingests features about a CVE (vendor, product, known exploit code, mentions in public sources, CVSS metrics, and others) and produces two numbers per CVE, refreshed daily:
- Probability (0 to 1): the model’s estimate that the CVE will be exploited in the wild in the next 30 days. 0.78 means roughly a 78% probability. This is the decision-relevant number.
- Percentile (0 to 1): where this CVE ranks against every other CVE in the catalog. 0.97 means “higher EPSS probability than 97% of CVEs.” Useful for triage thresholds, easy to confuse with probability.
If you only remember one thing: probability is the answer, percentile is the rank. Most of the misuse I’ve seen on Twitter and in vendor decks comes from someone reporting a percentile and calling it a probability.
How to actually use it
The most defensible free prioritization stack today is two layers:
- KEV as an override. If CISA KEV or VulnCheck KEV says it’s exploited, you patch, full stop. EPSS doesn’t get a vote.
- EPSS as the tiebreaker on everything else. When you have more highs and criticals than you can patch this week, EPSS is what reorders the list against attacker reality instead of theoretical worst-case.
A useful threshold to start with is EPSS probability ≥ 0.1 (roughly the top few percent of all CVEs) as “treat this as elevated even without KEV.” Tune from there based on how often it would have flagged things that actually mattered in your environment.
What it doesn’t do
EPSS is a probabilistic model trained on historical signal. That means two real limits:
- It will miss novel exploitation. Sparse public history equals a low score, even when a targeted attacker is already using the bug. EPSS is not a substitute for KEV; the model is explicit about that.
- It is silent on internal exposure. A CVE with EPSS 0.001 in something you don’t run is still zero risk. EPSS doesn’t know your inventory.
Treat EPSS as one input to a decision, not the decision itself. The reason it pairs cleanly with KEV is that KEV says “known exploited” (high confidence, narrow coverage) and EPSS says “predicted likely to be exploited” (probabilistic, broad coverage). Different failure modes, complementary use.
We use it in the pipeline
PatchDay Alert’s own digest pipeline already uses EPSS internally. The “low-audience device cap” (router, firmware, IoT, DVR CVEs limit) has a hard bypass for any CVE with EPSS ≥ 0.1, regardless of vendor or audience size. That’s the cleanest endorsement I can offer: when we wrote the rule that says “don’t let three router bugs from the same week dominate the digest,” EPSS is what we trusted to say “wait, this router bug is the exception, let it through.” We eat our own cooking.
Get it
Daily CSV download and a public API, no key required, no registration, no rate-limit grief: https://www.first.org/epss/ . The API returns JSON keyed by CVE ID and is fast enough to call inline during a triage session.
If your patch policy still treats CVSS as a single-input scoring system in 2026, EPSS is the cheapest credible upgrade available. It does not replace KEV, it does not know your environment, and it will occasionally miss something a careful human would not. It also costs nothing, updates daily, and gives you a defensible number to put next to “this CVSS 9.8 can wait until next sprint.” That’s the kind of artifact a one-person ops team needs more of, not less.