Skip to content

Add a minimalist selection object #820

@ahouseholder

Description

@ahouseholder

Background

In conversation with @tschmidtb51 about various SSVC & CSAF integration tasks (#802), it came up that our current SSVC_Computed.schema.json is actually pretty far out of sync with how we think we want to support SSVC decision point selection exchange.

The CSAF effort needs to pin down SSVC data representation to a specific schema so that they can work towards standardizing SSVC inclusion in CSAF documents. Absent a newer schema, they will be incorporating the existing schema only, which will limit our future options.

Goal

The goal of this issue is to create a minimalist pydantic data structure that we can use to represent a list of SSVC Decision Point Value selections.

Requirements & Assumptions

We can assume that

  • decision points are identified fully by their namespace:key:version (see Initial Decision Table object #795 for more on this), and
  • within the context of a fully-specified decision point, the value.key is sufficient to fully-qualify a selected value
  • role is not relevant to a selection and does not belong in the selection schema at all
  • The concept of evaluator identity might be relevant to a CSAF receiver's decision whether to accept/use the provided evaluation data, but CSAF already has a source field that covers this angle.
  • version in the old schema is a hold-over from when we were versioning SSVC as a whole. Our current scheme is that we version individual decision points instead, so that information belongs in the decision point blocks.

Additional requirements:

  • timestamp is required, and should be ISO-8601 compatible
  • Use 'selections' instead of 'options' to contain the list of selections.
  • A single decision point can support a list of selections from its values, but must be of minimum length 1.
  • A multi-selection allows us to describe evaluations where a user might have evaluated a decision point inconclusively, but might have reduced the possibility space from $n = N$ to $n < N$ values, where $n$ is the number of selections for a given decision point, and $N$ is the number of values in the original decision point.
  • Change 'id' to 'vulnerability_id' and make it optional.

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestintegrationRelated to integration of SSVC into another framework or systemintegration/blockerSomething that is blocking integration with another framework or systemtech/backendBack-end tools, code, infrastructure

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions