Skip to main content

Overview

Severity alone does not tell you what to fix first. CybeDefend computes a Priority Score for every detection — a weighted blend of four orthogonal signals — and exposes both the final score and the per-signal contributions so triage decisions are fully transparent.

Multi-signal

CVSS 4.0 environmental score · EPSS percentile · Exploitability · Business context

0–100 Score

A single user-facing number (priorityScore) sortable across all scanners

Priority Levels

Mapped into Critical Urgent · Urgent · Normal · Low · Very Low buckets

Full Decomposition

Each detection exposes the exact contribution of every signal

The formula

The internal composite score is a weighted sum of four normalized signals, each in [0, 1]:
The user-facing priorityScore is compositeScore × 100 (rounded to one decimal, bounded to [0, 100]).

Default weights

Weights are configured at the platform level (PRIORITY_WEIGHT_* env vars) and must always sum to 1.0. When EPSS is unknown for a detection, w2 is dropped and w1 / w3 / w4 are renormalized so the score remains comparable.

Signals in detail

1. CVSS 4.0 (environmental)

The CVSS 4.0 environmental score is preferred; the base score is used as a fallback, and finally a severity-default if no vector is available. The score is divided by 10 to land in [0, 1]. See CVSS 4.0 Scoring for how that score is built.

2. EPSS percentile

EPSS (Exploit Prediction Scoring System) percentile estimates the probability that a vulnerability will be exploited in the next 30 days, relative to all other CVEs. CybeDefend ingests EPSS for SCA and Container findings where a CVE identifier is available.

3. Exploitability

A qualitative verdict mapped to a numeric score:
For SCA detections, when Exploitable Path marks a dependency as unused, the exploitability contribution is forced to 0 — even before the verdict pipeline runs.
The verdict can come from three sources, persisted in exploitabilitySource:
  • static — heuristics on file path (test / vendor / example code is demoted) and reachability.
  • agent — Cybe Analysis LLM verdict with rationale.
  • manual — overridden by a user.

4. Context

The Context signal averages two project-level inputs: Context = (BusinessCriticality + DataClassification) / 2

Priority levels

The composite score is mapped to a discrete priority level used by filters, dashboards, and policy rules:
Thresholds are configurable platform-wide (PRIORITY_THRESHOLD_* env vars).

Manual override

A user with the right permission can pin a priority manually on a detection. When set:
  • The composite score is no longer recalculated automatically.
  • The detection is flagged with priorityManualOverride: true and isManualOverride: true in the decomposition response.
  • Subsequent scans, Security Context changes, or EPSS refreshes will not touch the priority until the override is cleared.

Inspect the calculation

Every detection exposes a priority decomposition endpoint that returns the exact composition of its score:
Response (abbreviated):
Use the decomposition to explain to a developer why a vulnerability landed at a given priority — particularly useful when the Security Context or exploitability verdict moves a finding up or down.

How it impacts your workflow

  • Sorting — the Vulnerability List can be sorted by Priority Score across all scanners.
  • Filtering — filter by priority level (Critical Urgent, Urgent, Normal, Low, Very Low).
  • Top Vulnerabilities widget — see the Top Vulnerabilities page.
  • Policies — Policy Management can gate merges/deploys on priority-level rules.
  • Reports — emailed reports group findings by priority instead of raw severity.

Related: CVSS 4.0 Scoring · Exploitable Path · Policy Management · Top Vulnerabilities