Safeguard
AI Security•

Why is a CVSS score from an LLM not a risk score?

CVSS measures severity, not risk, and the environment part is yours to fill in. Here is why asking an LLM for one number hides the missing context.

Safeguard Security Team
4 min read

CVSS measures how severe a flaw is in the abstract. Risk also depends on exploitation and on your environment, which a model cannot see unless you tell it. So an LLM-produced CVSS number is a rough guess at the base score, and it should never stand in for a risk decision.

What FIRST says CVSS is for

The CVSS v4.0 user guide states that Base scores measure severity and "should not be used alone to assess risk". The groups are separate on purpose:

  • Base: intrinsic qualities that stay constant over time and across environments.
  • Threat: characteristics that change over time, such as known exploitation.
  • Environmental: characteristics unique to your environment, including the confidentiality, integrity and availability requirements.

The guide also says applying Threat and Environmental metrics is the responsibility of the CVSS consumer, meaning you. Providers and the NVD typically publish only Base scores, labelled CVSS-B.

Where an LLM goes wrong

Ask a model "what is the CVSS of this CVE" and three things can happen.

  1. It recalls a published score correctly. Useful, but it is a lookup you could do directly.
  2. It recalls an old or different score, or one for another CVE, and states it flatly.
  3. It invents a vector string that looks plausible.

In none of these cases did it learn your environmental facts. It does not know that the affected service sits behind a gateway, handles no sensitive data, or is internet-facing and holds customer records.

A division of labour that works

InputWho provides it
Base score and vectorThe published record, copied and checked
Known exploitationA live source, dated
Asset exposure and data sensitivityYour inventory and owners
Whether vulnerable code is reachableAnalysis of your code
Wording of the ticket and the explanationThe model, from the facts above

Notice that the model's job is the last row. It is good at turning structured facts into a clear paragraph for an engineer.

How to test any tool that gives severity

Take ten findings you have already triaged by hand. Run them through the tool or prompt. Compare not only the final label but the stated reasons. If the reasons mention facts about your system that you never supplied, the output is invented context. Record disagreements and who was right.

For a fuller method see does AI severity match CVSS, how to test.

Writing the rule down

A short internal rule helps: "Severity labels come from the published record. Priority comes from severity plus exploitation plus our exposure. An AI assistant may draft the explanation but may not set the priority." Put an owner's name next to final priority decisions so the record shows a person made them.

Where Safeguard fits

Safeguard combines dependency scanning with reachability analysis and policy gates, so priority can be tied to whether the vulnerable code path is actually used in your software, with your own rules deciding what blocks a build. Try a free scan at https://gold.safeguard.sh/scan.

Quick check

Can an LLM calculate a CVSS vector from a description?

It can propose one, and that can help a reviewer start. Treat it as a draft and verify each metric against the advisory and the specification.

Who should set the Environmental metrics?

The team that owns the affected system, because they know its exposure and data. FIRST says this is the CVSS consumer's responsibility.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.