← CRA Glossary
Software Supply Chain

Software Identifier

A software identifier is a standardised string or code that uniquely identifies a specific software package, component, or product version. Common software identifiers include PURL, CPE, and SWID tags. Accurate software identifiers are essential for reliable SBOM-based CVE correlation and CRA technical documentation.

A software identifier is a standardised string or code that uniquely identifies a specific software package, component, or product version. Common software identifiers include PURL, CPE, and SWID tags. Accurate software identifiers are essential for reliable SBOM-based CVE correlation and CRA technical documentation.

Software Supply Chain

What Are Software Identifiers?

Software identifiers are standardised strings that uniquely name a software component or product version in a way that different systems and databases can reference consistently. The core problem they solve is that 'Apache Log4j 2.14.1' is an informal name — different tools and databases may represent the same component differently, making automated matching unreliable. Formal software identifiers encode the component's attributes (type, vendor, product, version) in a precisely defined format so that a vulnerability database entry 'affects CPE:2.3:a:apache:log4j:2.14.1' and an SBOM entry with pkg:maven/org.apache.logging.log4j/[email protected] can be reliably matched to the same component. The three most widely used software identifier schemes relevant to CRA compliance are CPE, PURL, and SWID tags.

CRA reference:Annex VII

CPE, PURL, and SWID: The Three Main Identifier Types

CPE (Common Platform Enumeration): Maintained by NIST and MITRE, CPE is a structured naming scheme covering hardware, operating systems, and applications. Used extensively in NVD CVE records. Format: cpe:2.3:a:vendor:product:version:*. Limitations: CPE data quality in NVD is inconsistent for package-level matching; many CVE records have missing or imprecise CPE entries.

PURL (Package URL): The modern package-level standard, covering software packages within specific ecosystems (npm, PyPI, Maven, etc.). Used in CycloneDX, SPDX, and OSV. Generally more precise than CPE for application-level components. Format: pkg:type/namespace/name@version.

SWID (Software Identification Tags): An ISO standard (ISO/IEC 19770-2) for tagging installed software. SWID tags can be embedded in software installers and queried by asset management tools. SWID is more mature for enterprise software inventory management than for open source package ecosystems.

CRA reference:Annex VII

Software Identifiers in CRA Technical Documentation

The CRA's Annex VII SBOM requirement implies that component identification should be precise enough to support CVE correlation and regulatory scrutiny. In practice:

  • For open source packages: Use PURL as the primary identifier in CycloneDX or SPDX SBOMs. Include CPE as a secondary identifier where available to maximise tool compatibility.
  • For hardware and firmware: CPE remains the more relevant standard for hardware platform identification. For OS-level components, use deb/rpm/apk PURL types.
  • For the product itself: The product should have a CPE identifier (often called the 'platform CPE') that appears in CSAF advisories to enable matching of the product against vulnerability records.
  • For proprietary components: Define internal naming conventions that are consistent across technical documentation, SBOM, and advisory records — even if formal CPE/PURL identifiers are not assigned.
CRA reference:Annex VII

Maintaining Identifier Accuracy Over Product Lifecycle

Software identifier accuracy degrades over time if not actively maintained. Common failure modes:

  • Version drift: SBOM is not updated when a component version is bumped in development, leading to incorrect version identifiers in the technical file.
  • Renamed packages: Open source packages occasionally change names or are transferred to new namespaces — the PURL changes, but the SBOM entry is not updated.
  • CPE inaccuracies: NVD CPE dictionaries have known gaps and errors; relying on CPE alone for vulnerability correlation without PURL backup increases false negative risk.
  • Unidentified custom components: Internal libraries and forked components without assigned identifiers create SBOM gaps. Assign internal identifiers with a manufacturer-specific namespace and document these consistently.

Automated SBOM regeneration on every release (via CI/CD integration) is the most reliable mechanism for maintaining identifier accuracy.

CVD Portal makes Software Identifier compliance straightforward.

Public CVD submission portal, acknowledgment tracking, Article 14 deadline alerts, and CSAF advisory generation. Free forever for EU manufacturers.

Start your free portal

Frequently asked

Does the CRA require a specific software identifier scheme?+

No. The CRA requires an SBOM identifying software components but does not mandate CPE, PURL, or SWID specifically. The practical requirement is that the SBOM must be precise enough to support CVE correlation — which means using one of the established identifier schemes rather than free-text component names. PURL is the current best practice for open source components. CPE remains relevant for operating system and hardware components.

What is a 'platform CPE' and why does it matter for security advisories?+

A platform CPE is a CPE identifier for the product as a whole (rather than its components). Platform CPEs appear in NVD CVE records and CSAF advisories to indicate which products are affected. For example, a CSAF advisory might state 'affected products: cpe:2.3:a:manufacturer:product_name:*' to identify all versions of a product as affected. Manufacturers should register CPE identifiers for their products through MITRE's CPE dictionary or ensure their CSAF advisories include precise CPE entries that can be matched by vulnerability management tools.

Can two different packages have the same PURL?+

No. A correctly formed PURL uniquely identifies exactly one package version within its ecosystem. Two packages cannot share the same PURL — the combination of type, namespace, name, and version must be unique. If the same source code is published under different names or in different ecosystems, each publication has its own PURL. Manufacturers encountering PURL collisions in their tooling have typically encountered a tool bug or incorrect metadata — these should be resolved rather than worked around.

Browse the full CRA Compliance Checklist

See how Software Identifier fits into your complete CRA compliance programme.

View checklists →