Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update spec to final VEX-WG document #25

Merged
merged 4 commits into from
Jul 18, 2023

Conversation

puerco
Copy link
Member

@puerco puerco commented May 30, 2023

This PR updates the OpenVEX spec to match the final minimal requirements for VEX as defined by the VEX Working group and published by CISA.

The summary of changes to the spec is as follows. Except for the document version changing from string to integer, all fields are new so should not break existing consumers.

Document

  • Added wording on the context location to make it clearer it is not versioned until 1.0 (ref VEX schema/spec version should be a field in the metadata #20)
  • version is now an integer
  • Added last_updated to record changes to the doc
  • author is now recommended to be a machine-readable identifier
  • role is now optional 🎉

Statement

  • @id takes an IRI to identify the statement and make it referenceable
  • version an integer field, accounts for changes in the statement. Defaults to zero, and may be omitted when so.
  • last_updated added to the statement
  • supplier an identifier of the supplier of the document

Fixes #18

Signed-off-by: Adolfo García Veytia (Puerco) [email protected]

@puerco
Copy link
Member Author

puerco commented May 30, 2023

Please note that supplier disappeared from the document metadata and is now an optional field at the statement level. Its meaning is different now too, now denoting the supplier of the product (previously it specified the supplier of the document).

@puerco puerco self-assigned this May 30, 2023
luhring
luhring previously approved these changes May 30, 2023
Copy link
Contributor

@luhring luhring left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Just one superficial comment.

OPENVEX-SPEC.md Outdated Show resolved Hide resolved
OPENVEX-SPEC.md Outdated
| tooling | ✕ | Tooling expresses how the VEX document and contained VEX statements were generated. It's optional. It may specify tools or automated processes used in the document or statement generation. |
| last_updated | ✕ | Date of last modification to the document. |
| version | ✓ | Version is the document version. It must be incremented when any content within the VEX document changes, including any VEX statements included within the VEX document. |
| tooling | ✕ | Tooling expresses how the VEX document and contained VEX statements were generated. It may specify tools or automated processes used in the document or statement generation. |
| supplier | ✕ | An optional field specifying who is providing the VEX document. |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line 163 should be deleted I think, Supplier is (now corrrectly) defined in the Statement section.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was aiming for only additions in this PR but I've reconsidered from your comment and we should do one change only.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've pushed another commit removing the supplier.

Copy link

@SecurityCRob SecurityCRob left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For what it is worth, LGTM! puerco++

@puerco puerco mentioned this pull request Jun 14, 2023
@tschmidtb51 tschmidtb51 mentioned this pull request Jun 15, 2023
Copy link

@tschmidtb51 tschmidtb51 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See also #29 and #30

OPENVEX-SPEC.md Show resolved Hide resolved
OPENVEX-SPEC.md Outdated Show resolved Hide resolved
| products | ✕ | Product identifiers that the statement applies to. Any software identifier can be used and SHOULD be traceable to a described item in an SBOM. The use of [Package URLs](https://github.com/package-url/purl-spec) (purls) is recommended. While a product identifier is required to have a complete statement, this field is optional as it can cascade down from the encapsulating document, see [Inheritance](#Inheritance). |
| subcomponents | ✕ | Identifiers of components where the vulnerability originates. While the statement asserts about the impact on the software product, listing `subcomponents` let scanners find identifiers to match their findings. |
| status | ✓ | A VEX statement MUST provide the status of the vulnerabilities with respect to the products and components listed in the statement. `status` MUST be one of the labels defined by VEX (see [Status](#Status-Labels)), some of which have further options and requirements. |
| status | ✓ | A VEX statement MUST provide the status of the vulnerabilities with respect to the products and components listed in the statement. `status` MUST be one of the labels defined by VEX (see [Status](#Status-Labels)), some of which have further options and requirements. |
| supplier | ✕ | Supplier of the product or subcomponent. |

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please clarify how this fulfills the requirement of https://www.cisa.gov/sites/default/files/2023-04/minimum-requirements-for-vex-508c.pdf:

[supplier] MUST clearly indicate the [product_id] or [subcomponent_id] to which [supplier]
applies.

If I understand the description correctly, subcomponents and products might come from different suppliers...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Right, this is an issue we're tackling in an upcoming revision. Right now subcomponents cannot be easily tied back to products (and thus to their suppliers).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one will be handled in the first revision to the spec coming up in August.

puerco added a commit to puerco/go-vex that referenced this pull request Jul 10, 2023
This commit implements the changes to the spec done to update
OpenVEX to the published version of the minimum elements for VEX
document. These changes were proposed to the spec in:

openvex/spec#25

Specifically, this commit introduces the following changes:

Document
- version is now an integer
- Added last_updated to record changes to the doc
- author is now recommended to be a machine-readable identifier
- role is now optional

Statement
- @id takes an IRI to identify the statement and make it referenceable
- version an integer field, accounts for changes in the statement. Defaults to zero, and may be omitted when so.
- last_updated added to the statement
- supplier an identifier of the supplier of the document

Signed-off-by: Adolfo Garcia Veytia (puerco) <[email protected]>
puerco added a commit to puerco/go-vex that referenced this pull request Jul 14, 2023
This commit implements the changes to the spec done to update
OpenVEX to the published version of the minimum elements for VEX
document. These changes were proposed to the spec in:

openvex/spec#25

Specifically, this commit introduces the following changes:

Document
- version is now an integer
- Added last_updated to record changes to the doc
- author is now recommended to be a machine-readable identifier
- role is now optional

Statement
- @id takes an IRI to identify the statement and make it referenceable
- version an integer field, accounts for changes in the statement. Defaults to zero, and may be omitted when so.
- last_updated added to the statement
- supplier an identifier of the supplier of the document

Signed-off-by: Adolfo Garcia Veytia (puerco) <[email protected]>
puerco added a commit to puerco/go-vex that referenced this pull request Jul 17, 2023
This commit implements the changes to the spec done to update
OpenVEX to the published version of the minimum elements for VEX
document. These changes were proposed to the spec in:

openvex/spec#25

Specifically, this commit introduces the following changes:

Document
- version is now an integer
- Added last_updated to record changes to the doc
- author is now recommended to be a machine-readable identifier
- role is now optional

Statement
- @id takes an IRI to identify the statement and make it referenceable
- version an integer field, accounts for changes in the statement. Defaults to zero, and may be omitted when so.
- last_updated added to the statement
- supplier an identifier of the supplier of the document

Signed-off-by: Adolfo Garcia Veytia (puerco) <[email protected]>
puerco added 3 commits July 18, 2023 16:31
This PR updates the openvex spec to match the final minimal
requirements for VEX as defined by the VEX Working group and
published by CISA on https://www.cisa.gov/sites/default/files/2023-04/minimum-requirements-for-vex-508c.pdf

The summary of changes to the spec are as follows. Except for
the document `version` changing from string to integere, all
fields are new so should not break existing consumers.

version is now an integer
added last_updated for changes to record changes to the doc
author is now recommended to be a machine readable identifier
role is now optional 🎉

@id takes an IRI to identify the statement and make it referenceable
version integer field, accounts for changes in the statement, defaults to zero and may be ommitted when so.
last_updated added a last updated timestamp to the statement
supplier an identifier of the supplier of the document

Signed-off-by: Adolfo García Veytia (Puerco) <[email protected]>
Signed-off-by: Adolfo García Veytia (Puerco) <[email protected]>
Signed-off-by: Adolfo García Veytia (Puerco) <[email protected]>
@puerco puerco force-pushed the minimum-reqs-update branch from 528e9b3 to 7d74dc9 Compare July 18, 2023 22:35
Signed-off-by: Adolfo García Veytia (Puerco) <[email protected]>
@puerco
Copy link
Member Author

puerco commented Jul 18, 2023

Thanks for your reviews everyone, I'm tagging v0.0.2 of the spec 🎉

Please note that these changes will not get a technical release. The minor adjustments in v0.0.2 will be rolled into the upcoming updates to the OpenVEX libraries and tools as part of the v0.1.0 revision.

@puerco puerco merged commit d919792 into openvex:main Jul 18, 2023
@SecurityCRob
Copy link

SecurityCRob commented Jul 19, 2023 via email

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.

Clarify timestamps
5 participants