Articles / Triaging and Prioritising Findings With Real Risk Context
AppSec · Risk Prioritisation

Triaging and Prioritising Findings With Real Risk Context

Turn on enough scanners and you will drown. A large estate produces more findings than any team can fix, which means the real work of application security is not finding vulnerabilities — it is deciding which of the thousands you already know about actually matter this week. Get that ordering wrong and you spend your scarce remediation capacity on theoretical bugs while a genuinely exploitable one waits its turn in the queue.

The instinct is to sort by severity and work top-down. But a scanner's severity is an intrinsic property of the flaw — how bad it would be if exploited — divorced from your environment. A critical vulnerability in an unreachable code path on an internal tool with no sensitive data may be a lower real risk than a medium in an internet-facing service holding customer records. Severity is an input to prioritisation, not the answer.

The context that turns severity into risk

Raw findingsCVSS baseseverityContextreach, exposure, KEV/EPSSReal-riskrankFix in orderRank by raw severity→ optimises for anattacker who doesn'texist
Severity is only the input — reachability, exposure and exploitation make it risk.
  • Reachability. Does your code actually invoke the vulnerable path? An unreachable flaw is real but not exploitable, and should rank accordingly.
  • Exposure. Is the affected component internet-facing or buried behind internal networks and auth? Attack surface changes everything.
  • Exploitation in the wild. Is there a known exploit? CISA's Known Exploited Vulnerabilities catalogue and EPSS scores tell you what attackers are actually using versus what merely could be used.
  • Data and asset criticality. A flaw touching payment data or a system of record outranks the same flaw in a throwaway service.
  • Compensating controls. A WAF rule, network segmentation, or feature flag can already blunt a finding — real, but less urgent.
Why it matters: Attackers do not work down your CVSS list. They chase what is reachable, exposed, and easy. Prioritisation that ignores exploitation and exposure optimises for an adversary who does not exist.

CVSS is a base, not a verdict

CVSS base scores are widely used and widely misused. The base score deliberately excludes your environment; that is what the environmental and temporal metrics are for, and most teams never populate them. Two newer signals sharpen the picture: EPSS estimates the probability a vulnerability will be exploited in the near term, and the KEV catalogue lists what is being exploited right now. A high CVSS with a near-zero EPSS and no KEV entry is rarely where your first hour should go.

Same severity, very different urgencyCVE-A: CVSS 9.8, unreachable, internal-only, EPSS 0.02 → schedule
CVE-B: CVSS 7.5, reachable, internet-facing, in KEV → fix now

Deduplicate and correlate

Multiple tools will report the same underlying issue in different words, and a raw union of their outputs inflates the backlog with phantom work. Correlate findings across SAST, DAST, and SCA so one root cause is one ticket — and use agreement as signal: a flaw that SAST flags and DAST confirms is not a maybe. Frameworks such as SSVC (Stakeholder-Specific Vulnerability Categorization) give a repeatable decision path from these inputs to a clear action, so triage is consistent rather than dependent on whoever is on rota.

Make the ranking legible

Whatever model you adopt, developers must be able to see why a finding is ranked where it is. “Fix this because it is reachable, internet-facing, and actively exploited” gets acted on; “fix this because the tool said critical” gets argued with. Transparency in the prioritisation is what converts a ranked list into fixed vulnerabilities.

Prioritisation is discovery's second act: once you know what exists, risk context tells you what to do about it first. The estate you can rank by real exploitability is the one you can actually defend — and the finding no one contextualised is the one that sits untouched until an attacker contextualises it for you.

Test for it — in practice
  • Take your top few "critical" findings and check whether the ranking accounts for reachability, internet exposure, and KEV/EPSS — or whether it is raw CVSS, which optimises for an adversary who does not exist.
  • Ask whether a developer can see why a finding is ranked where it is; an unexplained "critical" gets argued with, not fixed.

Re-ranking a few by hand is instructive; a repeatable risk model that contextualises the whole backlog is what our assessment runs for you.

Keep reading
From Finding to Fix: Remediation Workflows That Stick