Safeguard
Developer Tools•

Can a CVE record carry a purl (Package URL) now? CVE format 5.2

CVE Record Format 5.2.0 added support for Package URL identifiers in affected items. See what changed, what it helps with, and what still needs care.

Safeguard Security Team
3 min read

Yes. CVE Record Format version 5.2.0, deployed on 29 October 2025, added support for Package URL (purl) identifiers through a packageURL property on the affected array items. It is a non-breaking change, and it only helps for records whose publishers choose to fill it in.

What the update says

The cvelistV5 repository notes the 5.2.0 release. It lists these changes:

  • support for PURL identifiers using the packageURL property within the affected array items
  • additionalProperties set to false for the affected array items
  • updated example records, including a purl example
  • documentation and infrastructure work for future format updates

The same note says CVE Services 2.6.0 went with it. Earlier format versions had no purl field, so matching to open source packages relied on other fields.

How open source packages were identified before

The version encoding documentation says commercial products use vendor and product, while open source packages use collectionURL and packageName. Records could also carry CPE strings. That left scanners to guess a mapping from a CVE's names to an ecosystem's names, which is a common source of missed or false matches. Our post on purl or CPE, which identifier an SBOM should use explains why.

What a purl field improves

A purl names the ecosystem, the package name and optionally a version in one string, such as an npm or Maven coordinate. With a purl in the record:

  • matching an SBOM component to a CVE becomes a string comparison on a defined format
  • fewer name collisions across ecosystems (see same package name in two ecosystems)
  • cleaner joins between a CVE record and an ecosystem advisory

If you are new to the format, read what a purl is.

What it does not fix

LimitWhy it matters
Field is optionalMany records will still lack it
Old recordsRecords published before the update have no purl unless updated
Version logicThe purl names the package; version ranges still need correct version types
QualityA wrong purl is worse than none; validate on ingest

The practical rule is to prefer a purl when present, fall back to collectionURL and packageName, and use CPE as a last resort.

A parser checklist

  1. Read the format version in the record and validate against the matching schema.
  2. If the affected item has a packageURL, normalize it and use it as the primary key.
  3. Else use collectionURL plus packageName, mapped to the ecosystem.
  4. Compare versions using the record's version type.
  5. Log which identifier produced each match, so a wrong match can be traced.

Where Safeguard fits

Safeguard provides SBOM and dependency scanning, where components are identified by package coordinates. Try a free scan at gold.safeguard.sh/scan to see how your project's components are listed.

Quick check

When did CVE support for purl arrive?

With CVE Record Format 5.2.0, noted as deployed on 29 October 2025.

Do all CVE records have a purl now?

No. The field is optional and depends on the publisher.

What should I use if there is no purl?

Use collectionURL and packageName for open source packages, then CPE if needed.

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.