Repository navigation
Replies: 1 comment 3 replies
We should drop the score from the schema completely. The vector fully defines the score. |
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Purpose:
This will be one of multiple discussions to query the QWG and others on how best to use the upcoming CVE Services Validation Library for performing additional or more accurate CVE Record Format JSON schema validation during record ingest. The Validation Library will allow the CVE Program to perform programmatic validations beyond what the current JSON schema validation can provide. A simple example might be where we want to validate that a provided CWE ID actually exists by referencing the current CWE List. This is not possible using JSON schema validation but would be possible with the Validation Library.
Discussion:
The metrics array is intended to capture a collection of impact scores, and many CNAs use it to provide CVSS. The metrics array is currently 60% of the CVE Record Format schema when counting by number of lines. The metrics array allows CVSS 2.0, 3.0, 3.1, and 4.0 scores and related attributes. The metrics array also includes an “other” object where non-standard impacts can be defined using additional JSON properties not defined with the CVE Record Format schema. The CVE Record Format schema defines each version of CVSS using a separate object and much of the data and attributes are duplicated across the different CVSS versions because of this.
The CVE Record Format schema also includes base score and base severity comparison logic to ensure that the provided score and severity match up (e.g., a score of 1.0 with a severity of High would be flagged). However, a more important comparison that is not present is to make sure that the provided vector string matches the score. Live examples of mismatches can be found at https://vulnogram.org/cve-index/cvss#cvss3. A previous writeup on the comparison logic can be found at https://github.com/ccoffin/cve-schema/blob/develop/rfds/000x-metrics-remove-cvss-score-comparisons.md.
CVSS 3.0, 3.1, and 4.0 require the record author to provide the CVSS version, the vector string, the base score, and the base severity, while CVSS 2.0 requires all but the base severity. A record author can optionally include one or more of the individual CVSS metrics using their property names.
Entering a CVSS 3.1 vector string that is missing one or more of the base metrics passes schema validation. CVSS 4.0 vector strings fail when one or more base metrics are missing. The pattern match for the CVSS 3.1 vector string should probably be updated so that it enforces at least the base metrics.
Schema Location(s):
https://github.com/CVEProject/cve-schema/blob/main/schema/docs/CVE_Record_Format_bundled.json#L1075
Question(s):
Examples:
All reactions