← 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. Receiving and tracking reports is free for all manufacturers placing products with digital elements on the EU market. Article 14 filing with the SRP-ready package is on Pro.

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.

Related terms

Software Bill of Materials (SBOM)An SBOM is a formal, machine-readable inventory of all software components - including open-source libraries, third-party dependencies, and firmware packages - that make up a product. The EU Cyber Resilience Act requires manufacturers to maintain an SBOM as part of their technical documentation.Package URL (PURL)A Package URL (PURL) is a standardised string format for uniquely identifying software packages across different package ecosystems. PURLs enable precise component identification in SBOMs, allowing vulnerability databases and security tools to reliably correlate SBOM entries with CVE records.CycloneDXCycloneDX is an open-standard SBOM format maintained by OWASP that represents software components, their relationships, and associated metadata in a machine-readable structure. It is one of the two dominant SBOM formats alongside SPDX and is widely used for CRA compliance documentation.SPDX (Software Package Data Exchange)SPDX (Software Package Data Exchange) is an ISO-standardised SBOM format (ISO/IEC 5962:2021) that describes software components, their versions, licences, and provenance in a machine-readable structure. SPDX is one of the two dominant SBOM formats alongside CycloneDX and is accepted for CRA technical documentation purposes.Software Composition Analysis (SCA)Software Composition Analysis (SCA) is the automated process of identifying open-source and third-party components in a codebase and checking them against known vulnerability databases to detect security risks. SCA is the primary technical mechanism for meeting the CRA's requirement that manufacturers identify and manage vulnerabilities in their products' components.Common Vulnerabilities and Exposures (CVE)CVE is a public catalogue of known cybersecurity vulnerabilities, each assigned a unique identifier (e.g. CVE-2024-12345) maintained by MITRE. Under the CRA, manufacturers are expected to track CVEs affecting their products and report actively exploited vulnerabilities to ENISA.

Browse the full CRA Compliance Checklist

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

View checklists →