A scan of a real cluster comes back with thousands of findings. Sorted by severity, the top of that list is a wall of CRITICALs — most of them in packages you do not run, or that have no fix, or that nobody is exploiting. Severity tells you how bad a CVE could be in the abstract. It does not tell you which one to open first.

Ephor now ranks findings instead of just listing them. The newest release reorders the whole vulnerability view around a simple question: of everything the scanner found, which handful is worth your morning?

Three signals Ephor already has

The ranking is built from three facts, each of which Ephor was already collecting:

Cross those three and most of the noise falls away. A finding that is running, exploited in the wild, and fixable is a different kind of problem than an identical CVE in an image you do not deploy.

Four tiers, not a made-up score

Findings land in one of four tiers:

P0  Act now   deployed + on KEV + fixable
P1  Urgent    deployed + exploitable + fixable
P2  Plan      deployed + exploitable, no fix yet
P3  Monitor   everything else

We chose tiers over a blended 0–100 risk number on purpose. A single score hides arbitrary weights behind false precision; a tier is legible and you can defend why a finding is in it. The dashboard leads with how many findings are P0 or P1 — the ones that need action now — and you can sort or filter the full list by KEV, EPSS, or whether a fix exists.

What this does and does not claim

It is worth being precise, because this is exactly where security tools oversell. Ephor knows a vulnerable package is deployed and running in your cluster, because the scanner sees the workloads and images. It does not claim the vulnerable code path is reachable or executed — that needs runtime instrumentation Ephor does not do. And KEV and EPSS describe exploitation in the wild, across everyone, not a proven exploit in your specific environment. "Running and exploitable" is a sharper filter than severity. It is not a promise that an attacker has a path in.

Where this sits

Prioritization is the layer on top of everything else Ephor does — the dashboard, triage, and remediation tracking that pick up where Trivy and Grype leave off. Self-hosted, AGPL, your data stays in your own database. The full tier rules and the threshold setting are in the Prioritization docs, and the in-between case — flagging a vulnerable image before its next scan even runs — is covered in Finding CVEs in images you haven't scanned yet.

The code is on GitHub, the scanner at holbein-io/ephor-scanner. If you run Kubernetes and your CVE list has become something you scroll past, I would like to hear whether this changes that. Open an issue, or email hello@holbein.io.