Quick Start Session For Using CPE Within the CVE Record Format

Chris Coffin (MITRE Corporation)

CVE/FIRST VulnCon 2025 · Main Stage

Overview

This talk, presented by Chris Coffin of the MITRE Corporation, introduces significant enhancements to the CVE Record Format, specifically the integration of robust support for Common Platform Enumeration (CPE) 2.3 and its applicability language. The core problem addressed is the need for a standardized, machine-readable way to identify affected products and platforms within CVE records, moving beyond simple text descriptions. While the National Vulnerability Database (NVD) has long utilized CPE for this purpose, the CVE program itself lacked a comprehensive mechanism to capture these intricate relationships directly within the CVE record.

Watch on YouTube

Visual summary for Quick Start Session For Using CPE Within the CVE Record Format by Chris Coffin
Visual summary for Quick Start Session For Using CPE Within the CVE Record Format by Chris Coffin

Key moments

  1. 0:00 Introduction to CPE and talk agenda
  2. 2:00 Detailed explanation of CPE 2.3 and its specifications
  3. 2:50 Understanding CPE naming format and examples
  4. 4:04 Rationale for including CPE in CVE records
  5. 6:00 Explanation of CPE applicability language and its use
  6. 7:08 How CPE is integrated into CVE Record Format 5.1.1
  7. 8:40 NIST NVD terminology: configurations, nodes, and 'running on'

Quick Start Session For Using CPE Within the CVE Record Format

Speakers: Chris Coffin, MITRE Corporation

Conference: VulnCon

YouTube: https://www.youtube.com/watch?v=osOX-rXePG8

Overview

This talk, presented by Chris Coffin of the MITRE Corporation, introduces significant enhancements to the CVE Record Format, specifically the integration of robust support for Common Platform Enumeration (CPE) 2.3 and its applicability language. The core problem addressed is the need for a standardized, machine-readable way to identify affected products and platforms within CVE records, moving beyond simple text descriptions. While the National Vulnerability Database (NVD) has long utilized CPE for this purpose, the CVE program itself lacked a comprehensive mechanism to capture these intricate relationships directly within the CVE record.

The presentation outlines the "why" and "how" of this integration, detailing the structure of CPE, its applicability statements, and how these are now embedded within the CVE Record Format v5.1.1. By adopting a JSON schema that closely mirrors NVD's configurations, the CVE program aims to empower CVE Numbering Authorities (CNAs) to provide richer, more precise vulnerability information. This standardization is crucial for improving automated vulnerability management, asset inventory, and threat intelligence, allowing security tools and systems to accurately identify vulnerable components across complex IT environments.

Coffin emphasizes that while the inclusion of CPE data is currently optional for CNAs, it represents a strategic step towards enhancing the utility and interoperability of CVE records. The ultimate goal is to facilitate more effective vulnerability correlation and response by providing a common language for describing affected software and hardware, thereby bridging the gap between raw vulnerability disclosures and actionable security intelligence.

Background

▶ Watch: Introduction to CPE and talk agenda (0:00)

The landscape of cybersecurity demands precise identification of vulnerable components. Historically, CVE (Common Vulnerabilities and Exposures) records have provided essential information about vulnerabilities, but the method for specifying affected products and versions often relied on free-form text or simple lists. This approach, while human-readable, presented significant challenges for automated processing and consistent interpretation across diverse security tools and databases. The need for a standardized, machine-readable naming scheme became increasingly apparent.

This is where CPE (Common Platform Enumeration) comes into play. Developed by MITRE, CPE is a structured naming scheme designed for information technology systems, software, and packages. Its current version, CPE 2.3, was originally released in 2011 and is built upon a stack of four specifications: naming, name matching, dictionary, and applicability language. CPE provides a consistent way to refer to products, vendors, and versions, allowing for unambiguous identification. For instance, cpe:/o:linux:linux_kernel:5.10 uniquely identifies a specific version of the Linux kernel.

The National Vulnerability Database (NVD), maintained by NIST, has long leveraged CPE to describe affected configurations within its vulnerability entries, using a JSON schema for configurations that allows for complex logical expressions. However, the CVE program, responsible for assigning CVE IDs and managing the CVE Record Format, previously had limited and less robust support for CPE. While an older mechanism allowed listing CPEs in an "affected array," it lacked the granularity and logical expressiveness needed to define complex relationships (e.g., a vulnerability only present when specific software runs on a particular operating system). This limitation meant that CNAs often couldn't fully express the scope of a vulnerability using CPE directly within the CVE record, leading to potential ambiguities and hindering automated analysis. The present work aims to rectify this by integrating the full power of CPE 2.3's applicability language into the CVE Record Format.

Key Findings

▶ Watch: Understanding CPE naming format and examples (2:50)

The central finding and contribution of this initiative is the successful integration of robust support for CPE 2.3's applicability language into the CVE Record Format v5.1.1. This enhancement allows CVE Numbering Authorities (CNAs) to define complex logical expressions for identifying affected products and platforms directly within CVE records. By mirroring the existing NIST NVD configurations JSON schema, the CVE program now provides a standardized and machine-readable method for specifying intricate vulnerability conditions.

Key aspects of this integration include:

  • Standardized Product Identification: CNAs can now use the structured CPE 2.3 format to precisely name affected applications, hardware, and operating systems, including vendor, product, and version details.
  • Complex Logical Relationships: The CPE applicability language enables the use of AND and OR operators to describe conditions where multiple products must be present, or a product must run on a specific platform for a vulnerability to exist. This moves beyond simple lists to express nuanced dependencies.
  • Mirroring NVD: The new JSON structure for CPE within CVE records closely resembles how NVD defines configurations, facilitating greater interoperability and consistency between CVE and NVD data. This familiarity is expected to ease adoption for those already accustomed to NVD's approach.
  • Optional Data Enrichment: While the inclusion of CPE data remains optional for CNAs in the CVE Record Format v5.1.1, it is strongly encouraged as a means of enriching vulnerability information and improving its utility for automated security tools. The previous, less expressive CPE array in the affected section will remain for backward compatibility but is not recommended for new, complex definitions.

This development significantly improves the precision and automation potential of CVE records, enabling more accurate vulnerability management and asset identification across the cybersecurity ecosystem.

Technical Deep Dive

▶ Watch: Rationale for including CPE in CVE records (4:04)

The integration of CPE 2.3 applicability statements into the CVE Record Format v5.1.1 introduces a structured and powerful method for defining vulnerable products and platforms. This technical deep dive will explore the components of CPE, the applicability language, and its representation within the CVE JSON schema.

CPE Naming Format

At its core, CPE relies on a structured naming scheme. A CPE name begins with cpe:2.3: followed by 11 fields, which identify various product attributes. The most common and relevant format for CVE records is the formatted string binding. The general structure is:

cpe:/<part>:<vendor>:<product>:<version>:<update>:<edition>:<language>:<sw_edition>:<target_sw>:<target_hw>:<other>

Key fields include:

  • Part: A single character indicating the type of product: a for application, h for hardware, or o for operating system.
  • Vendor: The name of the organization that manufactured or created the product.
  • Product: The name of the product itself.
  • Version: The specific version of the product.
  • **Wildcards (*):** An asterisk can be used in any field to represent "any value," which is crucial for name matching and defining ranges.

For example:

  • cpe:/a:mozilla:firefox:3.6 (Mozilla Firefox application, version 3.6)
  • cpe:/o:microsoft:windows_vista (Microsoft Windows Vista operating system)
  • cpe:/h:netgear:r7000 (Netgear R7000 hardware device)

These structured names provide a machine-readable identifier for software and hardware components.

CPE Applicability Language

The true power of CPE for vulnerability descriptions comes from its applicability language. This language defines a standardized structure for forming complex logical expressions, enabling the precise definition of conditions under which a vulnerability exists. It allows for the use of AND and OR operators to combine CPE names, specifying relationships like:

  • "Product A OR Product B is vulnerable."
  • "Product C AND Product D must both be present for the vulnerability."
  • "Product E is vulnerable IF it is running on Platform F."

These statements help to accurately scope vulnerabilities, preventing false positives and ensuring targeted remediation efforts.

CVE Record Format v5.1.1 Integration

The CVE Record Format v5.1.1 introduces a new CPE applicability array within the CVE record structure. This array provides a dedicated section for CNAs to define affected configurations using the CPE applicability language. It closely resembles the NIST NVD configurations JSON schema, which is familiar to many in the vulnerability management community.

The core structure within the CVE record's JSON for CPE applicability involves:

Key elements within the configurations array:

  • configurations: An array containing one or more distinct vulnerability configurations. Each configuration can represent a different set of conditions for the vulnerability.
  • nodes: An array within each configuration, defining a logical grouping of CPE matches.
  • operator: Specifies the logical operator for combining the cpeMatch items within that node. Common values are "OR" (meaning any of the listed CPEs match) or "AND" (meaning all of the listed CPEs must match). This is a required field.
  • negate: A boolean (default false) indicating if the entire node's condition should be negated.
  • cpeMatch: An array of objects, each defining a specific CPE criterion.
  • vulnerable: A boolean indicating whether the component identified by criteria is vulnerable (true) or not (false).
  • criteria: The actual CPE 2.3 formatted string binding (e.g., cpe:/a:fusionpbx:fusionpbx::::::::).
  • Version Ranges: Instead of just a single version in the criteria string, the cpeMatch object can specify version ranges using:
  • versionStartIncluding: The lowest vulnerable version (inclusive).
  • versionEndIncluding: The highest vulnerable version (inclusive).
  • versionStartExcluding: The lowest vulnerable version (exclusive).
  • versionEndExcluding: The highest vulnerable version (exclusive).
  • matchCriteriaId: An identifier assigned by NVD for internal tracking; not required for CVE records.

NVD Terminology Mapping

The CVE record format intentionally aligns with NVD's existing terminology for configurations:

  • Configurations: In NVD, these represent specific sets of products that, when present, result in a vulnerability. In the CVE JSON, each object within the configurations array represents an NVD "configuration."
  • Nodes: Within a configuration, nodes represent a CPE name or a set of CPE match criteria. An NVD configuration can have multiple nodes, often reflecting different code branches or platforms. In the CVE JSON, each object within the nodes array corresponds to an NVD "node."
  • Running On/With: This NVD concept describes a specific product being vulnerable only if it's installed on a particular platform (e.g., software on an OS). This is achieved in the CVE JSON by using an AND operator between two nodes blocks: one defining the vulnerable product(s) and another defining the required platform(s).

Examples from the Talk

The presentation provided several examples, drawing from NVD's public interface, to illustrate how these concepts translate into the CVE record format:

  1. Simple Product Vulnerability: A single product (e.g., Fusion PBX) vulnerable up to and including a specific version (e.g., 4.5.7).
  • JSON would have one configuration, one node, and one cpeMatch item with criteria for Fusion PBX and versionEndIncluding: "4.5.7".
  1. Product on a Specific Platform: A product vulnerable only when running on a particular platform (e.g., a specific Netgear device).
  • JSON would use an AND operator at the top configurations level. One node block would define the vulnerable product, and a second node block would define the required Netgear platform. Both must match.
  1. Multiple Products with AND Logic: A scenario where three distinct products must all be present for the vulnerability.
  • JSON would use an AND operator at the top configurations level, with a single node containing three cpeMatch items, or potentially three separate nodes blocks, each with an AND operator if the logic is more complex.
  1. Multiple Code Branches (OR Logic): A vulnerability affecting multiple, distinct code branches of the same product (e.g., Linux Kernel 1.x and 2.x branches).
  • JSON would have one configuration, one node, and an operator: "OR". The cpeMatch array would list two items, one for each affected branch, using versionStartIncluding and versionEndIncluding as appropriate.
  1. Advanced Microsoft .NET Example: A complex CVE for Microsoft .NET Framework, involving multiple framework versions, service packs, and specific Windows Server operating systems (e.g., .NET Framework 2 SP2 OR .NET Framework 3 SP2, AND running on Windows Server 2008 SP2 x64 OR x86).
  • This translates to multiple configurations, each using a combination of AND and OR operators across different nodes to represent the intricate dependencies between .NET versions and OS platforms. For instance, an outer AND for the framework and the OS, with inner ORs for different framework versions and different OS architectures.

By providing these structured examples, the talk effectively demonstrates how the new CPE applicability language can precisely articulate complex vulnerability conditions, moving beyond the limitations of previous CVE record formats.

Demo / Proof of Concept

▶ Watch: How CPE is integrated into CVE Record Format 5.1.1 (7:08)

While the talk did not feature a live coding or tool-based demonstration, Chris Coffin effectively presented a conceptual demonstration of how CPE applicability statements are structured and how they map from the familiar NIST NVD website configurations to the new CVE Record Format JSON.

The demonstration primarily involved:

  1. Visualizing NVD Configurations: Coffin displayed screenshots from the NVD website, showing how NVD represents affected products and platforms. These visual examples included:
  • A simple case of "Fusion PBX vulnerable up to and including version 4.5.7."
  • A more complex scenario involving a "running on with" condition, where a product is vulnerable only when existing on a specific Netgear device.
  • An advanced configuration using AND logic, requiring three distinct products to be present for the vulnerability.
  • Examples showing multiple affected Linux kernel branches.
  • A highly complex Microsoft .NET Framework CVE, illustrating numerous configurations and intricate AND/OR relationships between different framework versions and Windows Server operating systems.
  1. Mapping to CVE JSON Structure: For each NVD example, Coffin presented corresponding JSON snippets that would be used within the new configurations array of a CVE record. This side-by-side comparison clearly illustrated:
  • How a simple version range translates into criteria with versionStartIncluding and versionEndIncluding.
  • The use of the operator field (OR, AND) within nodes to combine multiple cpeMatch items.
  • How the "running on/with" concept is represented by separate node blocks, one for the product and one for the platform, combined with an outer AND operator at the configuration level.
  • The structure for defining multiple affected code branches using an OR operator within a single node.
  • The irrelevance of NVD-specific fields like matchCriteriaId within the CVE record JSON, ensuring CNAs only provide essential information.

This approach served as a practical guide for CNAs, showing them precisely how to translate existing NVD-style configuration logic into the new CVE record syntax. It highlighted the flexibility and precision offered by the CPE applicability language, enabling CNAs to enrich their vulnerability disclosures with machine-readable, actionable data.

Defensive Implications

▶ Watch: NIST NVD terminology: configurations, nodes, and 'running on' (8:40)

The introduction of robust CPE 2.3 applicability support into the CVE Record Format v5.1.1 carries significant implications for security defenders, enabling more precise and automated vulnerability management.

  1. Enhanced Asset Inventory and Correlation: With standardized CPE data directly embedded in CVE records, organizations can more accurately correlate vulnerabilities with their deployed assets. Asset management systems that track CPEs of installed software and hardware can now directly consume CVE records and precisely identify whether a specific vulnerability affects their environment, reducing false positives and improving the signal-to-noise ratio in vulnerability scans.
  1. Automated Patch Management: The ability to define complex logical expressions (e.g., "Product A on OS B") means patch management systems can make more informed decisions. Instead of patching every instance of "Product A," systems can target only those instances running on "OS B" where the vulnerability actually exists, streamlining patching cycles and minimizing unnecessary disruptions.
  1. Improved Threat Intelligence: Security operations centers (SOCs) and threat intelligence platforms can leverage the granular CPE data to build more accurate threat models and understand the specific conditions under which a vulnerability poses a risk. This allows for more targeted defensive strategies and better prioritization of remediation efforts.
  1. Faster Incident Response: During an incident, rapidly identifying all affected systems is critical. CPE-enriched CVEs provide the machine-readable data necessary for automated tools to quickly pinpoint vulnerable components, accelerating the response and containment phases.
  1. Better Supply Chain Security: As organizations increasingly rely on third-party software and components, understanding the transitive dependencies and vulnerabilities across the supply chain becomes paramount. CPE offers a common language for describing components, facilitating better risk assessment and communication throughout the software supply chain.
  1. Tooling Adoption: While the speaker noted that current CNA clients like Vulnogram do not yet fully support the new CPE applicability structure, the expectation is that security vendors and open-source projects will update their tools to consume and process this richer data. Defenders should look for this enhanced support in their vulnerability scanners, SIEMs, and other security platforms.

In essence, this enhancement empowers defenders to move from a broad, often ambiguous understanding of vulnerability scope to a highly precise, machine-interpretable definition, leading to more efficient, effective, and targeted cybersecurity defenses.

Key Takeaways

  • CPE 2.3 Applicability Now in CVE Records: The CVE Record Format v5.1.1 introduces robust support for CPE 2.3's applicability language, allowing for precise, machine-readable identification of vulnerable products and platforms.
  • Standardized Product Identification: This new feature enables CNAs to use structured CPE names and logical operators (AND/OR) to define complex relationships, such as specific software running on particular operating systems.
  • Mirrors NVD's Configuration Schema: The JSON structure for CPE applicability within CVE records closely resembles the familiar NIST NVD configurations, facilitating easier adoption and interoperability.
  • Optional but Highly Encouraged: While providing CPE data is currently optional for CNAs, it is strongly recommended for enriching vulnerability information and improving its utility for automated security tools.
  • Enhanced Automation for Defenders: This change allows security tools to more accurately correlate vulnerabilities with assets, streamline patch management, and improve threat intelligence, leading to more targeted and efficient defenses.
  • Tooling Updates Required: Existing CNA clients like Vulnogram will need updates to fully support this new structure, but custom tools can be adapted immediately.

About the Speaker(s)

Chris Coffin has been a dedicated member of the MITRE Corporation since 2012, primarily focusing his expertise on the CVE program in various capacities. With extensive experience in vulnerability management, Coffin has a deep understanding of the intricacies of vulnerability identification and disclosure. His recent work has centered on the Common Platform Enumeration (CPE), particularly the integration of CPE 2.3's applicability language into the CVE Record Format, which was the subject of this presentation. He also collaborates with individuals from NIST, such as Chris Turner, on advancing CPE integration and addressing challenges within the vulnerability ecosystem.

Reviews

Dr. Zero (Offensive Security Researcher) — SOLID

A competent, workmanlike tutorial on integrating CPE 2.3 applicability language into CVE Record Format v5.1.1. Coffin clearly knows this material cold — he's lived inside the CVE program for over a decade — and the talk does what it sets out to do: give CNAs a practical guide for populating the new configurations block. This isn't research, it's documentation with a pulse. It belongs at VulnCon, it serves the audience it's targeting, and it's better than a static spec page. But it's not going to be anyone's conference highlight.

Heather Calloway (CISO) — WEAK

A technically competent walkthrough of CPE 2.3 integration into the CVE Record Format v5.1.1, aimed at CVE Numbering Authorities who need to understand the new schema. The content is accurate and the examples are well-constructed. But this is infrastructure plumbing work presented to a narrow technical audience, and it stops well short of addressing the governance failures, adoption incentives, and systemic fragmentation that make vulnerability metadata unreliable in the first place. It tells CNAs how to use a new field. It does not tell security leaders why the field has been empty for so long, who is accountable for fixing that, or what changes when it is not.

→ Top-rated talks at CVE/FIRST VulnCon 2025

All talks from CVE/FIRST VulnCon 2025