@mitre/hdf-schema 3.2.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -16
- package/dist/go/hdf.go +398 -134
- package/dist/helpers.d.ts +1 -1
- package/dist/index.d.ts +27 -52
- package/dist/index.js +30 -48
- package/dist/schemas/hdf-amendments.schema.json +466 -45
- package/dist/schemas/hdf-baseline.schema.json +471 -50
- package/dist/schemas/hdf-comparison.schema.json +721 -103
- package/dist/schemas/hdf-evidence-package.schema.json +465 -44
- package/dist/schemas/hdf-plan.schema.json +472 -50
- package/dist/schemas/hdf-results.schema.json +678 -80
- package/dist/schemas/hdf-system.schema.json +497 -59
- package/dist/ts/hdf.d.ts +3562 -0
- package/dist/ts/hdf.js +564 -0
- package/dist/ts/hdf.ts +3623 -0
- package/package.json +18 -17
- package/dist/ts/hdf-amendments.d.ts +0 -474
- package/dist/ts/hdf-amendments.js +0 -88
- package/dist/ts/hdf-amendments.ts +0 -486
- package/dist/ts/hdf-baseline.d.ts +0 -549
- package/dist/ts/hdf-baseline.js +0 -110
- package/dist/ts/hdf-baseline.ts +0 -563
- package/dist/ts/hdf-comparison.d.ts +0 -1185
- package/dist/ts/hdf-comparison.js +0 -216
- package/dist/ts/hdf-comparison.ts +0 -1210
- package/dist/ts/hdf-evidence-package.d.ts +0 -348
- package/dist/ts/hdf-evidence-package.js +0 -39
- package/dist/ts/hdf-evidence-package.ts +0 -356
- package/dist/ts/hdf-plan.d.ts +0 -204
- package/dist/ts/hdf-plan.js +0 -23
- package/dist/ts/hdf-plan.ts +0 -205
- package/dist/ts/hdf-results.d.ts +0 -1588
- package/dist/ts/hdf-results.js +0 -246
- package/dist/ts/hdf-results.ts +0 -1616
- package/dist/ts/hdf-system.d.ts +0 -609
- package/dist/ts/hdf-system.js +0 -102
- package/dist/ts/hdf-system.ts +0 -617
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-comparison/v3.
|
|
3
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-comparison/v3.3.0",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"unevaluatedProperties": false,
|
|
6
6
|
"required": [
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"description": "Schema version for this comparison format."
|
|
18
18
|
},
|
|
19
19
|
"comparisonMode": {
|
|
20
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
20
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Comparison_Mode",
|
|
21
21
|
"description": "The mode of comparison being performed."
|
|
22
22
|
},
|
|
23
23
|
"timestamp": {
|
|
@@ -26,50 +26,50 @@
|
|
|
26
26
|
"description": "When this comparison was performed."
|
|
27
27
|
},
|
|
28
28
|
"generator": {
|
|
29
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
29
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Generator",
|
|
30
30
|
"description": "Information about the tool that generated this comparison."
|
|
31
31
|
},
|
|
32
32
|
"sources": {
|
|
33
33
|
"type": "array",
|
|
34
34
|
"minItems": 2,
|
|
35
35
|
"items": {
|
|
36
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
36
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Source"
|
|
37
37
|
},
|
|
38
38
|
"description": "The source documents being compared. At least two sources are required."
|
|
39
39
|
},
|
|
40
40
|
"matching": {
|
|
41
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
41
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Matching_Config",
|
|
42
42
|
"description": "Configuration for how requirements were matched across sources."
|
|
43
43
|
},
|
|
44
44
|
"summary": {
|
|
45
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
45
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Comparison_Summary",
|
|
46
46
|
"description": "Summary statistics for the overall comparison."
|
|
47
47
|
},
|
|
48
48
|
"baselineDiffs": {
|
|
49
49
|
"type": "array",
|
|
50
50
|
"items": {
|
|
51
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
51
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Baseline_Diff"
|
|
52
52
|
},
|
|
53
53
|
"description": "Comparison of baselines between sources."
|
|
54
54
|
},
|
|
55
55
|
"requirementDiffs": {
|
|
56
56
|
"type": "array",
|
|
57
57
|
"items": {
|
|
58
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
58
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Requirement_Diff"
|
|
59
59
|
},
|
|
60
60
|
"description": "Detailed comparison of individual requirements between sources."
|
|
61
61
|
},
|
|
62
62
|
"componentDiffs": {
|
|
63
63
|
"type": "array",
|
|
64
64
|
"items": {
|
|
65
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
65
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Component_Diff"
|
|
66
66
|
},
|
|
67
67
|
"description": "Comparison of components between two system documents. Used in systemDrift mode."
|
|
68
68
|
},
|
|
69
69
|
"packageDiffs": {
|
|
70
70
|
"type": "array",
|
|
71
71
|
"items": {
|
|
72
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
72
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Package_Diff"
|
|
73
73
|
},
|
|
74
74
|
"description": "Comparison of packages between two SBOMs. Used in systemDrift mode for SBOM comparison."
|
|
75
75
|
},
|
|
@@ -81,19 +81,19 @@
|
|
|
81
81
|
"drift": {
|
|
82
82
|
"type": "array",
|
|
83
83
|
"items": {
|
|
84
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
84
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Requirement_Diff"
|
|
85
85
|
},
|
|
86
86
|
"description": "External/metadata changes separate from status changes (Terraform pattern)."
|
|
87
87
|
},
|
|
88
88
|
"annotations": {
|
|
89
89
|
"type": "object",
|
|
90
90
|
"additionalProperties": {
|
|
91
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
91
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0#/$defs/Annotation"
|
|
92
92
|
},
|
|
93
93
|
"description": "Map of annotation IDs to annotation objects, providing context or action items for requirement diffs."
|
|
94
94
|
},
|
|
95
95
|
"integrity": {
|
|
96
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
96
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Integrity",
|
|
97
97
|
"description": "Cryptographic integrity information for verifying this comparison document."
|
|
98
98
|
},
|
|
99
99
|
"extensions": {
|
|
@@ -105,9 +105,9 @@
|
|
|
105
105
|
"description": "Structured comparison between two or more HDF security assessment documents. Supports temporal, baseline, fleet, and multi-source comparison modes.",
|
|
106
106
|
"title": "HDF Comparison",
|
|
107
107
|
"$defs": {
|
|
108
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
108
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0": {
|
|
109
109
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
110
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
110
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.3.0",
|
|
111
111
|
"title": "HDF Comparison Primitives",
|
|
112
112
|
"description": "Types for representing structured comparisons between HDF security assessment documents.",
|
|
113
113
|
"$defs": {
|
|
@@ -229,6 +229,7 @@
|
|
|
229
229
|
"properties": {
|
|
230
230
|
"op": {
|
|
231
231
|
"type": "string",
|
|
232
|
+
"title": "Op",
|
|
232
233
|
"enum": [
|
|
233
234
|
"add",
|
|
234
235
|
"remove",
|
|
@@ -276,7 +277,7 @@
|
|
|
276
277
|
"description": "The original format of the source document before conversion to HDF."
|
|
277
278
|
},
|
|
278
279
|
"checksum": {
|
|
279
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
280
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
|
|
280
281
|
"description": "Cryptographic checksum of the source document for integrity verification."
|
|
281
282
|
},
|
|
282
283
|
"assessmentTimestamp": {
|
|
@@ -285,13 +286,13 @@
|
|
|
285
286
|
"description": "When the source assessment was performed. ISO 8601 format."
|
|
286
287
|
},
|
|
287
288
|
"tool": {
|
|
288
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
289
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Tool",
|
|
289
290
|
"description": "The security tool that produced the assessment data in this source."
|
|
290
291
|
},
|
|
291
292
|
"components": {
|
|
292
293
|
"type": "array",
|
|
293
294
|
"items": {
|
|
294
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
295
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0#/$defs/Component"
|
|
295
296
|
},
|
|
296
297
|
"description": "The components assessed in this source."
|
|
297
298
|
},
|
|
@@ -592,6 +593,7 @@
|
|
|
592
593
|
},
|
|
593
594
|
"state": {
|
|
594
595
|
"type": "string",
|
|
596
|
+
"title": "Baseline Diff State",
|
|
595
597
|
"enum": [
|
|
596
598
|
"new",
|
|
597
599
|
"absent",
|
|
@@ -630,6 +632,7 @@
|
|
|
630
632
|
},
|
|
631
633
|
"state": {
|
|
632
634
|
"type": "string",
|
|
635
|
+
"title": "Baseline Diff State",
|
|
633
636
|
"enum": [
|
|
634
637
|
"new",
|
|
635
638
|
"absent",
|
|
@@ -639,10 +642,26 @@
|
|
|
639
642
|
"description": "The state of this component in the comparison."
|
|
640
643
|
},
|
|
641
644
|
"before": {
|
|
642
|
-
"
|
|
645
|
+
"oneOf": [
|
|
646
|
+
{
|
|
647
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0#/$defs/Component"
|
|
648
|
+
},
|
|
649
|
+
{
|
|
650
|
+
"type": "null"
|
|
651
|
+
}
|
|
652
|
+
],
|
|
653
|
+
"description": "Component snapshot from the old system document. Null when state is 'new'."
|
|
643
654
|
},
|
|
644
655
|
"after": {
|
|
645
|
-
"
|
|
656
|
+
"oneOf": [
|
|
657
|
+
{
|
|
658
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0#/$defs/Component"
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
"type": "null"
|
|
662
|
+
}
|
|
663
|
+
],
|
|
664
|
+
"description": "Component snapshot from the new system document. Null when state is 'absent'."
|
|
646
665
|
},
|
|
647
666
|
"fieldChanges": {
|
|
648
667
|
"type": "array",
|
|
@@ -673,6 +692,7 @@
|
|
|
673
692
|
},
|
|
674
693
|
"state": {
|
|
675
694
|
"type": "string",
|
|
695
|
+
"title": "Package Diff State",
|
|
676
696
|
"enum": [
|
|
677
697
|
"added",
|
|
678
698
|
"removed",
|
|
@@ -809,7 +829,7 @@
|
|
|
809
829
|
"before": {
|
|
810
830
|
"oneOf": [
|
|
811
831
|
{
|
|
812
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.
|
|
832
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.3.0#/$defs/Evaluated_Requirement"
|
|
813
833
|
},
|
|
814
834
|
{
|
|
815
835
|
"type": "null"
|
|
@@ -820,7 +840,7 @@
|
|
|
820
840
|
"after": {
|
|
821
841
|
"oneOf": [
|
|
822
842
|
{
|
|
823
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.
|
|
843
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.3.0#/$defs/Evaluated_Requirement"
|
|
824
844
|
},
|
|
825
845
|
{
|
|
826
846
|
"type": "null"
|
|
@@ -916,9 +936,9 @@
|
|
|
916
936
|
}
|
|
917
937
|
}
|
|
918
938
|
},
|
|
919
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
939
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0": {
|
|
920
940
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
921
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
941
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0",
|
|
922
942
|
"title": "HDF Common Primitives",
|
|
923
943
|
"description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
|
|
924
944
|
"$defs": {
|
|
@@ -1185,6 +1205,7 @@
|
|
|
1185
1205
|
},
|
|
1186
1206
|
"type": {
|
|
1187
1207
|
"type": "string",
|
|
1208
|
+
"title": "Identity Type",
|
|
1188
1209
|
"enum": [
|
|
1189
1210
|
"email",
|
|
1190
1211
|
"username",
|
|
@@ -1228,6 +1249,7 @@
|
|
|
1228
1249
|
"properties": {
|
|
1229
1250
|
"type": {
|
|
1230
1251
|
"type": "string",
|
|
1252
|
+
"title": "Evidence Type",
|
|
1231
1253
|
"enum": [
|
|
1232
1254
|
"screenshot",
|
|
1233
1255
|
"code",
|
|
@@ -1404,6 +1426,7 @@
|
|
|
1404
1426
|
},
|
|
1405
1427
|
"status": {
|
|
1406
1428
|
"type": "string",
|
|
1429
|
+
"title": "Milestone Status",
|
|
1407
1430
|
"enum": [
|
|
1408
1431
|
"pending",
|
|
1409
1432
|
"inProgress",
|
|
@@ -1671,6 +1694,7 @@
|
|
|
1671
1694
|
},
|
|
1672
1695
|
"controlType": {
|
|
1673
1696
|
"type": "string",
|
|
1697
|
+
"title": "Control Type",
|
|
1674
1698
|
"enum": [
|
|
1675
1699
|
"policy",
|
|
1676
1700
|
"procedure",
|
|
@@ -1686,6 +1710,7 @@
|
|
|
1686
1710
|
},
|
|
1687
1711
|
"applicability": {
|
|
1688
1712
|
"type": "string",
|
|
1713
|
+
"title": "Applicability",
|
|
1689
1714
|
"enum": [
|
|
1690
1715
|
"required",
|
|
1691
1716
|
"optional",
|
|
@@ -1696,7 +1721,7 @@
|
|
|
1696
1721
|
},
|
|
1697
1722
|
"examples": [
|
|
1698
1723
|
{
|
|
1699
|
-
"$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.
|
|
1724
|
+
"$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.3.0 (backward compatibility).",
|
|
1700
1725
|
"id": "SV-238196",
|
|
1701
1726
|
"title": "The Ubuntu operating system must enforce password complexity",
|
|
1702
1727
|
"impact": 0.5,
|
|
@@ -1833,9 +1858,9 @@
|
|
|
1833
1858
|
}
|
|
1834
1859
|
}
|
|
1835
1860
|
},
|
|
1836
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
1861
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0": {
|
|
1837
1862
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1838
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
1863
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0",
|
|
1839
1864
|
"title": "HDF Extension Primitives",
|
|
1840
1865
|
"description": "Extension types for waivers, attestations, generators, and integrity.",
|
|
1841
1866
|
"$defs": {
|
|
@@ -1863,15 +1888,15 @@
|
|
|
1863
1888
|
],
|
|
1864
1889
|
"properties": {
|
|
1865
1890
|
"type": {
|
|
1866
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1891
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0#/$defs/Override_Type",
|
|
1867
1892
|
"description": "The type of override applied to this requirement."
|
|
1868
1893
|
},
|
|
1869
1894
|
"status": {
|
|
1870
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
1895
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Result_Status",
|
|
1871
1896
|
"description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
|
|
1872
1897
|
},
|
|
1873
1898
|
"impact": {
|
|
1874
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1899
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0#/$defs/Impact_Override",
|
|
1875
1900
|
"description": "Override to the requirement's impact score. At least one of status or impact must be set."
|
|
1876
1901
|
},
|
|
1877
1902
|
"reason": {
|
|
@@ -1879,7 +1904,7 @@
|
|
|
1879
1904
|
"description": "Explanation for why this override was applied."
|
|
1880
1905
|
},
|
|
1881
1906
|
"appliedBy": {
|
|
1882
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1907
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
|
|
1883
1908
|
"description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
|
|
1884
1909
|
},
|
|
1885
1910
|
"appliedAt": {
|
|
@@ -1893,19 +1918,28 @@
|
|
|
1893
1918
|
"description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
|
|
1894
1919
|
},
|
|
1895
1920
|
"signature": {
|
|
1896
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1921
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Signature",
|
|
1897
1922
|
"description": "Optional digital signature for enhanced trust and non-repudiation. Supports hardware security tokens (PKCS#11/PKCS#12), Yubikeys, GPG keys, passkeys, and other signing methods."
|
|
1898
1923
|
},
|
|
1899
1924
|
"evidence": {
|
|
1900
1925
|
"type": "array",
|
|
1901
1926
|
"items": {
|
|
1902
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1927
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Evidence"
|
|
1903
1928
|
},
|
|
1904
1929
|
"description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
|
|
1905
1930
|
},
|
|
1906
1931
|
"previousChecksum": {
|
|
1907
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1932
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
|
|
1908
1933
|
"description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
|
|
1934
|
+
},
|
|
1935
|
+
"cvss": {
|
|
1936
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0#/$defs/Cvss",
|
|
1937
|
+
"$comment": "When present alongside impact.value on a riskAdjustment override, impact.value should be approximately cvss.computedScore / 10.0. Soft consistency rule — validators may warn but should not error. The cvss block makes Environmental/Threat enrichment auditable.",
|
|
1938
|
+
"description": "Structured CVSS scoring data backing this override. Captures the rubric (which Environmental/Threat metrics the consumer modified, the recomputed score) used to justify a riskAdjustment. For other override types this is optional context."
|
|
1939
|
+
},
|
|
1940
|
+
"justification": {
|
|
1941
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0#/$defs/Justification",
|
|
1942
|
+
"description": "Structured controlled-vocabulary classification for why this override applies. Complements (does not replace) the free-text 'reason' field. Most useful on falsePositive and attestation overrides where the structured category enables filtering and lossless round-trip with VEX / OSCAL / FedRAMP DR. See the Justification primitive for the precedent vocabulary and rationale."
|
|
1909
1943
|
}
|
|
1910
1944
|
},
|
|
1911
1945
|
"examples": [
|
|
@@ -1997,6 +2031,7 @@
|
|
|
1997
2031
|
"properties": {
|
|
1998
2032
|
"type": {
|
|
1999
2033
|
"type": "string",
|
|
2034
|
+
"title": "POAM Type",
|
|
2000
2035
|
"enum": [
|
|
2001
2036
|
"remediation",
|
|
2002
2037
|
"mitigation",
|
|
@@ -2010,7 +2045,7 @@
|
|
|
2010
2045
|
"description": "Detailed explanation of the plan, including what actions will be taken."
|
|
2011
2046
|
},
|
|
2012
2047
|
"appliedBy": {
|
|
2013
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2048
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
|
|
2014
2049
|
"description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
|
|
2015
2050
|
},
|
|
2016
2051
|
"appliedAt": {
|
|
@@ -2026,23 +2061,23 @@
|
|
|
2026
2061
|
"milestones": {
|
|
2027
2062
|
"type": "array",
|
|
2028
2063
|
"items": {
|
|
2029
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2064
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Milestone"
|
|
2030
2065
|
},
|
|
2031
2066
|
"description": "Optional array of milestones tracking progress toward completion."
|
|
2032
2067
|
},
|
|
2033
2068
|
"signature": {
|
|
2034
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2069
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Signature",
|
|
2035
2070
|
"description": "Optional digital signature for enhanced trust and non-repudiation."
|
|
2036
2071
|
},
|
|
2037
2072
|
"evidence": {
|
|
2038
2073
|
"type": "array",
|
|
2039
2074
|
"items": {
|
|
2040
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2075
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Evidence"
|
|
2041
2076
|
},
|
|
2042
2077
|
"description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
|
|
2043
2078
|
},
|
|
2044
2079
|
"previousChecksum": {
|
|
2045
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2080
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
|
|
2046
2081
|
"description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
|
|
2047
2082
|
}
|
|
2048
2083
|
},
|
|
@@ -2193,7 +2228,7 @@
|
|
|
2193
2228
|
},
|
|
2194
2229
|
"properties": {
|
|
2195
2230
|
"algorithm": {
|
|
2196
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2231
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Hash_Algorithm",
|
|
2197
2232
|
"description": "The hash algorithm used for the checksum."
|
|
2198
2233
|
},
|
|
2199
2234
|
"checksum": {
|
|
@@ -2226,9 +2261,9 @@
|
|
|
2226
2261
|
}
|
|
2227
2262
|
}
|
|
2228
2263
|
},
|
|
2229
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2264
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0": {
|
|
2230
2265
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2231
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2266
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0",
|
|
2232
2267
|
"title": "HDF Amendment Primitives",
|
|
2233
2268
|
"description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
|
|
2234
2269
|
"$defs": {
|
|
@@ -2246,6 +2281,24 @@
|
|
|
2246
2281
|
"description": "The type of amendment, aligned with FedRAMP deviation request categories. 'waiver': risk accepted by Authorizing Official. 'attestation': manually verified by assessor. 'poam': remediation tracked (no status change). 'inherited': control provided by another component or system. 'falsePositive': scanner incorrectly identified a finding — for compliance scans (STIG, CIS), the check actually passes, so status is typically set to 'passed'; for vulnerability scans (CVE, SCA), the flagged vulnerability does not apply to this system, so status is typically set to 'notApplicable'. The disposition field on the requirement distinguishes false positives from genuinely not-applicable findings. 'riskAdjustment': impact score adjusted based on environmental context (FedRAMP Risk Adjustment); does not change pass/fail status, only impact via the impact field. 'operationalRequirement': deviation required by operational constraints (FedRAMP Operational Requirement); the finding cannot be remediated because the system requires the affected functionality. Remains an open risk. Migration note: 'exception' was removed in v3.1.0 — use 'waiver' with status 'notApplicable' instead.",
|
|
2247
2282
|
"title": "Override Type"
|
|
2248
2283
|
},
|
|
2284
|
+
"Justification": {
|
|
2285
|
+
"type": "string",
|
|
2286
|
+
"enum": [
|
|
2287
|
+
"component_not_present",
|
|
2288
|
+
"vulnerable_code_not_present",
|
|
2289
|
+
"vulnerable_code_not_in_execute_path",
|
|
2290
|
+
"vulnerable_code_cannot_be_controlled_by_adversary",
|
|
2291
|
+
"inline_mitigations_already_exist",
|
|
2292
|
+
"requires_configuration",
|
|
2293
|
+
"requires_dependency",
|
|
2294
|
+
"requires_environment",
|
|
2295
|
+
"protected_by_compiler",
|
|
2296
|
+
"protected_at_runtime",
|
|
2297
|
+
"protected_at_perimeter"
|
|
2298
|
+
],
|
|
2299
|
+
"description": "Structured controlled-vocabulary reason for an override, complementing the free-text 'reason' field. 'reason' carries the human-readable rationale an auditor reads; 'justification' carries the machine-readable category enabling filtering, aggregation, and lossless round-trip with structured ecosystems (VEX, OSCAL, FedRAMP DR). Both fields may be present simultaneously and are NOT redundant: 'reason' explains the specific circumstance; 'justification' classifies it. Authors SHOULD populate both when a controlled-vocabulary value applies — the enum value alone is not self-explanatory to an auditor. The vocabulary is drawn from the VEX ecosystem: the first five values are common across OpenVEX, CSAF VEX, and CycloneDX VEX; the remaining six (requires_configuration / requires_dependency / requires_environment / protected_by_compiler / protected_at_runtime / protected_at_perimeter) are CycloneDX-specific and describe why the vulnerable code path is unreachable in the deployed configuration. The enum is extended additively across schema versions as other ecosystems' controlled vocabularies are integrated; documents using values added in a newer schema version will fail validation against an older schema. Consumers SHOULD validate against the schema version declared by the document ($schema) rather than assume a fixed vocabulary.",
|
|
2300
|
+
"title": "Justification"
|
|
2301
|
+
},
|
|
2249
2302
|
"Impact_Override": {
|
|
2250
2303
|
"type": "object",
|
|
2251
2304
|
"required": [
|
|
@@ -2265,6 +2318,7 @@
|
|
|
2265
2318
|
},
|
|
2266
2319
|
"Standalone_Override": {
|
|
2267
2320
|
"type": "object",
|
|
2321
|
+
"description": "A standalone override to a requirement's compliance status or risk impact. Validation has two branches gated on 'type': when type is 'operationalRequirement', neither 'status' nor 'impact' may be set — the override records accepted risk without changing the finding (documentation-only). For all other types, at least one of 'status' or 'impact' must be set. This rule aligns with: (1) OSCAL Assessment Results — finding.target.status and finding.associated-risk[].facet[] are separate axes (https://pages.nist.gov/OSCAL/learn/concepts/layer/assessment/assessment-results/); (2) FedRAMP deviation request types — Risk Adjustment changes impact only, Operational Requirement documents acceptance only, False Positive changes status (https://www.ignyteplatform.com/blog/fedramp/fedramp-deviation-requests-submit/); (3) NIST SP 800-37 RMF — risk response (accept/mitigate/transfer) is a separate step from control assessment status (https://csrc.nist.gov/pubs/sp/800/37/r2/final).",
|
|
2268
2322
|
"unevaluatedProperties": false,
|
|
2269
2323
|
"required": [
|
|
2270
2324
|
"type",
|
|
@@ -2274,18 +2328,48 @@
|
|
|
2274
2328
|
"appliedAt",
|
|
2275
2329
|
"expiresAt"
|
|
2276
2330
|
],
|
|
2277
|
-
"
|
|
2278
|
-
{
|
|
2279
|
-
"
|
|
2280
|
-
"
|
|
2281
|
-
|
|
2331
|
+
"if": {
|
|
2332
|
+
"properties": {
|
|
2333
|
+
"type": {
|
|
2334
|
+
"enum": [
|
|
2335
|
+
"operationalRequirement"
|
|
2336
|
+
]
|
|
2337
|
+
}
|
|
2282
2338
|
},
|
|
2283
|
-
|
|
2284
|
-
"
|
|
2285
|
-
|
|
2339
|
+
"required": [
|
|
2340
|
+
"type"
|
|
2341
|
+
]
|
|
2342
|
+
},
|
|
2343
|
+
"then": {
|
|
2344
|
+
"not": {
|
|
2345
|
+
"anyOf": [
|
|
2346
|
+
{
|
|
2347
|
+
"required": [
|
|
2348
|
+
"status"
|
|
2349
|
+
]
|
|
2350
|
+
},
|
|
2351
|
+
{
|
|
2352
|
+
"required": [
|
|
2353
|
+
"impact"
|
|
2354
|
+
]
|
|
2355
|
+
}
|
|
2286
2356
|
]
|
|
2287
2357
|
}
|
|
2288
|
-
|
|
2358
|
+
},
|
|
2359
|
+
"else": {
|
|
2360
|
+
"anyOf": [
|
|
2361
|
+
{
|
|
2362
|
+
"required": [
|
|
2363
|
+
"status"
|
|
2364
|
+
]
|
|
2365
|
+
},
|
|
2366
|
+
{
|
|
2367
|
+
"required": [
|
|
2368
|
+
"impact"
|
|
2369
|
+
]
|
|
2370
|
+
}
|
|
2371
|
+
]
|
|
2372
|
+
},
|
|
2289
2373
|
"properties": {
|
|
2290
2374
|
"type": {
|
|
2291
2375
|
"$ref": "#/$defs/Override_Type",
|
|
@@ -2300,7 +2384,7 @@
|
|
|
2300
2384
|
"description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
|
|
2301
2385
|
},
|
|
2302
2386
|
"status": {
|
|
2303
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2387
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Result_Status",
|
|
2304
2388
|
"description": "The new status this amendment sets. Optional when only impact is being overridden."
|
|
2305
2389
|
},
|
|
2306
2390
|
"impact": {
|
|
@@ -2312,7 +2396,7 @@
|
|
|
2312
2396
|
"description": "Justification for this amendment."
|
|
2313
2397
|
},
|
|
2314
2398
|
"appliedBy": {
|
|
2315
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2399
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
|
|
2316
2400
|
"description": "Identity of who applied this amendment."
|
|
2317
2401
|
},
|
|
2318
2402
|
"appliedAt": {
|
|
@@ -2328,22 +2412,31 @@
|
|
|
2328
2412
|
"evidence": {
|
|
2329
2413
|
"type": "array",
|
|
2330
2414
|
"items": {
|
|
2331
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2415
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Evidence"
|
|
2332
2416
|
},
|
|
2333
2417
|
"description": "Supporting evidence (screenshots, logs, URLs, documents)."
|
|
2334
2418
|
},
|
|
2335
2419
|
"signature": {
|
|
2336
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2420
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Signature",
|
|
2337
2421
|
"description": "Digital signature for non-repudiation."
|
|
2338
2422
|
},
|
|
2339
2423
|
"previousChecksum": {
|
|
2340
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2424
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
|
|
2341
2425
|
"description": "Checksum of the prior amendment in the chain. Creates a tamper-evident linked list. Null for the first amendment."
|
|
2342
2426
|
},
|
|
2427
|
+
"cvss": {
|
|
2428
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0#/$defs/Cvss",
|
|
2429
|
+
"$comment": "When present alongside impact.value on a riskAdjustment override, impact.value should be approximately cvss.computedScore / 10.0. Soft consistency rule — validators may warn but should not error. The cvss block makes Environmental/Threat enrichment auditable.",
|
|
2430
|
+
"description": "Structured CVSS scoring data backing this override. Captures the rubric (which Environmental/Threat metrics the consumer modified, the recomputed score) used to justify a riskAdjustment. For other override types this is optional context."
|
|
2431
|
+
},
|
|
2432
|
+
"justification": {
|
|
2433
|
+
"$ref": "#/$defs/Justification",
|
|
2434
|
+
"description": "Structured controlled-vocabulary classification for why this override applies. Complements (does not replace) the free-text 'reason' field. Most useful on falsePositive and attestation overrides where the structured category enables filtering and lossless round-trip with VEX / OSCAL / FedRAMP DR. See the Justification primitive for the precedent vocabulary and rationale."
|
|
2435
|
+
},
|
|
2343
2436
|
"milestones": {
|
|
2344
2437
|
"type": "array",
|
|
2345
2438
|
"items": {
|
|
2346
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2439
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Milestone"
|
|
2347
2440
|
},
|
|
2348
2441
|
"description": "Remediation milestones (primarily for POA&M type amendments)."
|
|
2349
2442
|
},
|
|
@@ -2356,6 +2449,13 @@
|
|
|
2356
2449
|
"type": "string",
|
|
2357
2450
|
"format": "uuid",
|
|
2358
2451
|
"description": "componentId of the component this amendment is scoped to. When set, the amendment only applies to the specified component. When omitted, the amendment applies system-wide."
|
|
2452
|
+
},
|
|
2453
|
+
"affectedPackages": {
|
|
2454
|
+
"type": "array",
|
|
2455
|
+
"items": {
|
|
2456
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.3.0#/$defs/Affected_Package"
|
|
2457
|
+
},
|
|
2458
|
+
"description": "Software packages this amendment is scoped to, distinct from componentRef (which scopes to an HDF-internal Component by UUID). Use when the source amendment format references packages by purl/cpe/name+version — e.g., VEX `affects[]` / `products[]`, OSCAL POA&M `subjects[]`, FedRAMP component-aware amendments. Symmetric with Evaluated_Requirement.affectedPackages, which scopes findings to the same package vocabulary. When omitted, the amendment applies system-wide (or only to componentRef when that is set)."
|
|
2359
2459
|
}
|
|
2360
2460
|
},
|
|
2361
2461
|
"examples": [
|
|
@@ -2457,16 +2557,38 @@
|
|
|
2457
2557
|
},
|
|
2458
2558
|
"appliedAt": "2026-03-26T10:00:00Z",
|
|
2459
2559
|
"expiresAt": "2026-09-26T00:00:00Z"
|
|
2560
|
+
},
|
|
2561
|
+
{
|
|
2562
|
+
"$comment": "VEX-style import — falsePositive scoped to specific packages by purl. The affectedPackages array carries structured product identity instead of squeezing 'Products: …' into the reason free-text field.",
|
|
2563
|
+
"type": "falsePositive",
|
|
2564
|
+
"requirementId": "CVE-2026-12345",
|
|
2565
|
+
"status": "notApplicable",
|
|
2566
|
+
"reason": "Vulnerable code path is not present in our build — dependency compiled with the affected module disabled",
|
|
2567
|
+
"justification": "vulnerable_code_not_present",
|
|
2568
|
+
"appliedBy": {
|
|
2569
|
+
"type": "email",
|
|
2570
|
+
"identifier": "secops@org.gov"
|
|
2571
|
+
},
|
|
2572
|
+
"appliedAt": "2026-05-01T10:00:00Z",
|
|
2573
|
+
"expiresAt": "2027-05-01T00:00:00Z",
|
|
2574
|
+
"affectedPackages": [
|
|
2575
|
+
{
|
|
2576
|
+
"purl": "pkg:npm/lodash@4.17.20"
|
|
2577
|
+
},
|
|
2578
|
+
{
|
|
2579
|
+
"purl": "pkg:rpm/openssl@1.1.1k-2.el8",
|
|
2580
|
+
"fixedInVersion": "1.1.1k-3.el8"
|
|
2581
|
+
}
|
|
2582
|
+
]
|
|
2460
2583
|
}
|
|
2461
2584
|
],
|
|
2462
|
-
"description": "A standalone amendment that modifies a requirement's compliance status and/or impact score. At least one of status or impact must be set. Extends the inline Override concept with requirementId and baselineRef for use outside of results documents.",
|
|
2463
2585
|
"title": "Standalone Override"
|
|
2464
2586
|
}
|
|
2465
2587
|
}
|
|
2466
2588
|
},
|
|
2467
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2589
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0": {
|
|
2468
2590
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2469
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2591
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0",
|
|
2470
2592
|
"title": "HDF Result Primitives",
|
|
2471
2593
|
"description": "Types for representing assessment results and statuses.",
|
|
2472
2594
|
"$defs": {
|
|
@@ -2597,9 +2719,328 @@
|
|
|
2597
2719
|
}
|
|
2598
2720
|
}
|
|
2599
2721
|
},
|
|
2600
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/
|
|
2722
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0": {
|
|
2601
2723
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2602
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/
|
|
2724
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0",
|
|
2725
|
+
"title": "HDF CVSS Primitives",
|
|
2726
|
+
"description": "Types for representing CVSS (Common Vulnerability Scoring System) data attached to assessment findings. Supports CVSS v2.0, v3.0, v3.1, and v4.0 metric groups (Base, Threat, Environmental, Supplemental).",
|
|
2727
|
+
"$defs": {
|
|
2728
|
+
"Cvss_Severity": {
|
|
2729
|
+
"type": "string",
|
|
2730
|
+
"enum": [
|
|
2731
|
+
"none",
|
|
2732
|
+
"low",
|
|
2733
|
+
"medium",
|
|
2734
|
+
"high",
|
|
2735
|
+
"critical"
|
|
2736
|
+
],
|
|
2737
|
+
"description": "Qualitative CVSS severity band. Aligns with FIRST/NVD bands: none=0.0, low=0.1-3.9, medium=4.0-6.9, high=7.0-8.9, critical=9.0-10.0. Distinct from the broader Severity enum used on Requirement_Core (which includes 'informational').",
|
|
2738
|
+
"title": "CVSS Severity"
|
|
2739
|
+
},
|
|
2740
|
+
"Cvss": {
|
|
2741
|
+
"type": "object",
|
|
2742
|
+
"unevaluatedProperties": false,
|
|
2743
|
+
"required": [
|
|
2744
|
+
"version"
|
|
2745
|
+
],
|
|
2746
|
+
"anyOf": [
|
|
2747
|
+
{
|
|
2748
|
+
"required": [
|
|
2749
|
+
"baseScore"
|
|
2750
|
+
]
|
|
2751
|
+
},
|
|
2752
|
+
{
|
|
2753
|
+
"required": [
|
|
2754
|
+
"baseVector"
|
|
2755
|
+
]
|
|
2756
|
+
},
|
|
2757
|
+
{
|
|
2758
|
+
"required": [
|
|
2759
|
+
"threatVector"
|
|
2760
|
+
]
|
|
2761
|
+
},
|
|
2762
|
+
{
|
|
2763
|
+
"required": [
|
|
2764
|
+
"threatScore"
|
|
2765
|
+
]
|
|
2766
|
+
},
|
|
2767
|
+
{
|
|
2768
|
+
"required": [
|
|
2769
|
+
"environmentalVector"
|
|
2770
|
+
]
|
|
2771
|
+
},
|
|
2772
|
+
{
|
|
2773
|
+
"required": [
|
|
2774
|
+
"environmentalScore"
|
|
2775
|
+
]
|
|
2776
|
+
},
|
|
2777
|
+
{
|
|
2778
|
+
"required": [
|
|
2779
|
+
"supplementalVector"
|
|
2780
|
+
]
|
|
2781
|
+
},
|
|
2782
|
+
{
|
|
2783
|
+
"required": [
|
|
2784
|
+
"computedScore"
|
|
2785
|
+
]
|
|
2786
|
+
}
|
|
2787
|
+
],
|
|
2788
|
+
"$comment": "Only `version` is required; every metric/score field is optional because a single Cvss instance may represent vendor-supplied Base data (on a finding's cvss[]), consumer-supplied enrichment (on a riskAdjustment override — Environmental/Threat/Supplemental deltas with NO base, since base is the finding's scan-specific vendor data), or a fully-resolved effectiveCvss. The Base/Threat/Environmental/Supplemental groups do not partition cleanly into vendor-vs-consumer (Threat straddles: vendor temporal data and consumer exploit-maturity both live here), so a single permissive type is more honest than separate vendor/consumer types. The anyOf guardrail rejects a content-free object (e.g. {version} alone) by requiring at least one substantive metric or score. baseVector remains optional even when baseScore is present: some vendor tools (Twistlock/Prisma Cloud) emit a final score without the vector that derived it — that score is captured structurally rather than lost.",
|
|
2789
|
+
"properties": {
|
|
2790
|
+
"version": {
|
|
2791
|
+
"type": "string",
|
|
2792
|
+
"enum": [
|
|
2793
|
+
"2.0",
|
|
2794
|
+
"3.0",
|
|
2795
|
+
"3.1",
|
|
2796
|
+
"4.0"
|
|
2797
|
+
],
|
|
2798
|
+
"description": "The CVSS specification version this entry conforms to. Vendor scanners typically emit 3.1 or 4.0; legacy data may use 2.0 or 3.0."
|
|
2799
|
+
},
|
|
2800
|
+
"source": {
|
|
2801
|
+
"type": "string",
|
|
2802
|
+
"description": "Optional identifier the CVSS data is associated with — most commonly a CVE ID (e.g., 'CVE-2024-12345'), but may also be a vendor advisory ID, GHSA, or similar.",
|
|
2803
|
+
"examples": [
|
|
2804
|
+
"CVE-2024-12345",
|
|
2805
|
+
"GHSA-9hjg-9r4m-mvj7",
|
|
2806
|
+
"RHSA-2024:0123"
|
|
2807
|
+
]
|
|
2808
|
+
},
|
|
2809
|
+
"baseVector": {
|
|
2810
|
+
"type": "string",
|
|
2811
|
+
"$comment": "Optional. Permissive umbrella pattern accepting any FIRST CVSS vector shape — version prefix is optional (CVSS 2.0 has no prefix), metric tokens are alphanumeric uppercase pairs separated by '/'. Strict per-version semantic validation belongs in a separate utility (hdf-utilities `validateCvssVector`), not in the schema. See https://www.first.org/cvss/v4.0/specification-document for the v4 grammar and earlier-version documents for v2/v3.",
|
|
2812
|
+
"pattern": "^(CVSS:[234]\\.[01]/)?[A-Za-z]+:[A-Za-z]+(/[A-Za-z]+:[A-Za-z]+)*$",
|
|
2813
|
+
"description": "Optional Base metric group vector string as emitted by the source (e.g., 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'). For CVSS 2.0 the version prefix is omitted. Some vendor tools emit a final baseScore without the vector — in that case this field is absent and the score cannot be recomputed or decomposed. The pattern accepts any version-prefixed or prefix-less metric token sequence; semantic validity of individual metrics is checked by hdf-utilities, not by the schema."
|
|
2814
|
+
},
|
|
2815
|
+
"baseScore": {
|
|
2816
|
+
"type": "number",
|
|
2817
|
+
"minimum": 0,
|
|
2818
|
+
"maximum": 10,
|
|
2819
|
+
"description": "The Base score (0.0–10.0) computed from the base vector. Reflects the intrinsic, vendor-published severity before consumer enrichment."
|
|
2820
|
+
},
|
|
2821
|
+
"baseSeverity": {
|
|
2822
|
+
"$ref": "#/$defs/Cvss_Severity",
|
|
2823
|
+
"description": "Qualitative severity band corresponding to baseScore. CVSS 2.0 does not natively use 'none' or 'critical' bands; map accordingly when populating."
|
|
2824
|
+
},
|
|
2825
|
+
"threatVector": {
|
|
2826
|
+
"type": "string",
|
|
2827
|
+
"$comment": "Threat (formerly Temporal in v3.x) metric group. Consumer-side metrics: Exploit Maturity, Remediation Level, Report Confidence (v3 added E/RL/RC; v4 keeps E only). Same permissive grammar as baseVector but the CVSS version prefix is rarely repeated here.",
|
|
2828
|
+
"pattern": "^(CVSS:[234]\\.[01]/)?[A-Za-z]+:[A-Za-z]+(/[A-Za-z]+:[A-Za-z]+)*$",
|
|
2829
|
+
"description": "Optional Threat metric group vector segment (e.g., 'E:U/RL:O/RC:C' for CVSS 3.1, or 'E:A' for CVSS 4.0). Consumer-supplied — captures real-world exploitation and remediation context the vendor cannot know."
|
|
2830
|
+
},
|
|
2831
|
+
"threatScore": {
|
|
2832
|
+
"type": "number",
|
|
2833
|
+
"minimum": 0,
|
|
2834
|
+
"maximum": 10,
|
|
2835
|
+
"description": "Optional score (0.0–10.0) recomputed after applying Threat metrics. Always less than or equal to baseScore in practice."
|
|
2836
|
+
},
|
|
2837
|
+
"environmentalVector": {
|
|
2838
|
+
"type": "string",
|
|
2839
|
+
"$comment": "Environmental metric group. Consumer-side: Modified Base metrics (MAV, MAC, MC, MI, MA, ...) plus Security Requirements (CR, IR, AR). Captures how a particular consumer's environment changes the impact of the vulnerability.",
|
|
2840
|
+
"pattern": "^(CVSS:[234]\\.[01]/)?[A-Za-z]+:[A-Za-z]+(/[A-Za-z]+:[A-Za-z]+)*$",
|
|
2841
|
+
"description": "Optional Environmental metric group vector segment (e.g., 'MAV:N/CR:H/IR:H/AR:H'). Consumer-supplied — reflects the deployment context (criticality, mitigations, network exposure)."
|
|
2842
|
+
},
|
|
2843
|
+
"environmentalScore": {
|
|
2844
|
+
"type": "number",
|
|
2845
|
+
"minimum": 0,
|
|
2846
|
+
"maximum": 10,
|
|
2847
|
+
"description": "Optional score (0.0–10.0) recomputed after applying Environmental metrics."
|
|
2848
|
+
},
|
|
2849
|
+
"supplementalVector": {
|
|
2850
|
+
"type": "string",
|
|
2851
|
+
"$comment": "Supplemental metric group is unique to CVSS 4.0. It conveys context (Safety, Automatable, Recovery, Value Density, Vulnerability Response Effort, Provider Urgency) but by spec does NOT affect any score — purely informational.",
|
|
2852
|
+
"pattern": "^(CVSS:[234]\\.[01]/)?[A-Za-z]+:[A-Za-z]+(/[A-Za-z]+:[A-Za-z]+)*$",
|
|
2853
|
+
"description": "Optional Supplemental metric group vector segment (CVSS 4.0 only). Examples: 'S:P/AU:N/V:C/RE:M/U:Amber'. Per CVSS 4.0 spec, supplemental metrics convey additional context but have no impact on the computed score."
|
|
2854
|
+
},
|
|
2855
|
+
"computedScore": {
|
|
2856
|
+
"type": "number",
|
|
2857
|
+
"minimum": 0,
|
|
2858
|
+
"maximum": 10,
|
|
2859
|
+
"description": "Optional final score after combining Base + Threat + Environmental metrics. This is the score consumers should treat as authoritative for risk decisions when present."
|
|
2860
|
+
},
|
|
2861
|
+
"computedSeverity": {
|
|
2862
|
+
"$ref": "#/$defs/Cvss_Severity",
|
|
2863
|
+
"description": "Qualitative severity band corresponding to computedScore. Same band convention as baseSeverity."
|
|
2864
|
+
}
|
|
2865
|
+
},
|
|
2866
|
+
"examples": [
|
|
2867
|
+
{
|
|
2868
|
+
"$comment": "Base-only: vendor-supplied CVSS 3.1 data exactly as a scanner (e.g., Nessus, Grype) would emit it. No consumer enrichment yet.",
|
|
2869
|
+
"version": "3.1",
|
|
2870
|
+
"source": "CVE-2024-12345",
|
|
2871
|
+
"baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
|
|
2872
|
+
"baseScore": 9.8,
|
|
2873
|
+
"baseSeverity": "critical"
|
|
2874
|
+
},
|
|
2875
|
+
{
|
|
2876
|
+
"$comment": "Base + Threat: consumer added Exploit Maturity ('E:U' = Unproven) and Remediation Level ('RL:O' = Official Fix) to a HTTP/2 'Rapid Reset' DoS finding. Threat score drops from base 7.5 to 5.5.",
|
|
2877
|
+
"version": "3.1",
|
|
2878
|
+
"source": "CVE-2023-44487",
|
|
2879
|
+
"baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
|
|
2880
|
+
"baseScore": 7.5,
|
|
2881
|
+
"baseSeverity": "high",
|
|
2882
|
+
"threatVector": "E:U/RL:O/RC:C",
|
|
2883
|
+
"threatScore": 5.5
|
|
2884
|
+
},
|
|
2885
|
+
{
|
|
2886
|
+
"$comment": "Base + Environmental: consumer asserts the affected system is high-criticality (CR:H, IR:H, AR:H) AND network-reachable in their environment (MAV:N). Environmental score reflects deployment risk for the xz-utils backdoor.",
|
|
2887
|
+
"version": "3.1",
|
|
2888
|
+
"source": "CVE-2024-3094",
|
|
2889
|
+
"baseVector": "CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H",
|
|
2890
|
+
"baseScore": 6.7,
|
|
2891
|
+
"baseSeverity": "medium",
|
|
2892
|
+
"environmentalVector": "MAV:N/CR:H/IR:H/AR:H",
|
|
2893
|
+
"environmentalScore": 9,
|
|
2894
|
+
"computedScore": 9,
|
|
2895
|
+
"computedSeverity": "critical"
|
|
2896
|
+
},
|
|
2897
|
+
{
|
|
2898
|
+
"$comment": "Full CVSS 4.0: vendor base + consumer threat (E:A = Attacked, exploits seen in the wild) + environmental (high CIA requirements) + supplemental context (S:P = present safety impact, AU:N = no autonomous spread, RE:M = moderate response effort) for the Fortinet FortiOS pre-auth RCE. computedScore reflects post-mitigation final risk.",
|
|
2899
|
+
"version": "4.0",
|
|
2900
|
+
"source": "CVE-2024-21762",
|
|
2901
|
+
"baseVector": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N",
|
|
2902
|
+
"baseScore": 9.8,
|
|
2903
|
+
"baseSeverity": "critical",
|
|
2904
|
+
"threatVector": "E:A",
|
|
2905
|
+
"threatScore": 9.3,
|
|
2906
|
+
"environmentalVector": "MAV:N/CR:H/IR:H/AR:H",
|
|
2907
|
+
"environmentalScore": 9.5,
|
|
2908
|
+
"supplementalVector": "S:P/AU:N/V:C/RE:M",
|
|
2909
|
+
"computedScore": 4.2,
|
|
2910
|
+
"computedSeverity": "medium"
|
|
2911
|
+
},
|
|
2912
|
+
{
|
|
2913
|
+
"$comment": "CVSS 2.0 legacy: Heartbleed (CVE-2014-0160) as still reported by older scanner output and legacy NVD data. CVSS 2.0 vectors have no 'CVSS:2.0/' prefix.",
|
|
2914
|
+
"version": "2.0",
|
|
2915
|
+
"source": "CVE-2014-0160",
|
|
2916
|
+
"baseVector": "AV:N/AC:L/Au:N/C:P/I:N/A:N",
|
|
2917
|
+
"baseScore": 5,
|
|
2918
|
+
"baseSeverity": "medium"
|
|
2919
|
+
}
|
|
2920
|
+
],
|
|
2921
|
+
"description": "A CVSS (Common Vulnerability Scoring System) score record for a vulnerability finding. Captures the vendor-supplied Base metric group and optional consumer-supplied Threat, Environmental, and Supplemental metric groups. Supports all four CVSS major versions (2.0, 3.0, 3.1, 4.0). Vector strings are validated against a permissive umbrella grammar; semantic validation (correct metrics per version, correct values per metric) is performed by the hdf-utilities `validateCvssVector` helper rather than at the schema layer.",
|
|
2922
|
+
"title": "CVSS"
|
|
2923
|
+
}
|
|
2924
|
+
}
|
|
2925
|
+
},
|
|
2926
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.3.0": {
|
|
2927
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2928
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.3.0",
|
|
2929
|
+
"title": "HDF Affected Package Primitives",
|
|
2930
|
+
"description": "Types for representing the software package(s) affected by a vulnerability finding.",
|
|
2931
|
+
"$defs": {
|
|
2932
|
+
"Affected_Package": {
|
|
2933
|
+
"type": "object",
|
|
2934
|
+
"unevaluatedProperties": false,
|
|
2935
|
+
"anyOf": [
|
|
2936
|
+
{
|
|
2937
|
+
"required": [
|
|
2938
|
+
"name",
|
|
2939
|
+
"version",
|
|
2940
|
+
"ecosystem"
|
|
2941
|
+
]
|
|
2942
|
+
},
|
|
2943
|
+
{
|
|
2944
|
+
"required": [
|
|
2945
|
+
"purl"
|
|
2946
|
+
]
|
|
2947
|
+
},
|
|
2948
|
+
{
|
|
2949
|
+
"required": [
|
|
2950
|
+
"cpe"
|
|
2951
|
+
]
|
|
2952
|
+
}
|
|
2953
|
+
],
|
|
2954
|
+
"properties": {
|
|
2955
|
+
"name": {
|
|
2956
|
+
"type": "string",
|
|
2957
|
+
"description": "The package name as published in its ecosystem. Examples: 'openssl' (rpm), 'lodash' (npm), 'org.apache.logging.log4j:log4j-core' (maven, group:artifact)."
|
|
2958
|
+
},
|
|
2959
|
+
"version": {
|
|
2960
|
+
"type": "string",
|
|
2961
|
+
"description": "The exact version of the package that the vulnerability scanner observed. Use the ecosystem's native version string verbatim (e.g., '1.1.1k-7.el8_4' for rpm, '4.17.20' for npm)."
|
|
2962
|
+
},
|
|
2963
|
+
"ecosystem": {
|
|
2964
|
+
"type": "string",
|
|
2965
|
+
"enum": [
|
|
2966
|
+
"npm",
|
|
2967
|
+
"pypi",
|
|
2968
|
+
"rpm",
|
|
2969
|
+
"deb",
|
|
2970
|
+
"maven",
|
|
2971
|
+
"gem",
|
|
2972
|
+
"nuget",
|
|
2973
|
+
"go",
|
|
2974
|
+
"cargo",
|
|
2975
|
+
"generic"
|
|
2976
|
+
],
|
|
2977
|
+
"description": "The packaging ecosystem the package belongs to. Use 'generic' for hardware, firmware, or anything outside the listed language/OS package managers."
|
|
2978
|
+
},
|
|
2979
|
+
"cpe": {
|
|
2980
|
+
"type": "string",
|
|
2981
|
+
"pattern": "^cpe:2\\.3:[aho]:.*",
|
|
2982
|
+
"description": "Optional CPE 2.3 URI identifying the affected product. Validated leniently: only the 'cpe:2.3:' prefix and the part-type letter ('a' application, 'h' hardware, 'o' operating system) are enforced here. Use `hdf-utilities.parseCpe` for full-grammar parsing. Example: 'cpe:2.3:a:openssl:openssl:1.1.1k:*:*:*:*:*:*:*'."
|
|
2983
|
+
},
|
|
2984
|
+
"purl": {
|
|
2985
|
+
"type": "string",
|
|
2986
|
+
"pattern": "^pkg:[A-Za-z0-9.+-]+/.+",
|
|
2987
|
+
"description": "Optional Package URL (PURL) identifying the affected package. Validated leniently: only the 'pkg:TYPE/' scheme prefix is enforced here, where TYPE follows the PURL grammar (a letter followed by letters, digits, '.', '+', or '-') and is matched case-insensitively to mirror `hdf-utilities.parsePurl`'s accept-and-warn behavior. Use `parsePurl` for full PURL parsing. Example: 'pkg:rpm/redhat/openssl@1.1.1k-7.el8_4?arch=x86_64'."
|
|
2988
|
+
},
|
|
2989
|
+
"fixedInVersion": {
|
|
2990
|
+
"type": "string",
|
|
2991
|
+
"description": "Optional version string identifying the first release that contains the fix for the vulnerability. Use the same version syntax as `version`. Example: '1.1.1l' fixes 'openssl@1.1.1k'."
|
|
2992
|
+
}
|
|
2993
|
+
},
|
|
2994
|
+
"examples": [
|
|
2995
|
+
{
|
|
2996
|
+
"$comment": "RPM ecosystem with full CPE + PURL — typical Grype/Trivy output for a RHEL host scan.",
|
|
2997
|
+
"name": "openssl",
|
|
2998
|
+
"version": "1.1.1k-7.el8_4",
|
|
2999
|
+
"ecosystem": "rpm",
|
|
3000
|
+
"cpe": "cpe:2.3:a:openssl:openssl:1.1.1k:*:*:*:*:*:*:*",
|
|
3001
|
+
"purl": "pkg:rpm/redhat/openssl@1.1.1k-7.el8_4?arch=x86_64",
|
|
3002
|
+
"fixedInVersion": "1.1.1l"
|
|
3003
|
+
},
|
|
3004
|
+
{
|
|
3005
|
+
"$comment": "NPM ecosystem with PURL only — the JavaScript world rarely emits CPEs; PURL is the canonical identifier.",
|
|
3006
|
+
"name": "lodash",
|
|
3007
|
+
"version": "4.17.20",
|
|
3008
|
+
"ecosystem": "npm",
|
|
3009
|
+
"purl": "pkg:npm/lodash@4.17.20",
|
|
3010
|
+
"fixedInVersion": "4.17.21"
|
|
3011
|
+
},
|
|
3012
|
+
{
|
|
3013
|
+
"$comment": "Minimal valid AffectedPackage — only the three required fields. Use when the scanner reports a package by name+version without emitting CPE or PURL strings.",
|
|
3014
|
+
"name": "requests",
|
|
3015
|
+
"version": "2.28.1",
|
|
3016
|
+
"ecosystem": "pypi"
|
|
3017
|
+
},
|
|
3018
|
+
{
|
|
3019
|
+
"$comment": "Maven ecosystem with full identifiers + fixedInVersion — log4j Log4Shell-style finding showing the patch path from vulnerable to fixed.",
|
|
3020
|
+
"name": "org.apache.logging.log4j:log4j-core",
|
|
3021
|
+
"version": "2.14.1",
|
|
3022
|
+
"ecosystem": "maven",
|
|
3023
|
+
"cpe": "cpe:2.3:a:apache:log4j:2.14.1:*:*:*:*:*:*:*",
|
|
3024
|
+
"purl": "pkg:maven/org.apache.logging.log4j/log4j-core@2.14.1",
|
|
3025
|
+
"fixedInVersion": "2.17.1"
|
|
3026
|
+
},
|
|
3027
|
+
{
|
|
3028
|
+
"$comment": "purl-only — VEX import path where the source format gives a purl and we choose not to decompose it. Valid because purl encodes name/version/ecosystem implicitly.",
|
|
3029
|
+
"purl": "pkg:npm/lodash@4.17.20"
|
|
3030
|
+
},
|
|
3031
|
+
{
|
|
3032
|
+
"$comment": "cpe-only — NIST-flavored scopes where the consumer carries a CPE 2.3 string and no purl. Valid because cpe encodes vendor/product/version.",
|
|
3033
|
+
"cpe": "cpe:2.3:a:openssl:openssl:1.1.1k:*:*:*:*:*:*:*"
|
|
3034
|
+
}
|
|
3035
|
+
],
|
|
3036
|
+
"description": "Represents a package referenced by a vulnerability finding or by an amendment's scope. On Evaluated_Requirement.affectedPackages it says 'this CVE affects these package versions'. On Standalone_Override.affectedPackages it says 'this amendment is scoped to these packages' (used by VEX, OSCAL POA&M, FedRAMP component-aware amendments). NOT a system-level component identifier — see `components[]` on hdf-system for those. Validity requires at least one of: (name + version + ecosystem), purl alone, or cpe alone. purl and cpe are self-describing identifiers that encode name/version implicitly, so either may stand on its own; the name+version+ecosystem combination is the explicit form for sources without formal identifiers.",
|
|
3037
|
+
"title": "Affected Package"
|
|
3038
|
+
}
|
|
3039
|
+
}
|
|
3040
|
+
},
|
|
3041
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0": {
|
|
3042
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3043
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0",
|
|
2603
3044
|
"title": "HDF Component Primitives",
|
|
2604
3045
|
"description": "First-class system component with identity, polymorphic type, SBOM embedding, and system-binding properties. Components are the successor to Targets, adding stable identity (componentId), external system cross-references, and software inventory.",
|
|
2605
3046
|
"$defs": {
|
|
@@ -2613,6 +3054,20 @@
|
|
|
2613
3054
|
"properties": {
|
|
2614
3055
|
"type": {
|
|
2615
3056
|
"type": "string",
|
|
3057
|
+
"title": "Target Type",
|
|
3058
|
+
"enum": [
|
|
3059
|
+
"host",
|
|
3060
|
+
"containerImage",
|
|
3061
|
+
"containerInstance",
|
|
3062
|
+
"containerPlatform",
|
|
3063
|
+
"cloudAccount",
|
|
3064
|
+
"cloudResource",
|
|
3065
|
+
"repository",
|
|
3066
|
+
"application",
|
|
3067
|
+
"artifact",
|
|
3068
|
+
"network",
|
|
3069
|
+
"database"
|
|
3070
|
+
],
|
|
2616
3071
|
"description": "Component type discriminator. Same values as Target types."
|
|
2617
3072
|
},
|
|
2618
3073
|
"name": {
|
|
@@ -2629,7 +3084,7 @@
|
|
|
2629
3084
|
"description": "Description of this component's role or purpose."
|
|
2630
3085
|
},
|
|
2631
3086
|
"owner": {
|
|
2632
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3087
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
|
|
2633
3088
|
"description": "Team or individual responsible for this component. Enables per-component ownership when different teams manage different parts of a system."
|
|
2634
3089
|
},
|
|
2635
3090
|
"externalIds": {
|
|
@@ -2657,6 +3112,7 @@
|
|
|
2657
3112
|
},
|
|
2658
3113
|
"sbomFormat": {
|
|
2659
3114
|
"type": "string",
|
|
3115
|
+
"title": "SBOM Format",
|
|
2660
3116
|
"enum": [
|
|
2661
3117
|
"cyclonedx",
|
|
2662
3118
|
"spdx"
|
|
@@ -2673,12 +3129,12 @@
|
|
|
2673
3129
|
"inputOverrides": {
|
|
2674
3130
|
"type": "array",
|
|
2675
3131
|
"items": {
|
|
2676
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
3132
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.3.0#/$defs/Input_Override"
|
|
2677
3133
|
},
|
|
2678
3134
|
"description": "System-specific overrides for baseline input values."
|
|
2679
3135
|
},
|
|
2680
3136
|
"targetSelector": {
|
|
2681
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
3137
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.3.0#/$defs/Target_Selector",
|
|
2682
3138
|
"description": "Label selector to match targets belonging to this component during migration. Targets with matching labels are automatically included."
|
|
2683
3139
|
}
|
|
2684
3140
|
},
|
|
@@ -2998,7 +3454,7 @@
|
|
|
2998
3454
|
"const": "cloudAccount"
|
|
2999
3455
|
},
|
|
3000
3456
|
"provider": {
|
|
3001
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3457
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Cloud_Provider",
|
|
3002
3458
|
"description": "Cloud provider."
|
|
3003
3459
|
},
|
|
3004
3460
|
"accountId": {
|
|
@@ -3037,7 +3493,7 @@
|
|
|
3037
3493
|
"const": "cloudResource"
|
|
3038
3494
|
},
|
|
3039
3495
|
"provider": {
|
|
3040
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3496
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Cloud_Provider",
|
|
3041
3497
|
"description": "Cloud provider."
|
|
3042
3498
|
},
|
|
3043
3499
|
"resourceType": {
|
|
@@ -3217,9 +3673,9 @@
|
|
|
3217
3673
|
}
|
|
3218
3674
|
}
|
|
3219
3675
|
},
|
|
3220
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
3676
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.3.0": {
|
|
3221
3677
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3222
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
3678
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.3.0",
|
|
3223
3679
|
"title": "HDF System Primitives",
|
|
3224
3680
|
"description": "Types for describing system architecture, authorization boundaries, and components.",
|
|
3225
3681
|
"$defs": {
|
|
@@ -3270,7 +3726,7 @@
|
|
|
3270
3726
|
"description": "Rationale for why this override is needed."
|
|
3271
3727
|
},
|
|
3272
3728
|
"approvedBy": {
|
|
3273
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3729
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
|
|
3274
3730
|
"description": "Identity of the person or system that approved this override."
|
|
3275
3731
|
}
|
|
3276
3732
|
},
|
|
@@ -3300,6 +3756,7 @@
|
|
|
3300
3756
|
},
|
|
3301
3757
|
"designation": {
|
|
3302
3758
|
"type": "string",
|
|
3759
|
+
"title": "Designation",
|
|
3303
3760
|
"enum": [
|
|
3304
3761
|
"common",
|
|
3305
3762
|
"system-specific",
|
|
@@ -3351,9 +3808,9 @@
|
|
|
3351
3808
|
}
|
|
3352
3809
|
}
|
|
3353
3810
|
},
|
|
3354
|
-
"https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.
|
|
3811
|
+
"https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.3.0": {
|
|
3355
3812
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3356
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.
|
|
3813
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.3.0",
|
|
3357
3814
|
"type": "object",
|
|
3358
3815
|
"unevaluatedProperties": false,
|
|
3359
3816
|
"required": [
|
|
@@ -3373,7 +3830,7 @@
|
|
|
3373
3830
|
"components": {
|
|
3374
3831
|
"type": "array",
|
|
3375
3832
|
"items": {
|
|
3376
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
3833
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.3.0#/$defs/Component"
|
|
3377
3834
|
},
|
|
3378
3835
|
"description": "The components that were assessed. Each component describes a system element (host, container, cloud resource, application, etc.) with optional identity, SBOM, and external references."
|
|
3379
3836
|
},
|
|
@@ -3385,27 +3842,27 @@
|
|
|
3385
3842
|
"description": "Information on the baselines that were evaluated, including findings."
|
|
3386
3843
|
},
|
|
3387
3844
|
"statistics": {
|
|
3388
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
3845
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.3.0#/$defs/Statistics",
|
|
3389
3846
|
"description": "Statistics for the assessment run, including duration and result counts."
|
|
3390
3847
|
},
|
|
3391
3848
|
"generator": {
|
|
3392
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
3849
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Generator",
|
|
3393
3850
|
"description": "Information about the tool that generated this file."
|
|
3394
3851
|
},
|
|
3395
3852
|
"tool": {
|
|
3396
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
3853
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Tool",
|
|
3397
3854
|
"description": "The security tool that produced the assessment data in this file."
|
|
3398
3855
|
},
|
|
3399
3856
|
"integrity": {
|
|
3400
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
3857
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Integrity",
|
|
3401
3858
|
"description": "Cryptographic integrity information for verifying this file."
|
|
3402
3859
|
},
|
|
3403
3860
|
"runner": {
|
|
3404
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
3861
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.3.0#/$defs/Runner",
|
|
3405
3862
|
"description": "Information about the test execution environment where the security tool was run. Distinct from targets (what is being tested)."
|
|
3406
3863
|
},
|
|
3407
3864
|
"remediation": {
|
|
3408
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3865
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Remediation",
|
|
3409
3866
|
"description": "Optional reference to automated remediation resources (Ansible playbooks, Terraform scripts, etc.) for fixing failing requirements found in this assessment."
|
|
3410
3867
|
},
|
|
3411
3868
|
"systemRef": {
|
|
@@ -3513,14 +3970,14 @@
|
|
|
3513
3970
|
],
|
|
3514
3971
|
"allOf": [
|
|
3515
3972
|
{
|
|
3516
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3973
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Baseline_Metadata"
|
|
3517
3974
|
}
|
|
3518
3975
|
],
|
|
3519
3976
|
"properties": {
|
|
3520
3977
|
"depends": {
|
|
3521
3978
|
"type": "array",
|
|
3522
3979
|
"items": {
|
|
3523
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3980
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Dependency"
|
|
3524
3981
|
},
|
|
3525
3982
|
"description": "The set of dependencies this baseline depends on."
|
|
3526
3983
|
},
|
|
@@ -3533,15 +3990,15 @@
|
|
|
3533
3990
|
"description": "The description - should be more detailed than the summary."
|
|
3534
3991
|
},
|
|
3535
3992
|
"integrity": {
|
|
3536
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
3993
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Integrity",
|
|
3537
3994
|
"description": "Cryptographic integrity information for verifying this baseline has not been tampered with."
|
|
3538
3995
|
},
|
|
3539
3996
|
"originalChecksum": {
|
|
3540
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3997
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
|
|
3541
3998
|
"description": "SHA-256 checksum of the original baseline definition file (before execution). This is an immutable reference to the baseline as defined, used to detect tampering with baseline requirements or metadata."
|
|
3542
3999
|
},
|
|
3543
4000
|
"resultsChecksum": {
|
|
3544
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4001
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Checksum",
|
|
3545
4002
|
"description": "SHA-256 checksum of the raw results before any amendments (statusOverrides or POAMs). Used to detect tampering with test results. Compare with currentChecksum to verify amendment integrity."
|
|
3546
4003
|
},
|
|
3547
4004
|
"statusMessage": {
|
|
@@ -3559,14 +4016,14 @@
|
|
|
3559
4016
|
"groups": {
|
|
3560
4017
|
"type": "array",
|
|
3561
4018
|
"items": {
|
|
3562
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4019
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Requirement_Group"
|
|
3563
4020
|
},
|
|
3564
4021
|
"description": "A set of descriptions for the requirement groups."
|
|
3565
4022
|
},
|
|
3566
4023
|
"inputs": {
|
|
3567
4024
|
"type": "array",
|
|
3568
4025
|
"items": {
|
|
3569
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
4026
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.3.0#/$defs/Input"
|
|
3570
4027
|
},
|
|
3571
4028
|
"description": "Typed inputs used to parameterize this baseline at execution time. See the Input primitive for the full schema."
|
|
3572
4029
|
},
|
|
@@ -3591,7 +4048,7 @@
|
|
|
3591
4048
|
],
|
|
3592
4049
|
"allOf": [
|
|
3593
4050
|
{
|
|
3594
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4051
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Requirement_Core"
|
|
3595
4052
|
}
|
|
3596
4053
|
],
|
|
3597
4054
|
"properties": {
|
|
@@ -3599,7 +4056,7 @@
|
|
|
3599
4056
|
"type": "array",
|
|
3600
4057
|
"minItems": 1,
|
|
3601
4058
|
"items": {
|
|
3602
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4059
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Requirement_Description"
|
|
3603
4060
|
},
|
|
3604
4061
|
"contains": {
|
|
3605
4062
|
"type": "object",
|
|
@@ -3615,37 +4072,37 @@
|
|
|
3615
4072
|
"description": "Array of labeled descriptions. At least one description with label 'default' must be present. Convention: place default description first. Common labels: 'default', 'check', 'fix', 'rationale'."
|
|
3616
4073
|
},
|
|
3617
4074
|
"severity": {
|
|
3618
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4075
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Severity",
|
|
3619
4076
|
"description": "Explicit severity rating. Typically derived from impact score but provided explicitly for clarity."
|
|
3620
4077
|
},
|
|
3621
4078
|
"sourceLocation": {
|
|
3622
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4079
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Source_Location",
|
|
3623
4080
|
"description": "The explicit location of the requirement within the source code."
|
|
3624
4081
|
},
|
|
3625
4082
|
"results": {
|
|
3626
4083
|
"type": "array",
|
|
3627
4084
|
"minItems": 1,
|
|
3628
4085
|
"items": {
|
|
3629
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4086
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Requirement_Result"
|
|
3630
4087
|
},
|
|
3631
4088
|
"description": "The set of all tests within the requirement and their results."
|
|
3632
4089
|
},
|
|
3633
4090
|
"statusOverrides": {
|
|
3634
4091
|
"type": "array",
|
|
3635
4092
|
"items": {
|
|
3636
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
4093
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/Status_Override"
|
|
3637
4094
|
},
|
|
3638
4095
|
"description": "Chronological history of all overrides applied to this requirement. Overrides are intentional changes to the compliance status and/or impact score (waivers, attestations, false positives, risk adjustments). Most recent override should be first in array. Preserves full audit trail."
|
|
3639
4096
|
},
|
|
3640
4097
|
"poams": {
|
|
3641
4098
|
"type": "array",
|
|
3642
4099
|
"items": {
|
|
3643
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
4100
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.3.0#/$defs/POAM"
|
|
3644
4101
|
},
|
|
3645
4102
|
"description": "Plan of Action and Milestones for tracking remediation, mitigation, or risk acceptance. POAMs do NOT change effectiveStatus - they track the work being done to address a failure. Separate from statusOverrides which DO change status."
|
|
3646
4103
|
},
|
|
3647
4104
|
"effectiveStatus": {
|
|
3648
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4105
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.3.0#/$defs/Result_Status",
|
|
3649
4106
|
"description": "The current effective compliance status of this requirement after applying the most recent non-expired override with a status field, or computed from results (worst-wins) if no status-bearing overrides exist."
|
|
3650
4107
|
},
|
|
3651
4108
|
"effectiveImpact": {
|
|
@@ -3655,15 +4112,45 @@
|
|
|
3655
4112
|
"description": "The current effective impact score (0.0–1.0) after applying the most recent non-expired override with an impact field. Absent when no impact overrides apply; consumers should use the requirement's impact field in that case."
|
|
3656
4113
|
},
|
|
3657
4114
|
"disposition": {
|
|
3658
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
4115
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.3.0#/$defs/Override_Type",
|
|
3659
4116
|
"description": "The type of the most recent non-expired override or POAM governing this requirement. Indicates why the requirement is in its current state (e.g., waiver, falsePositive, riskAdjustment) or what remediation is being tracked (poam). Absent when no overrides or POAMs apply."
|
|
3660
4117
|
},
|
|
3661
4118
|
"evidence": {
|
|
3662
4119
|
"type": "array",
|
|
3663
4120
|
"items": {
|
|
3664
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4121
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Evidence"
|
|
3665
4122
|
},
|
|
3666
4123
|
"description": "Supporting evidence for this requirement's findings, such as screenshots, code samples, or log excerpts."
|
|
4124
|
+
},
|
|
4125
|
+
"cvss": {
|
|
4126
|
+
"type": "array",
|
|
4127
|
+
"items": {
|
|
4128
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.3.0#/$defs/Cvss"
|
|
4129
|
+
},
|
|
4130
|
+
"description": "Structured CVSS scoring data for vulnerability findings. One entry per CVE — a finding may match multiple CVEs (common in vulnerability scanners). Captures vendor-supplied Base metrics plus optional consumer-owned Threat / Environmental / Supplemental groups for risk adjustment. See cvss.schema.json."
|
|
4131
|
+
},
|
|
4132
|
+
"epss": {
|
|
4133
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.3.0#/$defs/Epss",
|
|
4134
|
+
"description": "FIRST.org EPSS (Exploit Prediction Scoring System) score for this CVE finding. Used alongside CVSS for prioritization — captures the probability the vulnerability will be exploited."
|
|
4135
|
+
},
|
|
4136
|
+
"kev": {
|
|
4137
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.3.0#/$defs/Kev",
|
|
4138
|
+
"description": "CISA Known Exploited Vulnerabilities (KEV) catalog status. When inKev=true, dateAdded and dueDate carry the federal patching deadline."
|
|
4139
|
+
},
|
|
4140
|
+
"cwe": {
|
|
4141
|
+
"type": "array",
|
|
4142
|
+
"items": {
|
|
4143
|
+
"type": "string",
|
|
4144
|
+
"pattern": "^CWE-[1-9]\\d*$"
|
|
4145
|
+
},
|
|
4146
|
+
"description": "Common Weakness Enumeration IDs associated with this finding. Use CWE-N format with no leading zeros (matches the MITRE catalog convention). For NIST control mappings derived from CWE, see tags.nist."
|
|
4147
|
+
},
|
|
4148
|
+
"affectedPackages": {
|
|
4149
|
+
"type": "array",
|
|
4150
|
+
"items": {
|
|
4151
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.3.0#/$defs/Affected_Package"
|
|
4152
|
+
},
|
|
4153
|
+
"description": "Packages affected by this vulnerability finding. Vulnerability-finding-scoped — see components[] on hdf-system for component-level package inventories. One entry per matched package signature (scanners often report multiple CPE variations per CVE)."
|
|
3667
4154
|
}
|
|
3668
4155
|
},
|
|
3669
4156
|
"examples": [
|
|
@@ -3951,9 +4438,9 @@
|
|
|
3951
4438
|
}
|
|
3952
4439
|
}
|
|
3953
4440
|
},
|
|
3954
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
4441
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.3.0": {
|
|
3955
4442
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3956
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
4443
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.3.0",
|
|
3957
4444
|
"title": "HDF Statistics Primitives",
|
|
3958
4445
|
"description": "Statistics types for tracking assessment run metrics.",
|
|
3959
4446
|
"$defs": {
|
|
@@ -4022,9 +4509,9 @@
|
|
|
4022
4509
|
}
|
|
4023
4510
|
}
|
|
4024
4511
|
},
|
|
4025
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
4512
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.3.0": {
|
|
4026
4513
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4027
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
4514
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.3.0",
|
|
4028
4515
|
"title": "HDF Runner Primitive",
|
|
4029
4516
|
"description": "Information about the test execution environment where the security tool/scanner was executed.",
|
|
4030
4517
|
"$defs": {
|
|
@@ -4060,7 +4547,7 @@
|
|
|
4060
4547
|
"description": "The container instance identifier. Example: 'a1b2c3d4e5f6', 'security-scan-job-xyz123'. Can be a Docker container ID, Kubernetes pod name, or other container runtime identifier."
|
|
4061
4548
|
},
|
|
4062
4549
|
"operator": {
|
|
4063
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4550
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.3.0#/$defs/Identity",
|
|
4064
4551
|
"description": "The identity of the person or system responsible for executing the test. This could be a human auditor manually completing a checklist, an automated CI/CD system, or a security tool. Optional field to support both automated and manual HDF generation."
|
|
4065
4552
|
}
|
|
4066
4553
|
},
|
|
@@ -4107,9 +4594,9 @@
|
|
|
4107
4594
|
}
|
|
4108
4595
|
}
|
|
4109
4596
|
},
|
|
4110
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
4597
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.3.0": {
|
|
4111
4598
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4112
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
4599
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.3.0",
|
|
4113
4600
|
"title": "HDF Parameter Primitives",
|
|
4114
4601
|
"description": "Input/parameter type definitions for typed, traceable configuration values that bridge governance prose and scanner automation.",
|
|
4115
4602
|
"$defs": {
|
|
@@ -4239,6 +4726,137 @@
|
|
|
4239
4726
|
"title": "Input"
|
|
4240
4727
|
}
|
|
4241
4728
|
}
|
|
4729
|
+
},
|
|
4730
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.3.0": {
|
|
4731
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4732
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.3.0",
|
|
4733
|
+
"title": "HDF EPSS Primitive",
|
|
4734
|
+
"description": "Type for representing FIRST.org's Exploit Prediction Scoring System (EPSS) data for a vulnerability. EPSS estimates the probability that a CVE will be exploited in the wild in the next 30 days. See https://www.first.org/epss/ for the underlying model and methodology.",
|
|
4735
|
+
"$defs": {
|
|
4736
|
+
"Epss": {
|
|
4737
|
+
"type": "object",
|
|
4738
|
+
"unevaluatedProperties": false,
|
|
4739
|
+
"required": [
|
|
4740
|
+
"score",
|
|
4741
|
+
"percentile",
|
|
4742
|
+
"date"
|
|
4743
|
+
],
|
|
4744
|
+
"properties": {
|
|
4745
|
+
"score": {
|
|
4746
|
+
"type": "number",
|
|
4747
|
+
"minimum": 0,
|
|
4748
|
+
"maximum": 1,
|
|
4749
|
+
"description": "Exploit probability as a value between 0.0 and 1.0 inclusive. Higher values indicate greater predicted likelihood of exploitation in the next 30 days. Example: 0.97532 means roughly a 97.5% predicted probability."
|
|
4750
|
+
},
|
|
4751
|
+
"percentile": {
|
|
4752
|
+
"type": "number",
|
|
4753
|
+
"minimum": 0,
|
|
4754
|
+
"maximum": 1,
|
|
4755
|
+
"description": "Rank of this score relative to all scored CVEs, expressed as a value between 0.0 and 1.0 inclusive. A percentile of 0.99 means this CVE is scored at or above 99% of all scored CVEs."
|
|
4756
|
+
},
|
|
4757
|
+
"date": {
|
|
4758
|
+
"type": "string",
|
|
4759
|
+
"format": "date",
|
|
4760
|
+
"$comment": "This is the date FIRST.org published the score, not the date the underlying CVE was discovered or disclosed. EPSS scores are recomputed daily and shift as new exploitation evidence is observed.",
|
|
4761
|
+
"description": "ISO 8601 date (YYYY-MM-DD) on which FIRST.org published this EPSS score."
|
|
4762
|
+
}
|
|
4763
|
+
},
|
|
4764
|
+
"examples": [
|
|
4765
|
+
{
|
|
4766
|
+
"$comment": "High exploit probability and high percentile, characteristic of a widely-exploited vulnerability like Log4Shell (CVE-2021-44228) shortly after disclosure.",
|
|
4767
|
+
"score": 0.97532,
|
|
4768
|
+
"percentile": 0.99987,
|
|
4769
|
+
"date": "2026-05-26"
|
|
4770
|
+
},
|
|
4771
|
+
{
|
|
4772
|
+
"$comment": "Low score but moderate percentile, the common case for CVEs that have some observed exploitation evidence but are not under active mass exploitation.",
|
|
4773
|
+
"score": 0.04521,
|
|
4774
|
+
"percentile": 0.78432,
|
|
4775
|
+
"date": "2026-05-26"
|
|
4776
|
+
},
|
|
4777
|
+
{
|
|
4778
|
+
"$comment": "Very low score, typical of a CVE with no known exploitation activity or proof-of-concept availability.",
|
|
4779
|
+
"score": 0.00042,
|
|
4780
|
+
"percentile": 0.10215,
|
|
4781
|
+
"date": "2026-05-26"
|
|
4782
|
+
}
|
|
4783
|
+
],
|
|
4784
|
+
"description": "FIRST.org Exploit Prediction Scoring System (EPSS) data for a single vulnerability. All three fields are required when an Epss object is present; the date disambiguates which day's score this is, since EPSS recomputes daily.",
|
|
4785
|
+
"title": "EPSS"
|
|
4786
|
+
}
|
|
4787
|
+
}
|
|
4788
|
+
},
|
|
4789
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.3.0": {
|
|
4790
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4791
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.3.0",
|
|
4792
|
+
"title": "HDF Kev Primitives",
|
|
4793
|
+
"description": "Types for representing CISA Known Exploited Vulnerabilities (KEV) catalog membership. The KEV catalog (https://www.cisa.gov/known-exploited-vulnerabilities-catalog) flags CVEs that are confirmed actively exploited in the wild and drives federal patching urgency under CISA Binding Operational Directive 22-01.",
|
|
4794
|
+
"$defs": {
|
|
4795
|
+
"Kev": {
|
|
4796
|
+
"type": "object",
|
|
4797
|
+
"unevaluatedProperties": false,
|
|
4798
|
+
"required": [
|
|
4799
|
+
"inKev"
|
|
4800
|
+
],
|
|
4801
|
+
"if": {
|
|
4802
|
+
"properties": {
|
|
4803
|
+
"inKev": {
|
|
4804
|
+
"const": true
|
|
4805
|
+
}
|
|
4806
|
+
},
|
|
4807
|
+
"required": [
|
|
4808
|
+
"inKev"
|
|
4809
|
+
]
|
|
4810
|
+
},
|
|
4811
|
+
"then": {
|
|
4812
|
+
"required": [
|
|
4813
|
+
"dateAdded",
|
|
4814
|
+
"dueDate"
|
|
4815
|
+
]
|
|
4816
|
+
},
|
|
4817
|
+
"properties": {
|
|
4818
|
+
"inKev": {
|
|
4819
|
+
"type": "boolean",
|
|
4820
|
+
"description": "Whether this vulnerability is currently in the CISA Known Exploited Vulnerabilities catalog. When true, dateAdded and dueDate are required."
|
|
4821
|
+
},
|
|
4822
|
+
"dateAdded": {
|
|
4823
|
+
"type": "string",
|
|
4824
|
+
"format": "date",
|
|
4825
|
+
"description": "ISO 8601 calendar date (YYYY-MM-DD) the vulnerability was added to the CISA KEV catalog. Required when inKev is true."
|
|
4826
|
+
},
|
|
4827
|
+
"dueDate": {
|
|
4828
|
+
"type": "string",
|
|
4829
|
+
"format": "date",
|
|
4830
|
+
"description": "ISO 8601 calendar date (YYYY-MM-DD) by which federal agencies must remediate per CISA BOD 22-01. Normally later than dateAdded, but the schema does not enforce ordering because CISA occasionally adjusts published dates. Required when inKev is true."
|
|
4831
|
+
},
|
|
4832
|
+
"notes": {
|
|
4833
|
+
"type": "string",
|
|
4834
|
+
"description": "CISA's notes describing the vulnerability, observed exploitation, or remediation guidance."
|
|
4835
|
+
}
|
|
4836
|
+
},
|
|
4837
|
+
"examples": [
|
|
4838
|
+
{
|
|
4839
|
+
"$comment": "High-urgency case: recently added KEV entry with a short federal patching deadline.",
|
|
4840
|
+
"inKev": true,
|
|
4841
|
+
"dateAdded": "2026-03-15",
|
|
4842
|
+
"dueDate": "2026-04-05",
|
|
4843
|
+
"notes": "Active ransomware exploitation observed; apply vendor patch immediately."
|
|
4844
|
+
},
|
|
4845
|
+
{
|
|
4846
|
+
"$comment": "Older KEV entry whose due date has already passed — useful for reporting overdue remediation.",
|
|
4847
|
+
"inKev": true,
|
|
4848
|
+
"dateAdded": "2023-11-07",
|
|
4849
|
+
"dueDate": "2023-11-28",
|
|
4850
|
+
"notes": "Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable."
|
|
4851
|
+
},
|
|
4852
|
+
{
|
|
4853
|
+
"$comment": "Vulnerability evaluated against the KEV catalog and confirmed not present — dateAdded/dueDate are not required when inKev is false.",
|
|
4854
|
+
"inKev": false
|
|
4855
|
+
}
|
|
4856
|
+
],
|
|
4857
|
+
"title": "Kev"
|
|
4858
|
+
}
|
|
4859
|
+
}
|
|
4242
4860
|
}
|
|
4243
4861
|
}
|
|
4244
4862
|
}
|