Guide 022 decision guide

CVSS severity versus practical exploitability in your application

Use CVSS severity alongside application evidence without confusing a score with exploitability, local exposure or the urgency of a specific repair.

Short answer: A CVSS score describes a vulnerability under stated metrics. Practical exploitability asks whether an attacker can satisfy the conditions in your deployed application and reach a harmful effect. Use the published CVSS score and full vector as a common starting point, then check the deployed component, attacker access, entry point, prerequisites, and effective controls. Keep the local assessment and its evidence beside the score. The answer changes when deployment, configuration, controls, or threat evidence changes. Neither a high Base score nor a low one settles your fix order by itself.

This distinction matters most when a scanner presents an alarming advisory without a usable path, or a bespoke application bug has no CVE score at all. A source trace can establish a code defect without demonstrating exploitation in production. Keep that distinction when describing the evidence, and do not read a score of 9.0 as a 90% chance of compromise.

What CVSS actually contributes

FIRST's CVSS v4.0 specification defines Base metrics for characteristics such as attack vector, privileges, user interaction, attack requirements, and impact. It also defines Threat and Environmental metric groups, which can change the score, and Supplemental metrics, which add context without changing it. The public score you inherit from an advisory is often a CVSS-B Base assessment. A consumer can add Threat and Environmental metrics and label the result accordingly, for example CVSS-BTE when both groups are applied. FIRST says those local choices are the consumer's responsibility.

Record the version, vector, score nomenclature, publisher, and date. “Critical 9.8” without a version or vector hides assumptions. Do not quote a vendor's Base score as though you recalculated an Environmental score for your deployment. If you disagree with a metric, state which one, the evidence, and the resulting local assessment. The CVSS v4.0 user guide gives the scoring interpretation; the consumer implementation guide explains how consumers can use the metrics.

CVSS can express some environmental differences, but a local remediation decision still needs facts that a published score cannot know: which exact build is running; whether the affected method is invoked; whether an untrusted actor supplies the input; what data that actor can reach; whether a gateway or service-specific control blocks the path; and who can repair it this week. A compensating control belongs in the local evidence, not as an undocumented reason to ignore the alert.

Read a complete vector before changing it

Use FIRST's published example for MySQL Stored SQL Injection, CVE-2013-0375, to learn the notation. This is a standards example, not a newly assessed vulnerability or a claim that a reader's installation is affected. The CVSS v4.0 user guide reports:

CVSS-B 5.1
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

CVSS-BE 4.9
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/MAV:A

The numbers above are FIRST's published example results, not a new calculator run. The second vector preserves every Base metric and appends Modified Attack Vector MAV:A. FIRST permits that local choice when there is high confidence that a network vulnerability is on a secure network unavailable from the internet. A label such as “internal” is not that evidence.

Read the first vector in groups:

Part What it records in this example
AV:N/AC:L/AT:N Network attack vector, Low attack complexity, no attack requirements selected.
PR:L/UI:N Low privileges required and no user interaction.
VC:N/VI:N/VA:N No impact selected for the vulnerable system's confidentiality, integrity or availability.
SC:L/SI:L/SA:N Low subsequent-system confidentiality and integrity impact, no subsequent-system availability impact.

Do not copy those impact values into a different SQL injection finding. They describe this example's system boundaries and effect. FIRST's specification defines the metrics; the actual vulnerability evidence determines which values belong in your assessment.

Compare two deployments of the same flaw

Now use two hypothetical deployments only to examine the local decision. No network configuration or exploit was inspected.

Local record Deployment Public Deployment Restricted
Affected behavior Assume the example's vulnerable behavior is applicable. Same assumption; restriction does not remove the flaw.
Network evidence Effective route reaches the service over a public network under the required credentials. Effective routing and filtering restrict the service to the verified secure network; alternate paths were checked within the declared scope.
Assessment action Retain the supplied Base vector and record applicability. Record a separate consumer assessment with MAV:A only if the facts satisfy FIRST's definition. Preserve the original Base assessment.
Missing evidence that blocks a downgrade None stipulated for this exercise. A design drawing alone, an unknown direct endpoint or a missing current policy would leave the proposed modification unsupported.

A firewall purchase order cannot justify MAV:A. A policy file without its attachment to the running service cannot either. The evidence must establish the effective restriction, including the relevant alternate entry points. If that evidence later expires or a public route is added, reassess the local metric rather than silently retaining yesterday's lower result.

A lower score still does not schedule the engineer

Suppose Restricted supports an upcoming reconciliation operation and its maintenance owner is available today. Public is temporarily protected by a separately verified service restriction and has a scheduled correction tomorrow. A business owner might fund Restricted's update first. That order is a scheduling decision, not a reason to change the Base vector or pretend the public deployment was never vulnerable.

Conversely, a time-sensitive external exploitation signal may justify bringing Public forward. Keep that evidence and any Threat metrics distinct from a statement that this particular installation was attacked. EPSS predicts in-the-wild exploitation for published CVEs, while KEV records cataloged exploitation evidence. Neither supplies a service-specific compromise finding.

The completed decision record has three separate lines:

Publisher/standards assessment: retain FIRST's cited CVSS-B vector and 5.1 result with its source and version. Consumer assessment: for the hypothetical restricted deployment only, adopt the documented MAV:A interpretation and retain FIRST's example 4.9 result; actual use requires current deployment evidence and a fresh official-calculator check. Work order: engineering owner chooses the maintenance slot using business impact, temporary controls, verification capacity and deadlines; no score is edited to rationalize that order.

For a real advisory, copy its actual publisher, vector and publication date instead of borrowing this example. Use FIRST's official calculator for your complete selected metrics and retain the resulting vector. If a crucial metric cannot be justified, label the local assessment provisional and assign the missing evidence rather than inventing a precise answer.

Keep the published assessment and the local argument side by side

A practical review should make it easy to see which facts came from the advisory and which came from your environment. Use separate columns or records, even when the final score is unchanged. This prevents a later reviewer from assuming that an advisory publisher examined your gateway or that your team endorsed every assumption in the published vector.

For the Restricted deployment, the local argument is about a specific enforced network boundary. Record its source, attachment to the service, relevant alternate paths and the date checked. If the evidence consists only of an architecture diagram, the local metric change remains proposed. You can still schedule an update while platform collects better evidence; uncertainty about a modified metric is not a reason to defer an otherwise appropriate patch.

A useful review conversation has three passes. First, verify applicability: is the affected behavior actually present in the selected product and version? Second, examine the vector: which metric assumptions are supported for the chosen scoring method? Third, decide response: what can the owner repair or contain, and when? Mixing the passes often produces a score edited to justify an already preferred schedule.

For example, a business owner may explain that the Restricted service handles a time-sensitive reconciliation even though fewer actors can reach it. That can raise the work priority without changing the network evidence. Alternatively, platform may discover a second public listener, invalidating the proposed restriction metric while the business workflow remains the same. The record should show which of these changes occurred.

Explain the result without implying a probability

When reporting upward, translate the distinction into one sentence about consequence and one about access. “The affected operation can alter the selected records; the reviewed deployment restricts access to a defined network and required credentials” is more useful than claiming that a numerical reduction means a proportional reduction in real-world risk. The score is calculated according to its metric system; it is not an observed percentage of successful attacks.

If the reader asks whether the service is safe until the maintenance window, answer with the controls and uncertainty rather than the score alone. Identify the effective restriction, the remaining eligible actors, the monitoring or incident information available and the next change that would prompt reassessment. Do not invent a guarantee that a bounded actor cannot misuse the vulnerable behavior.

For a custom application flaw without a published advisory, avoid borrowing a nearby CVE's vector simply to fill the field. Establish the actual system boundary and effect, select metrics only when they can be justified, and retain a plain-language priority decision if a formal score is not useful. A precise-looking number based on the wrong scenario is less informative than an honest unscored finding with clear evidence and ownership.

The value of CVSS in this workflow is shared vocabulary and explicit assumptions. The value of the local record is showing whether those assumptions describe the application being operated today. Both are useful when their limits remain visible.

Common mistakes that distort the answer

  • Treating Base as your environment. The Base vector describes a general vulnerability; local controls and asset importance require separate assessment. Do not edit a publisher's vector silently.
  • Calling “not internet-facing” impossible to exploit. Customer accounts, internal integrations, and compromised credentials can create other entry paths. Name the actor and boundary.
  • Equating a scanner alert with a confirmed vulnerability. A package match or source line is a lead. Check the vulnerable code path and counterevidence before approving a finding.
  • Calling absent threat intelligence proof of safety. A CVE missing from KEV or with a low EPSS value may still matter in your environment; a custom bug may have no CVE at all.
  • Closing on patch merge. Verify the new deployed revision and original unsafe path. A dependency update that never reaches the running service has not reduced its exposure.

For your next high-scoring alert, preserve its full vector, identify the local metric you propose to change, and attach the evidence that justifies that change. Bring that record to the AppSec lead using the broader limited-capacity prioritization method.