Skip to content

Commit ac5052f

Browse files
authored
Merge pull request #871 from tschmidtb51/ssvc
SSVC
2 parents ab891f7 + 8e19dc4 commit ac5052f

File tree

59 files changed

+3492
-21
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+3492
-21
lines changed

csaf_2.1/json_schema/csaf_json_schema.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1281,6 +1281,9 @@
12811281
},
12821282
"cvss_v4": {
12831283
"$ref": "https://www.first.org/cvss/cvss-v4.0.json"
1284+
},
1285+
"ssvc_v1": {
1286+
"$ref": "https://certcc.github.io/SSVC/data/schema/v1/Decision_Point_Value_Selection-1-0-1.schema.json"
12841287
}
12851288
}
12861289
},

csaf_2.1/prose/edit/etc/bind.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ tests-01-mndtr-42-purl-qualifiers.md
7676
tests-01-mndtr-43-use-of-multiple-stars-in-model-number.md
7777
tests-01-mndtr-44-use-of-multiple-stars-in-serial-number.md
7878
tests-01-mndtr-45-inconsistent-disclosure-date.md
79+
tests-01-mndtr-46-invalid-ssvc.md
80+
tests-01-mndtr-47-inconsistent-ssvc-id.md
81+
tests-01-mndtr-48-ssvc-decision-points.md
82+
tests-01-mndtr-49-prohibited-ssvc-decision-point-namespace.md
7983
tests-02-optional.md
8084
tests-03-informative.md
8185
distributing.md

csaf_2.1/prose/edit/src/conformance.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,7 +605,17 @@ Secondly, the program fulfills the following for all items of:
605605
> This is done to create a deterministic conversion.
606606
607607
The tool SHOULD implement an option to use the latest available CWE version at the time of the conversion that still matches.
608+
608609
* `/vulnerabilities[]/disclosure_date`: If a `release_date` was given, the CSAF 2.0 to CSAF 2.1 converter MUST convert the key as `disclosure_date`.
610+
* `/vulnerabilities[]/metrics/ssvc_v1`: If a SSVC vector or decision points of an SSVC vector are given in an item of `notes` of the current
611+
vulnerability using the `title` `SSVC` and the `category` `other`, the CSAF 2.0 to CSAF 2.1 converter MUST convert that data into the `ssvc_v1`
612+
object within the current vulnerability.
613+
If the CSAF 2.0 to CSAF 2.1 converter is able to construct a valid object without loosing any information, the corresponding `notes` item SHALL
614+
be removed.
615+
If the CSAF 2.0 to CSAF 2.1 converter is unable to construct a valid object with the information given, the CSAF 2.0 to CSAF 2.1 converter SHALL
616+
remove the invalid `ssvc_v1` object, keep the original item of `notes` and output a warning that the automatic conversion of the SSVC data failed.
617+
If the CSAF 2.0 to CSAF 2.1 converter would loose information during the conversion, the CSAF 2.0 to CSAF 2.1 converter SHALL remove the `ssvc_v1`
618+
object, keep the original item of `notes` and output a warning that the automatic conversion of the SSVC data would lead to loosing information.
609619
* `/vulnerabilities[]/remediations[]`:
610620
* The CSAF 2.0 to CSAF 2.1 converter MUST convert any remediation with the category `vendor_fix` into the category `optional_patch`
611621
if the product in question is in one of the product status groups "Not Affected" or "Fixed" for this vulnerability.
@@ -623,6 +633,7 @@ Secondly, the program fulfills the following for all items of:
623633
* In any other case, the CSAF 2.0 to CSAF 2.1 converter MUST preserve the product in the remediation of the category `none_available`.
624634
* The CSAF 2.0 to CSAF 2.1 converter MUST output a warning if a remediation was added, deleted or the value of the category was changed,
625635
including the products it was changed for.
636+
* The CSAF 2.0 to CSAF 2.1 converter SHALL provide the JSON path where the warning occurred together with the warning.
626637
627638
> A tool MAY implement options to convert other Markdown formats to GitHub-flavored Markdown.
628639

csaf_2.1/prose/edit/src/design-considerations-01-construction-principles.md

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,26 @@ Proven and intended usage patterns from practice are given where possible.
3434

3535
Delegation to industry best practices technologies is used in referencing schemas for:
3636

37-
* Platform Data:
37+
* Classification for Document Distribution
38+
* Traffic Light Protocol (TLP)
39+
* Default Definition: https://www.first.org/tlp/
40+
* Platform Data
3841
* Common Platform Enumeration (CPE) Version 2.3 [cite](#CPE23-N)
39-
* Vulnerability Scoring:
42+
* Vulnerability Categorization
43+
* Stakeholder-Specific Vulnerability Categorization [cite](#SSVC)
44+
* JSON Schema Reference: https://certcc.github.io/SSVC/data/schema/v1/Decision_Point_Value_Selection-1-0-1.schema.json
45+
* Vulnerability Classification
46+
* Common Weakness Enumeration (CWE) [cite](#CWE)
47+
* CWE List: http://cwe.mitre.org/data/index.html
48+
* Vulnerability Scoring
4049
* Common Vulnerability Scoring System (CVSS) Version 4.0 [cite](#CVSS40)
41-
* JSON Schema Reference https://www.first.org/cvss/cvss-v4.0.json
50+
* JSON Schema Reference: https://www.first.org/cvss/cvss-v4.0.json
4251
* Common Vulnerability Scoring System (CVSS) Version 3.1 [cite](#CVSS31)
43-
* JSON Schema Reference https://www.first.org/cvss/cvss-v3.1.json
52+
* JSON Schema Reference: https://www.first.org/cvss/cvss-v3.1.json
4453
* Common Vulnerability Scoring System (CVSS) Version 3.0 [cite](#CVSS30)
45-
* JSON Schema Reference https://www.first.org/cvss/cvss-v3.0.json
54+
* JSON Schema Reference: https://www.first.org/cvss/cvss-v3.0.json
4655
* Common Vulnerability Scoring System (CVSS) Version 2.0 [cite](#CVSS2)
47-
* JSON Schema Reference https://www.first.org/cvss/cvss-v2.0.json
48-
* Vulnerability Classification
49-
* Common Weakness Enumeration (CWE) [cite](#CWE)
50-
* CWE List: http://cwe.mitre.org/data/index.html
51-
* Classification for Document Distribution
52-
* Traffic Light Protocol (TLP)
53-
* Default Definition: https://www.first.org/tlp/
56+
* JSON Schema Reference: https://www.first.org/cvss/cvss-v2.0.json
5457

5558
Even though the JSON schema does not prohibit specifically additional properties and custom keywords,
5659
it is strongly recommended not to use them. Suggestions for new fields SHOULD be made through issues in the TC's GitHub.
@@ -65,5 +68,3 @@ consumers to verify rules from the specification which can not be tested by the
6568
Section [sec](#distributing-csaf-documents) states how to distribute and where to find CSAF documents.
6669
Safety, Security and Data Protection are considered in section [sec](#safety-security-and-data-protection-considerations).
6770
Finally, a set of conformance targets describes tools in the ecosystem.
68-
69-

csaf_2.1/prose/edit/src/guidance-on-size.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,8 @@ An array SHOULD NOT have more than:
8080
* `/vulnerabilities[]/acknowledgments[]/urls`
8181
* `/vulnerabilities[]/cwes`
8282
* `/vulnerabilities[]/ids`
83+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/selections`
84+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/selections[]/values`
8385
* `/vulnerabilities[]/remediations[]/entitlements`
8486

8587
* 40 000 items for
@@ -208,6 +210,12 @@ A string SHOULD NOT have a length greater than:
208210
* `/vulnerabilities[]/metrics[]/content/cvss_v2/vectorString`
209211
* `/vulnerabilities[]/metrics[]/content/cvss_v3/vectorString`
210212
* `/vulnerabilities[]/metrics[]/content/cvss_v4/vectorString`
213+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/id`
214+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/role`
215+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/selections[]/name`
216+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/selections[]/namespace`
217+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/selections[]/values[]`
218+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/selections[]/version`
211219
* `/vulnerabilities[]/metrics[]/products[]`
212220
* `/vulnerabilities[]/notes[]/audience`
213221
* `/vulnerabilities[]/notes[]/title`
@@ -267,6 +275,7 @@ The maximum length of strings representing a temporal value is given by the form
267275
* `/vulnerabilities[]/discovery_date`
268276
* `/vulnerabilities[]/flags[]/date`
269277
* `/vulnerabilities[]/involvements[]/date`
278+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/timestamp`
270279
* `/vulnerabilities[]/remediations[]/date`
271280
* `/vulnerabilities[]/threats[]/date`
272281

@@ -284,6 +293,7 @@ It seems to be safe to assume that the length of this value is not greater than
284293

285294
For all other values, it seems to be safe to assume that the length of each value is not greater than 50.
286295
This applies to:
296+
287297
* `/document/csaf_version` (3)
288298
* `/document/distribution/tlp/label` (12)
289299
* `/document/notes[]/category` (16)
@@ -373,6 +383,7 @@ This applies to:
373383
* `/vulnerabilities[]/metrics[]/content/cvss_v4/vulnConfidentialityImpact` (4)
374384
* `/vulnerabilities[]/metrics[]/content/cvss_v4/vulnerabilityResponseEffort` (11)
375385
* `/vulnerabilities[]/metrics[]/content/cvss_v4/vulnIntegrityImpact` (4)
386+
* `/vulnerabilities[]/metrics[]/content/ssvc_v1/schemaVersion` (5)
376387
* `/vulnerabilities[]/notes[]/category` (16)
377388
* `/vulnerabilities[]/references[]/category` (8)
378389
* `/vulnerabilities[]/remediations[]/category` (14)

csaf_2.1/prose/edit/src/introduction-04-informative-references.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ SemVer
102102
SPDX301
103103
: _The System Package Data Exchange® (SPDX®) Specification Version 3.0.1_, Linux Foundation and its Contributors, 2024, <https://spdx.github.io/spdx-spec/>.
104104

105+
SSVC
106+
: _SSVC: Stakeholder-Specific Vulnerability Categorization_, CERT/CC, <https://certcc.github.io/SSVC/reference/>
107+
105108
VERS
106109
: _vers: a mostly universal version range specifier_, Part of the purl GitHub Project, <https://github.com/package-url/purl-spec/blob/master/VERSION-RANGE-SPEC.rst>.
107110

csaf_2.1/prose/edit/src/schema-elements-02-props-04-vulnerabilities.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,9 @@ A Content object has at least 1 property.
447447
},
448448
"cvss_v4": {
449449
// ...
450+
},
451+
"ssvc_v1": {
452+
// ....
450453
}
451454
}
452455
```
@@ -461,6 +464,9 @@ The property CVSS v3 (`cvss_v3`) holding a CVSS v3.x value abiding by one of the
461464
The property CVSS v4 (`cvss_v4`) holding a CVSS v4.0 value abiding by the schema at
462465
[https://www.first.org/cvss/cvss-v4.0.json](https://www.first.org/cvss/cvss-v4.0.json).
463466

467+
The property SSVC v1 (`ssvc_v1`) holding an SSVC Decision Point Value Selection v1.x.y value abiding by the schema at
468+
[https://certcc.github.io/SSVC/data/schema/v1/Decision_Point_Value_Selection-1-0-1.schema.json](https://certcc.github.io/SSVC/data/schema/v1/Decision_Point_Value_Selection-1-0-1.schema.json).
469+
464470
##### Vulnerabilities Property - Metrics - Products
465471

466472
Product IDs (`products`) of value type `products_t` with 1 or more items indicates for which products the given content applies.

csaf_2.1/prose/edit/src/tests-01-mndtr-45-inconsistent-disclosure-date.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,4 @@ The relevant path for this test is:
4141
]
4242
```
4343

44-
> The document is labeled `TLP:CLEAR` and in status `final` but the `disclosure_date` is newer than the date of newest item in the `revision_history`.
44+
> The document is labeled `TLP:CLEAR` and in status `final` but the `disclosure_date` is newer than the `date` of newest item in the `revision_history`.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
### Invalid SSVC
2+
3+
It MUST be tested that the given SSVC object is valid according to the referenced schema.
4+
5+
The relevant path for this test is:
6+
7+
```
8+
/vulnerabilities[]/metrics[]/content/ssvc_v1
9+
```
10+
11+
*Example 1 (which fails the test):*
12+
13+
```
14+
"ssvc_v1": {
15+
"id": "CVE-1900-0001",
16+
"schemaVersion": "1-0-1",
17+
"timestamp": "2024-01-24T10:00:00.000Z"
18+
}
19+
```
20+
21+
> The required element `selections` is missing.
22+
23+
> A tool MAY add the missing property `id` based on the values given in `cve` respectively `ids[]/text` as quick fix.
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
### Inconsistent SSVC ID
2+
3+
For each `ssvc_v1` object it MUST be tested that `id` is either the CVE of the vulnerability given in `cve` or the `text` of an item in the `ids` array.
4+
The test MUST fail, if the `id` equals the `/document/tracking/id` and the CSAF document contains more than one vulnerability.
5+
6+
The relevant path for this test is:
7+
8+
```
9+
/vulnerabilities[]/metrics[]/content/ssvc_v1/id
10+
```
11+
12+
*Example 1 (which fails the test):*
13+
14+
```
15+
"vulnerabilities": [
16+
{
17+
"cve": "CVE-1900-0001",
18+
"metrics": [
19+
{
20+
"content": {
21+
"ssvc_v1": {
22+
"id": "CVE-1900-0002",
23+
"schemaVersion": "1-0-1",
24+
"selections": [
25+
{
26+
"name": "Exploitation",
27+
"namespace": "ssvc",
28+
"values": [
29+
"None"
30+
],
31+
"version": "1.1.0"
32+
}
33+
],
34+
"timestamp": "2024-01-24T10:00:00.000Z"
35+
}
36+
},
37+
// ...
38+
}
39+
]
40+
}
41+
]
42+
```
43+
44+
> The SSVC ID does not match the CVE ID.

0 commit comments

Comments
 (0)