Skip to content

Conversation

alilleybrinker
Copy link

@alilleybrinker alilleybrinker commented Apr 1, 2025

(Depends on #391; will need to be rebased on develop if/when that is merged, before this can be merged)

Introduce support for OmniBOR Artifact IDs in the CVE record format.

For more background on the topic of software identification, review CISA's "Software Identification Ecosystem Option Analysis" paper.

Warning

When reviewing, focus on the last commit. This is a "Stacked PR," on top of #391, but GitHub shows both the commit making the cpeApplicability structure generic (from #391) and the commit adding OmniBOR Artifact IDs (the part we care about here), when you click "Files changed" at the top of the PR, making review harder.

This "renames" (not actually a rename, see below) the existing
"cpeApplicability" structure and its children from CPE-specific names
to generic names. For example, "cpeApplicability" becomes "applicability."

This is intended to permit future record format updates to add support for
additional kinds of software identifiers. This change itself does not add
any new kinds of software identifiers.

The prior "cpeApplicability" structure remains entirely supported, though
CNAs and any future ADPs enriching with software ID information should be
encouraged to use the more expressive new "applicability" structure instead,
and use of both at the same time should be treated as an error to avoid
ambiguity.

Signed-off-by: Andrew Lilley Brinker <[email protected]>
@alilleybrinker alilleybrinker force-pushed the alilleybrinker/omnibor branch from 562fa01 to 6b69a95 Compare April 1, 2025 22:31
@alilleybrinker alilleybrinker changed the title Add support for OmniBOR Artifact IDs. Add support for OmniBOR Artifact IDs Apr 9, 2025
@alilleybrinker alilleybrinker force-pushed the alilleybrinker/omnibor branch from 6b69a95 to f93a138 Compare April 16, 2025 21:20
@alilleybrinker
Copy link
Author

Updated with four changes:

  • Made target a required field of an omnibor_match object.
  • Renamed the artifact_id field to artifactID for consistency with the naming scheme of the rest of the schema.
  • Constrained the artifactID value with a regular expression matching the spec for OmniBOR Artifact IDs.
  • Added description entries for each field to document their purpose.

Signed-off-by: Andrew Lilley Brinker <[email protected]>
@alilleybrinker alilleybrinker force-pushed the alilleybrinker/omnibor branch from f93a138 to 3c80750 Compare April 17, 2025 21:59
alilleybrinker added a commit to alilleybrinker/cve-schema that referenced this pull request May 9, 2025
The `affected` array is an array containing `product` objects, which
must at minimum include an "identifier" (which may be a composite
identifier composed of multiple fields) along with a set of version
bounds or a default status. Products may also specify an assortment
of additional fields which further constrain the applicability of the
CVE to its intended target hardware or software.

Previously, the set of identifiers available were:

- A `vendor` and `product`
- A `collectionURL` and `packageName`

This commit adds support for a new pair of fields to support
using OmniBOR Artifact IDs as identifiers in the `affected` array:

- `artifactID`: The OmniBOR Artifact ID for an artifact.
- `artifactType`: An enum indicating whether the `artifactID` is for
  an artifact to search in a file system for, or whether it's a
  build input to search against OmniBOR Input Manifests.

The commit also adds data constraints to ensure this new identifier
pair is not used alongside fields that don't make sense to use with
OmniBOR, including the other identifier schemes, further decomposition
information like `programFiles` or `programRoutines`, and version
information.

This work is submitted as an alternative formulation of the design
proposed in the draft RFD on software identifiers [1], and as an
alternative to the existing proposals for making the `cpeApplicability`
structure generic [2] (instead of it being CPE-specific) and enhancing
this new generic applicability structure with support for OmniBOR
Artifact IDs [3].

If this change is accepted, then [2] and [3] should not be accepted.

[1]: CVEProject#407
[2]: CVEProject#391
[3]: CVEProject#396

Signed-off-by: Andrew Lilley Brinker <[email protected]>
@alilleybrinker
Copy link
Author

Closing this, as the project has opted for an approach based on the affected array.

@alilleybrinker alilleybrinker deleted the alilleybrinker/omnibor branch August 7, 2025 17:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant