Safeguard
Developer Tools•

CVE affected versions vs NVD configurations: two ways to say what is hit

A CVE record can describe affected products by version ranges, and NVD adds CPE configurations. Learn the difference and which one a scanner should trust.

Safeguard Security Team
3 min read

A CVE record from the assigning CNA can describe affected products with version ranges and optional CPE values. NVD separately adds configurations, which are CPE based applicability statements. They are two descriptions of the same thing, written by different parties at different times, and they can disagree.

The CVE side

The CVE record format has a product object with versions and cpes. The schema says versions help meet the CNA rules, and that versions or a default status may be omitted, but not both. CPEs are described as an array of values, vulnerable and not, so several statements can be made about the same version without overlapping. There is also a CPE node type for applicability statements.

In practice, this means the CNA's statement can be phrased as "versions below 2.4.1 are affected" or "affected by default, unaffected from 2.4.1".

The NVD side

An NVD record has a configurations field, as the 2021 record we fetched on 18 October 2026 shows. Configurations use CPE naming, which describes vendor, product and version text. Our post on the CPE naming convention explains the format.

Side by side

AspectCNA version dataNVD configurations
Written byThe assigning CNANVD analysts, or imported
StyleVersion ranges, default status, optional CPEsCPE match criteria
TimingAt publicationOften after analysis
Good atPrecise ranges per productBroad product identification
Weak atDifferent CNAs vary in qualityName matching to real packages

Why packages complicate things

OSV exists because CPEs are hard to match automatically to package names and versions, as its FAQ puts it. A package called by one name in a registry may be a product named differently in CPE data. If a scanner depends on CPE only, it may miss a match or raise a false one.

What to do when they disagree

  1. Fetch the CVE record and the NVD record for the ID.
  2. Write down the affected range each one states.
  3. Read the vendor advisory and decide which matches the shipped code.
  4. Check a package level record in OSV or the ecosystem database.
  5. If your version is on the border, test it.
  6. Log the decision.

Version ranges to read carefully

Read the boundaries: introduced, fixed and last affected. The OSV schema says fixed is preferred over last_affected, because the latter can create false negatives. See OSV fixed versus last affected.

Try it yourself

Click through it at your own pace, or open it full screen.

Look at the exact version of each component, since that is the value compared with affected ranges.

Safeguard SBOM and dependency scanning records exact component versions, and reachability analysis adds whether the code is used. A free scan takes a few minutes.

Quick check

Which description should a scanner prefer?

For packages, a package level record with explicit ranges is usually easier to match than CPE text. Verify against the vendor advisory.

Can a CVE record omit its versions?

The schema says versions or a default status may be omitted, but not both.

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.