@mitre/hdf-schema 3.6.0-rc.5 → 3.7.0-rc.1

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.
@@ -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.5.0",
3
+ "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-comparison/v3.7.0",
4
4
  "type": "object",
5
5
  "unevaluatedProperties": false,
6
6
  "required": [
@@ -14,7 +14,7 @@
14
14
  "externalReferences": {
15
15
  "type": "array",
16
16
  "items": {
17
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
17
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/External_Reference"
18
18
  },
19
19
  "description": "Optional references to external artifacts relevant to this comparison (CTI/STIX, advisories, or any URI-addressable artifact). Inert context; see External_Reference."
20
20
  },
@@ -24,7 +24,7 @@
24
24
  "description": "Schema version for this comparison format."
25
25
  },
26
26
  "comparisonMode": {
27
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Comparison_Mode",
27
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Comparison_Mode",
28
28
  "description": "The mode of comparison being performed."
29
29
  },
30
30
  "timestamp": {
@@ -33,50 +33,50 @@
33
33
  "description": "When this comparison was performed."
34
34
  },
35
35
  "generator": {
36
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Generator",
36
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Generator",
37
37
  "description": "Information about the tool that generated this comparison."
38
38
  },
39
39
  "sources": {
40
40
  "type": "array",
41
41
  "minItems": 2,
42
42
  "items": {
43
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Source"
43
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Source"
44
44
  },
45
45
  "description": "The source documents being compared. At least two sources are required."
46
46
  },
47
47
  "matching": {
48
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Matching_Config",
48
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Matching_Config",
49
49
  "description": "Configuration for how requirements were matched across sources."
50
50
  },
51
51
  "summary": {
52
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Comparison_Summary",
52
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Comparison_Summary",
53
53
  "description": "Summary statistics for the overall comparison."
54
54
  },
55
55
  "baselineDiffs": {
56
56
  "type": "array",
57
57
  "items": {
58
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Baseline_Diff"
58
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Baseline_Diff"
59
59
  },
60
60
  "description": "Comparison of baselines between sources."
61
61
  },
62
62
  "requirementDiffs": {
63
63
  "type": "array",
64
64
  "items": {
65
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Requirement_Diff"
65
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Requirement_Diff"
66
66
  },
67
67
  "description": "Detailed comparison of individual requirements between sources."
68
68
  },
69
69
  "componentDiffs": {
70
70
  "type": "array",
71
71
  "items": {
72
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Component_Diff"
72
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Component_Diff"
73
73
  },
74
74
  "description": "Comparison of components between two system documents. Used in systemDrift mode. A component's BOM changes surface as a field change on its boms[] here."
75
75
  },
76
76
  "packageDiffs": {
77
77
  "type": "array",
78
78
  "items": {
79
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Package_Diff"
79
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Package_Diff"
80
80
  },
81
81
  "description": "RESERVED — not emitted by the current systemDrift comparison. systemDrift now reports a component's BOM changes as a field change on its boms[] (see componentDiffs), and standalone SBOM package diffing is a separate `hdf diff <sbom> <sbom>` output shape. This field is retained for a future normalized package-level diff; consumers must not expect it from today's systemDrift output."
82
82
  },
@@ -88,19 +88,19 @@
88
88
  "drift": {
89
89
  "type": "array",
90
90
  "items": {
91
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Requirement_Diff"
91
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Requirement_Diff"
92
92
  },
93
93
  "description": "External/metadata changes separate from status changes (Terraform pattern)."
94
94
  },
95
95
  "annotations": {
96
96
  "type": "object",
97
97
  "additionalProperties": {
98
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Annotation"
98
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0#/$defs/Annotation"
99
99
  },
100
100
  "description": "Map of annotation IDs to annotation objects, providing context or action items for requirement diffs."
101
101
  },
102
102
  "integrity": {
103
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Integrity",
103
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Integrity",
104
104
  "description": "Cryptographic integrity information for verifying this comparison document."
105
105
  },
106
106
  "extensions": {
@@ -112,9 +112,9 @@
112
112
  "description": "Structured comparison between two or more HDF security assessment documents. Supports temporal, baseline, fleet, and multi-source comparison modes.",
113
113
  "title": "HDF Comparison",
114
114
  "$defs": {
115
- "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0": {
115
+ "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0": {
116
116
  "$schema": "https://json-schema.org/draft/2020-12/schema",
117
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0",
117
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0",
118
118
  "title": "HDF Common Primitives",
119
119
  "description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
120
120
  "$defs": {
@@ -194,22 +194,20 @@
194
194
  }
195
195
  },
196
196
  "unevaluatedProperties": false,
197
+ "$comment": "Examples, in order: 1) By-identity: cite a CVE by its id in the 'cve' system without a URL — equivalently urn:cve:CVE-2021-44228; 2) By-identity AND by-locator together (anyOf, not oneOf) — an ATT&CK technique cited by id with its canonical URL; 3) By-locator to a retrievable STIX bundle, with integrity hash, media type, and attribution; 4) Enrichment envelope: a STIX threat-intel object embedded losslessly in `document` and classified via `kind`, cited by id and pointed at by href — the pointer and the embedded copy compose. The payload rides verbatim; HDF does not normalize STIX fields.",
197
198
  "examples": [
198
199
  {
199
- "$comment": "By-identity: cite a CVE by its id in the 'cve' system without a URL — equivalently urn:cve:CVE-2021-44228.",
200
200
  "sourceName": "cve",
201
201
  "externalId": "CVE-2021-44228",
202
202
  "rel": "definition"
203
203
  },
204
204
  {
205
- "$comment": "By-identity AND by-locator together (anyOf, not oneOf) — an ATT&CK technique cited by id with its canonical URL.",
206
205
  "sourceName": "mitre-att&ck",
207
206
  "externalId": "T1059",
208
207
  "href": "https://attack.mitre.org/techniques/T1059/",
209
208
  "rel": "canonical"
210
209
  },
211
210
  {
212
- "$comment": "By-locator to a retrievable STIX bundle, with integrity hash, media type, and attribution.",
213
211
  "sourceName": "stix",
214
212
  "href": "https://cti.example.org/bundles/log4shell.json",
215
213
  "rel": "investigate",
@@ -225,7 +223,6 @@
225
223
  "addedAt": "2026-07-26T00:00:00Z"
226
224
  },
227
225
  {
228
- "$comment": "Enrichment envelope: a STIX threat-intel object embedded losslessly in `document` and classified via `kind`, cited by id and pointed at by href — the pointer and the embedded copy compose. The payload rides verbatim; HDF does not normalize STIX fields.",
229
226
  "sourceName": "stix",
230
227
  "externalId": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
231
228
  "href": "https://cti.example.org/bundles/log4shell.json#vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
@@ -557,6 +554,24 @@
557
554
  "type",
558
555
  "data"
559
556
  ],
557
+ "if": {
558
+ "properties": {
559
+ "encoding": {
560
+ "const": "base64"
561
+ }
562
+ },
563
+ "required": [
564
+ "encoding"
565
+ ]
566
+ },
567
+ "then": {
568
+ "properties": {
569
+ "data": {
570
+ "pattern": "^[0-9A-Za-z+/]+={0,2}$",
571
+ "contentEncoding": "base64"
572
+ }
573
+ }
574
+ },
560
575
  "properties": {
561
576
  "type": {
562
577
  "type": "string",
@@ -573,7 +588,8 @@
573
588
  },
574
589
  "data": {
575
590
  "type": "string",
576
- "description": "The evidence content. For screenshots/files: base64-encoded data or URL. For code/logs: the raw text. For URLs: the URL string."
591
+ "minLength": 1,
592
+ "description": "The evidence content. For screenshots/files: base64-encoded data or URL. For code/logs: the raw text. For URLs: the URL string. Must not be empty. When encoding is 'base64', data must be bare base64 matching ^[0-9A-Za-z+/]+={0,2}$ (OSCAL's Base64Datatype): no data: URI prefix, URL, or line breaks."
577
593
  },
578
594
  "description": {
579
595
  "type": "string",
@@ -585,7 +601,7 @@
585
601
  },
586
602
  "encoding": {
587
603
  "type": "string",
588
- "description": "Encoding used for the data. Example: 'base64', 'utf-8'."
604
+ "description": "Encoding used for the data. Example: 'base64', 'utf-8'. The value 'base64' (exactly, lowercase) requires data to be bare base64."
589
605
  },
590
606
  "size": {
591
607
  "type": "number",
@@ -649,6 +665,7 @@
649
665
  }
650
666
  }
651
667
  ],
668
+ "$comment": "Examples, in order: 1) base64-encoded PNG screenshot with full capture provenance; 2) raw configuration text; 3) log excerpt; 4) URL to an external ticket; 5) base64-encoded file captured by an automated system.",
652
669
  "description": "Supporting evidence for a finding or override, such as screenshots, code samples, log excerpts, or URLs.",
653
670
  "title": "Evidence"
654
671
  },
@@ -726,6 +743,13 @@
726
743
  "status"
727
744
  ],
728
745
  "properties": {
746
+ "title": {
747
+ "type": "string",
748
+ "minLength": 1,
749
+ "pattern": "^[^ \\t\\n\\r]([^\\n\\r]*[^ \\t\\n\\r])?$",
750
+ "$comment": "The pattern is OSCAL's StringDatatype (\\S(.*\\S)?) as its XSD defines \\S and '.', spelled with explicit classes so ECMA-262 and Go regexp engines agree: \\S and '.' differ between them on CR and non-ASCII whitespace.",
751
+ "description": "Short single-line label for this milestone, suitable where a consumer needs a title (for example an OSCAL POA&M remediation or task). No line breaks, and no leading or trailing whitespace. The description remains the full text of the milestone; the title does not replace it."
752
+ },
729
753
  "description": {
730
754
  "type": "string",
731
755
  "description": "Description of this milestone or task."
@@ -755,6 +779,25 @@
755
779
  "description": "Identity of who completed this milestone."
756
780
  }
757
781
  },
782
+ "examples": [
783
+ {
784
+ "title": "Deploy OpenSSH 9.8p1",
785
+ "description": "Upgrade OpenSSH to 9.8p1 on every RHEL 9 host in the web tier to remediate CVE-2024-6387, then restart sshd during the Saturday maintenance window.",
786
+ "estimatedCompletion": "2026-10-31T00:00:00Z",
787
+ "status": "inProgress"
788
+ },
789
+ {
790
+ "description": "Isolate the affected host on a restricted VLAN until the vendor patch is available.",
791
+ "estimatedCompletion": "2026-09-05T00:00:00Z",
792
+ "status": "completed",
793
+ "completedAt": "2026-09-04T14:30:00Z",
794
+ "completedBy": {
795
+ "identifier": "network-admin@example.com",
796
+ "type": "email"
797
+ }
798
+ }
799
+ ],
800
+ "$comment": "Examples, in order: 1) titled milestone in progress — the title is the short label, the description the full remediation text; 2) untitled completed milestone with completion provenance — title is optional, and a consumer needing one derives it.",
758
801
  "description": "A milestone or task within a POA&M remediation plan.",
759
802
  "title": "Milestone"
760
803
  },
@@ -1044,9 +1087,9 @@
1044
1087
  "description": "Whether the requirement is mandatory within its baseline.\n\nDistinct from severity (risk weight) and status (lifecycle state).\n\nMaps cleanly onto: FedRAMP rev5 OSCAL 'CORE' prop, FedRAMP 20x inline 'Optional:' markers, CMMC sublevel rows, and CIS Implementation Group memberships (IG1/IG2/IG3 may carry richer semantics; layer those onto props[]/tags{}).\n\nOptional: when omitted, consumers should treat the requirement as 'required' by convention."
1045
1088
  }
1046
1089
  },
1090
+ "$comment": "Examples, in order: 1) v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape for backward compatibility; 2) v3.2 example populating all three classification fields. controlType=technical because AC-3 is enforced via configuration, not policy text. verificationMethod=automated because a check exists. applicability=required because this is a CORE control in the source baseline; 3) v3.2 example for a manual-by-design requirement. FedRAMP 20x KSIs are statement-form: code is omitted (not null) and verificationMethod=manual-by-design distinguishes this from 'automation could exist but doesn't yet'. controlType=policy because this is an authored governance statement; 4) v3.2 example for a STIG rule lacking a <fix>. Differs from manual-by-design: automation should exist, just not yet. applicability=advisory used here because the source format flagged it as recommended-but-not-mandatory; CIS-style IG memberships and FedRAMP 'Optional:' markers map onto applicability=optional or advisory similarly.",
1047
1091
  "examples": [
1048
1092
  {
1049
- "$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.5.0 (backward compatibility).",
1050
1093
  "id": "SV-238196",
1051
1094
  "title": "The Ubuntu operating system must enforce password complexity",
1052
1095
  "impact": 0.5,
@@ -1076,7 +1119,6 @@
1076
1119
  ]
1077
1120
  },
1078
1121
  {
1079
- "$comment": "v3.2 example populating all three classification fields. controlType=technical because AC-3 is enforced via configuration, not policy text. verificationMethod=automated because a check exists. applicability=required because this is a CORE control in the source baseline.",
1080
1122
  "id": "AC-3",
1081
1123
  "title": "Access Enforcement",
1082
1124
  "impact": 0.7,
@@ -1098,7 +1140,6 @@
1098
1140
  "applicability": "required"
1099
1141
  },
1100
1142
  {
1101
- "$comment": "v3.2 example for a manual-by-design requirement. FedRAMP 20x KSIs are statement-form: code is omitted (not null) and verificationMethod=manual-by-design distinguishes this from 'automation could exist but doesn't yet'. controlType=policy because this is an authored governance statement.",
1102
1143
  "id": "KSI-CNA-01",
1103
1144
  "title": "Cyber Security Plan documents the system",
1104
1145
  "impact": 0.5,
@@ -1118,7 +1159,6 @@
1118
1159
  "applicability": "required"
1119
1160
  },
1120
1161
  {
1121
- "$comment": "v3.2 example for a STIG rule lacking a <fix>. Differs from manual-by-design: automation should exist, just not yet. applicability=advisory used here because the source format flagged it as recommended-but-not-mandatory; CIS-style IG memberships and FedRAMP 'Optional:' markers map onto applicability=optional or advisory similarly.",
1122
1162
  "id": "SV-999999",
1123
1163
  "title": "Example STIG rule pending automation",
1124
1164
  "impact": 0.3,
@@ -1183,9 +1223,9 @@
1183
1223
  }
1184
1224
  }
1185
1225
  },
1186
- "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0": {
1226
+ "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0": {
1187
1227
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1188
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0",
1228
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.7.0",
1189
1229
  "title": "HDF Comparison Primitives",
1190
1230
  "description": "Types for representing structured comparisons between HDF security assessment documents.",
1191
1231
  "$defs": {
@@ -1357,7 +1397,7 @@
1357
1397
  "description": "The original format of the source document before conversion to HDF."
1358
1398
  },
1359
1399
  "checksum": {
1360
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
1400
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
1361
1401
  "description": "Cryptographic checksum of the source document for integrity verification."
1362
1402
  },
1363
1403
  "assessmentTimestamp": {
@@ -1366,13 +1406,13 @@
1366
1406
  "description": "When the source assessment was performed. ISO 8601 format."
1367
1407
  },
1368
1408
  "tool": {
1369
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Tool",
1409
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Tool",
1370
1410
  "description": "The security tool that produced the assessment data in this source."
1371
1411
  },
1372
1412
  "components": {
1373
1413
  "type": "array",
1374
1414
  "items": {
1375
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0#/$defs/Component"
1415
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.7.0#/$defs/Component"
1376
1416
  },
1377
1417
  "description": "The components assessed in this source."
1378
1418
  },
@@ -1724,7 +1764,7 @@
1724
1764
  "before": {
1725
1765
  "oneOf": [
1726
1766
  {
1727
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0#/$defs/Component"
1767
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.7.0#/$defs/Component"
1728
1768
  },
1729
1769
  {
1730
1770
  "type": "null"
@@ -1735,7 +1775,7 @@
1735
1775
  "after": {
1736
1776
  "oneOf": [
1737
1777
  {
1738
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0#/$defs/Component"
1778
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.7.0#/$defs/Component"
1739
1779
  },
1740
1780
  {
1741
1781
  "type": "null"
@@ -1812,9 +1852,9 @@
1812
1852
  "description": "License identifiers for this package."
1813
1853
  }
1814
1854
  },
1855
+ "$comment": "Examples, in order: 1) Software package diff keyed by purl (the SBOM case); 2) AI-model node diff keyed by identifier when no purl applies.",
1815
1856
  "examples": [
1816
1857
  {
1817
- "$comment": "Software package diff keyed by purl (the SBOM case).",
1818
1858
  "purl": "pkg:npm/express@4.18.2",
1819
1859
  "name": "express",
1820
1860
  "state": "updated",
@@ -1822,7 +1862,6 @@
1822
1862
  "newVersion": "4.18.2"
1823
1863
  },
1824
1864
  {
1825
- "$comment": "AI-model node diff keyed by identifier when no purl applies.",
1826
1865
  "identifier": "acme/llama-2-7b-chat-support",
1827
1866
  "name": "Llama-2-7b-chat (finetuned)",
1828
1867
  "state": "added",
@@ -1941,7 +1980,7 @@
1941
1980
  "before": {
1942
1981
  "oneOf": [
1943
1982
  {
1944
- "$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.5.0#/$defs/Evaluated_Requirement"
1983
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.7.0#/$defs/Evaluated_Requirement"
1945
1984
  },
1946
1985
  {
1947
1986
  "type": "null"
@@ -1952,7 +1991,7 @@
1952
1991
  "after": {
1953
1992
  "oneOf": [
1954
1993
  {
1955
- "$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.5.0#/$defs/Evaluated_Requirement"
1994
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.7.0#/$defs/Evaluated_Requirement"
1956
1995
  },
1957
1996
  {
1958
1997
  "type": "null"
@@ -2048,9 +2087,9 @@
2048
2087
  }
2049
2088
  }
2050
2089
  },
2051
- "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0": {
2090
+ "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0": {
2052
2091
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2053
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0",
2092
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0",
2054
2093
  "title": "HDF Extension Primitives",
2055
2094
  "description": "Extension types for waivers, attestations, generators, and integrity.",
2056
2095
  "$defs": {
@@ -2080,20 +2119,20 @@
2080
2119
  "externalReferences": {
2081
2120
  "type": "array",
2082
2121
  "items": {
2083
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
2122
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/External_Reference"
2084
2123
  },
2085
2124
  "description": "Optional references to the external artifacts behind this override (e.g. the STIX bundle/object or CTI feed motivating an E:A riskAdjustment). Inert context distinct from `evidence`; see External_Reference. Symmetric with Standalone_Override.externalReferences for the inline (results-embedded) override carrier."
2086
2125
  },
2087
2126
  "type": {
2088
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Override_Type",
2127
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Override_Type",
2089
2128
  "description": "The type of override applied to this requirement."
2090
2129
  },
2091
2130
  "status": {
2092
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
2131
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Result_Status",
2093
2132
  "description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
2094
2133
  },
2095
2134
  "impact": {
2096
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Impact_Override",
2135
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Impact_Override",
2097
2136
  "description": "Override to the requirement's impact score. At least one of status or impact must be set."
2098
2137
  },
2099
2138
  "reason": {
@@ -2101,7 +2140,7 @@
2101
2140
  "description": "Explanation for why this override was applied."
2102
2141
  },
2103
2142
  "appliedBy": {
2104
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
2143
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
2105
2144
  "description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
2106
2145
  },
2107
2146
  "appliedAt": {
@@ -2115,30 +2154,31 @@
2115
2154
  "description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
2116
2155
  },
2117
2156
  "signature": {
2118
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Signature",
2157
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
2119
2158
  "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."
2120
2159
  },
2121
2160
  "evidence": {
2122
2161
  "type": "array",
2123
2162
  "items": {
2124
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
2163
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
2125
2164
  },
2126
2165
  "description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
2127
2166
  },
2128
2167
  "previousChecksum": {
2129
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
2168
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
2130
2169
  "description": "SHA-256 checksum of the previous amendment in chronological order. Each amendment's checksum is recorded by the NEXT one, so editing an amendment in place is detectable — provided a later amendment is chained to it. It is NOT tamper-proof: the final amendment, the document envelope, deleted trailing amendments, and a chain that has been stripped or recomputed wholesale are all outside what it can detect. Use signature for non-repudiation. Omitted on the first amendment on a requirement."
2131
2170
  },
2132
2171
  "cvss": {
2133
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0#/$defs/Cvss",
2172
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0#/$defs/Cvss",
2134
2173
  "$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.",
2135
2174
  "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."
2136
2175
  },
2137
2176
  "justification": {
2138
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Justification",
2177
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Justification",
2139
2178
  "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."
2140
2179
  }
2141
2180
  },
2181
+ "$comment": "Example 3: Inline riskAdjustment carrying the STIX source that motivated it via externalReferences (the enrichment envelope, with the raw sighting embedded losslessly in document). This is the shape the enrich pass writes onto Evaluated_Requirement.overrides[] for the E:A recompute.",
2142
2182
  "examples": [
2143
2183
  {
2144
2184
  "type": "waiver",
@@ -2165,7 +2205,6 @@
2165
2205
  "expiresAt": "2026-10-14T00:00:00Z"
2166
2206
  },
2167
2207
  {
2168
- "$comment": "Inline riskAdjustment carrying the STIX source that motivated it via externalReferences (the enrichment envelope, with the raw sighting embedded losslessly in document). This is the shape the enrich pass writes onto Evaluated_Requirement.overrides[] for the E:A recompute.",
2169
2208
  "type": "riskAdjustment",
2170
2209
  "impact": {
2171
2210
  "value": 0.9
@@ -2228,7 +2267,7 @@
2228
2267
  "evidence": [
2229
2268
  {
2230
2269
  "type": "screenshot",
2231
- "data": "base64-encoded-screenshot-data-here",
2270
+ "data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
2232
2271
  "description": "Screenshot showing firewall configuration",
2233
2272
  "mimeType": "image/png",
2234
2273
  "encoding": "base64",
@@ -2271,7 +2310,7 @@
2271
2310
  "description": "Detailed explanation of the plan, including what actions will be taken."
2272
2311
  },
2273
2312
  "appliedBy": {
2274
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
2313
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
2275
2314
  "description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
2276
2315
  },
2277
2316
  "appliedAt": {
@@ -2287,23 +2326,23 @@
2287
2326
  "milestones": {
2288
2327
  "type": "array",
2289
2328
  "items": {
2290
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Milestone"
2329
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Milestone"
2291
2330
  },
2292
2331
  "description": "Optional array of milestones tracking progress toward completion."
2293
2332
  },
2294
2333
  "signature": {
2295
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Signature",
2334
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
2296
2335
  "description": "Optional digital signature for enhanced trust and non-repudiation."
2297
2336
  },
2298
2337
  "evidence": {
2299
2338
  "type": "array",
2300
2339
  "items": {
2301
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
2340
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
2302
2341
  },
2303
2342
  "description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
2304
2343
  },
2305
2344
  "previousChecksum": {
2306
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
2345
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
2307
2346
  "description": "SHA-256 checksum of the previous amendment in chronological order. Each amendment's checksum is recorded by the NEXT one, so editing an amendment in place is detectable — provided a later amendment is chained to it. It is NOT tamper-proof: the final amendment, the document envelope, deleted trailing amendments, and a chain that has been stripped or recomputed wholesale are all outside what it can detect. Use signature for non-repudiation. Omitted on the first amendment on a requirement."
2308
2347
  }
2309
2348
  },
@@ -2456,7 +2495,7 @@
2456
2495
  },
2457
2496
  "properties": {
2458
2497
  "algorithm": {
2459
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Hash_Algorithm",
2498
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Hash_Algorithm",
2460
2499
  "description": "The hash algorithm used for the checksum."
2461
2500
  },
2462
2501
  "checksum": {
@@ -2489,9 +2528,9 @@
2489
2528
  }
2490
2529
  }
2491
2530
  },
2492
- "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0": {
2531
+ "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0": {
2493
2532
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2494
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0",
2533
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0",
2495
2534
  "title": "HDF Amendment Primitives",
2496
2535
  "description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
2497
2536
  "$defs": {
@@ -2602,7 +2641,7 @@
2602
2641
  "externalReferences": {
2603
2642
  "type": "array",
2604
2643
  "items": {
2605
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
2644
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/External_Reference"
2606
2645
  },
2607
2646
  "description": "Optional references to the external artifacts behind this override (e.g. the STIX bundle/object, advisory, or CTI feed that motivated it). Inert context distinct from `evidence`; see External_Reference."
2608
2647
  },
@@ -2612,6 +2651,7 @@
2612
2651
  },
2613
2652
  "requirementId": {
2614
2653
  "type": "string",
2654
+ "minLength": 1,
2615
2655
  "description": "The ID of the requirement being amended. Must match a requirement ID in the referenced baseline."
2616
2656
  },
2617
2657
  "baselineRef": {
@@ -2619,7 +2659,7 @@
2619
2659
  "description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
2620
2660
  },
2621
2661
  "status": {
2622
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
2662
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Result_Status",
2623
2663
  "description": "The new status this amendment sets. Optional when only impact is being overridden."
2624
2664
  },
2625
2665
  "impact": {
@@ -2631,7 +2671,7 @@
2631
2671
  "description": "Justification for this amendment."
2632
2672
  },
2633
2673
  "appliedBy": {
2634
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
2674
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
2635
2675
  "description": "Identity of who applied this amendment."
2636
2676
  },
2637
2677
  "appliedAt": {
@@ -2647,20 +2687,20 @@
2647
2687
  "evidence": {
2648
2688
  "type": "array",
2649
2689
  "items": {
2650
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
2690
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
2651
2691
  },
2652
2692
  "description": "Supporting evidence (screenshots, logs, URLs, documents)."
2653
2693
  },
2654
2694
  "signature": {
2655
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Signature",
2695
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
2656
2696
  "description": "Digital signature for non-repudiation."
2657
2697
  },
2658
2698
  "previousChecksum": {
2659
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
2699
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
2660
2700
  "description": "SHA-256 checksum of the prior amendment in chronological order. Each amendment's checksum is recorded by the NEXT one, so editing an amendment in place is detectable — provided a later amendment is chained to it. It is NOT tamper-proof: the final amendment, the document envelope, deleted trailing amendments, and a chain that has been stripped or recomputed wholesale are all outside what it can detect. Use signature for non-repudiation. Omitted on the first amendment."
2661
2701
  },
2662
2702
  "cvss": {
2663
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0#/$defs/Cvss",
2703
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0#/$defs/Cvss",
2664
2704
  "$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.",
2665
2705
  "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."
2666
2706
  },
@@ -2671,7 +2711,7 @@
2671
2711
  "milestones": {
2672
2712
  "type": "array",
2673
2713
  "items": {
2674
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Milestone"
2714
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Milestone"
2675
2715
  },
2676
2716
  "description": "Remediation milestones (primarily for POA&M type amendments)."
2677
2717
  },
@@ -2688,11 +2728,12 @@
2688
2728
  "affectedPackages": {
2689
2729
  "type": "array",
2690
2730
  "items": {
2691
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0#/$defs/Affected_Package"
2731
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0#/$defs/Affected_Package"
2692
2732
  },
2693
2733
  "description": "Software packages this amendment is scoped to, distinct from componentRef (which scopes to an HDF-internal Component by UUID).\n\nUse 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.\n\nSymmetric with Evaluated_Requirement.affectedPackages, which scopes findings to the same package vocabulary.\n\nWhen omitted, the amendment applies system-wide (or only to componentRef when that is set)."
2694
2734
  }
2695
2735
  },
2736
+ "$comment": "Example 7: 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.",
2696
2737
  "examples": [
2697
2738
  {
2698
2739
  "type": "waiver",
@@ -2794,7 +2835,6 @@
2794
2835
  "expiresAt": "2026-09-26T00:00:00Z"
2795
2836
  },
2796
2837
  {
2797
- "$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.",
2798
2838
  "type": "falsePositive",
2799
2839
  "requirementId": "CVE-2026-12345",
2800
2840
  "status": "notApplicable",
@@ -2821,9 +2861,9 @@
2821
2861
  }
2822
2862
  }
2823
2863
  },
2824
- "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0": {
2864
+ "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0": {
2825
2865
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2826
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0",
2866
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0",
2827
2867
  "title": "HDF Result Primitives",
2828
2868
  "description": "Types for representing assessment results and statuses.",
2829
2869
  "$defs": {
@@ -2954,9 +2994,9 @@
2954
2994
  }
2955
2995
  }
2956
2996
  },
2957
- "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0": {
2997
+ "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0": {
2958
2998
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2959
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0",
2999
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0",
2960
3000
  "title": "HDF CVSS Primitives",
2961
3001
  "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).",
2962
3002
  "$defs": {
@@ -3020,7 +3060,7 @@
3020
3060
  ]
3021
3061
  }
3022
3062
  ],
3023
- "$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.",
3063
+ "$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. Examples, in order: 1) Base-only: vendor-supplied CVSS 3.1 data exactly as a scanner (e.g., Nessus, Grype) would emit it. No consumer enrichment yet; 2) 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; 3) 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; 4) 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; 5) 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.",
3024
3064
  "properties": {
3025
3065
  "version": {
3026
3066
  "type": "string",
@@ -3100,7 +3140,6 @@
3100
3140
  },
3101
3141
  "examples": [
3102
3142
  {
3103
- "$comment": "Base-only: vendor-supplied CVSS 3.1 data exactly as a scanner (e.g., Nessus, Grype) would emit it. No consumer enrichment yet.",
3104
3143
  "version": "3.1",
3105
3144
  "source": "CVE-2024-12345",
3106
3145
  "baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
@@ -3108,7 +3147,6 @@
3108
3147
  "baseSeverity": "critical"
3109
3148
  },
3110
3149
  {
3111
- "$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.",
3112
3150
  "version": "3.1",
3113
3151
  "source": "CVE-2023-44487",
3114
3152
  "baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
@@ -3118,7 +3156,6 @@
3118
3156
  "threatScore": 5.5
3119
3157
  },
3120
3158
  {
3121
- "$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.",
3122
3159
  "version": "3.1",
3123
3160
  "source": "CVE-2024-3094",
3124
3161
  "baseVector": "CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H",
@@ -3130,7 +3167,6 @@
3130
3167
  "computedSeverity": "critical"
3131
3168
  },
3132
3169
  {
3133
- "$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.",
3134
3170
  "version": "4.0",
3135
3171
  "source": "CVE-2024-21762",
3136
3172
  "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",
@@ -3145,7 +3181,6 @@
3145
3181
  "computedSeverity": "medium"
3146
3182
  },
3147
3183
  {
3148
- "$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.",
3149
3184
  "version": "2.0",
3150
3185
  "source": "CVE-2014-0160",
3151
3186
  "baseVector": "AV:N/AC:L/Au:N/C:P/I:N/A:N",
@@ -3158,9 +3193,9 @@
3158
3193
  }
3159
3194
  }
3160
3195
  },
3161
- "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0": {
3196
+ "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0": {
3162
3197
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3163
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0",
3198
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0",
3164
3199
  "title": "HDF Affected Package Primitives",
3165
3200
  "description": "Types for representing the software package(s) affected by a vulnerability finding.",
3166
3201
  "$defs": {
@@ -3226,9 +3261,9 @@
3226
3261
  "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'."
3227
3262
  }
3228
3263
  },
3264
+ "$comment": "Examples, in order: 1) RPM ecosystem with full CPE + PURL — typical Grype/Trivy output for a RHEL host scan; 2) NPM ecosystem with PURL only — the JavaScript world rarely emits CPEs; PURL is the canonical identifier; 3) Minimal valid AffectedPackage — only the three required fields. Use when the scanner reports a package by name+version without emitting CPE or PURL strings; 4) Maven ecosystem with full identifiers + fixedInVersion — log4j Log4Shell-style finding showing the patch path from vulnerable to fixed; 5) 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; 6) cpe-only — NIST-flavored scopes where the consumer carries a CPE 2.3 string and no purl. Valid because cpe encodes vendor/product/version.",
3229
3265
  "examples": [
3230
3266
  {
3231
- "$comment": "RPM ecosystem with full CPE + PURL — typical Grype/Trivy output for a RHEL host scan.",
3232
3267
  "name": "openssl",
3233
3268
  "version": "1.1.1k-7.el8_4",
3234
3269
  "ecosystem": "rpm",
@@ -3237,7 +3272,6 @@
3237
3272
  "fixedInVersion": "1.1.1l"
3238
3273
  },
3239
3274
  {
3240
- "$comment": "NPM ecosystem with PURL only — the JavaScript world rarely emits CPEs; PURL is the canonical identifier.",
3241
3275
  "name": "lodash",
3242
3276
  "version": "4.17.20",
3243
3277
  "ecosystem": "npm",
@@ -3245,13 +3279,11 @@
3245
3279
  "fixedInVersion": "4.17.21"
3246
3280
  },
3247
3281
  {
3248
- "$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.",
3249
3282
  "name": "requests",
3250
3283
  "version": "2.28.1",
3251
3284
  "ecosystem": "pypi"
3252
3285
  },
3253
3286
  {
3254
- "$comment": "Maven ecosystem with full identifiers + fixedInVersion — log4j Log4Shell-style finding showing the patch path from vulnerable to fixed.",
3255
3287
  "name": "org.apache.logging.log4j:log4j-core",
3256
3288
  "version": "2.14.1",
3257
3289
  "ecosystem": "maven",
@@ -3260,11 +3292,9 @@
3260
3292
  "fixedInVersion": "2.17.1"
3261
3293
  },
3262
3294
  {
3263
- "$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.",
3264
3295
  "purl": "pkg:npm/lodash@4.17.20"
3265
3296
  },
3266
3297
  {
3267
- "$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.",
3268
3298
  "cpe": "cpe:2.3:a:openssl:openssl:1.1.1k:*:*:*:*:*:*:*"
3269
3299
  }
3270
3300
  ],
@@ -3273,9 +3303,9 @@
3273
3303
  }
3274
3304
  }
3275
3305
  },
3276
- "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0": {
3306
+ "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.7.0": {
3277
3307
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3278
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0",
3308
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.7.0",
3279
3309
  "title": "HDF Component Primitives",
3280
3310
  "description": "First-class system component with identity, polymorphic type, generalized BOM attachment (boms[]), and system-binding properties. Components are the successor to Targets, adding stable identity (componentId), external system cross-references, and manifest inventory (SBOM, AI model/dataset, and reserved future BOM kinds).",
3281
3311
  "$defs": {
@@ -3321,7 +3351,7 @@
3321
3351
  "description": "Description of this component's role or purpose."
3322
3352
  },
3323
3353
  "owner": {
3324
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
3354
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
3325
3355
  "description": "Team or individual responsible for this component. Enables per-component ownership when different teams manage different parts of a system."
3326
3356
  },
3327
3357
  "externalIds": {
@@ -3341,14 +3371,14 @@
3341
3371
  "boms": {
3342
3372
  "type": "array",
3343
3373
  "items": {
3344
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.5.0#/$defs/Bom"
3374
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.7.0#/$defs/Bom"
3345
3375
  },
3346
3376
  "description": "Component-scoped Bills of Materials (SBOM, ai-model, dataset, or any reserved bomType), each carried by passthrough (ref/document) or normalized. Replaces the former sbom/sbomRef/sbomFormat trio; a component may carry several BOMs (e.g. an SBOM plus an ai-model BOM). See primitives/bom.schema.json."
3347
3377
  },
3348
3378
  "integrity": {
3349
3379
  "type": "array",
3350
3380
  "items": {
3351
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum"
3381
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum"
3352
3382
  },
3353
3383
  "description": "Cryptographic integrity of this component's underlying artifact — model weights or shards, dataset archive, container image, or package bytes.\n\nAn array supports multi-file/sharded artifacts.\n\nThis is the single, generic home for artifact/subject integrity across all component types (it replaced the former per-type Container_Image digest and Artifact checksum fields).\n\nDistinct from BOM-document integrity (Bom.hashes[]) and from the document tamper-evidence Integrity type."
3354
3384
  },
@@ -3362,12 +3392,12 @@
3362
3392
  "inputOverrides": {
3363
3393
  "type": "array",
3364
3394
  "items": {
3365
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0#/$defs/Input_Override"
3395
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.7.0#/$defs/Input_Override"
3366
3396
  },
3367
3397
  "description": "System-specific overrides for baseline input values."
3368
3398
  },
3369
3399
  "targetSelector": {
3370
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0#/$defs/Target_Selector",
3400
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.7.0#/$defs/Target_Selector",
3371
3401
  "description": "Label selector to match targets belonging to this component during migration. Targets with matching labels are automatically included."
3372
3402
  }
3373
3403
  },
@@ -3498,9 +3528,9 @@
3498
3528
  }
3499
3529
  }
3500
3530
  ],
3531
+ "$comment": "Examples, in order: 1) Domain-joined host carrying all three identity fields separately: short hostname, FQDN, and the (distinct) directory domain. HOST_NAME and HOST_FQDN from a STIG checklist map here; note the AD domain differs from the FQDN's DNS suffix; 2) Standalone/workgroup host: has a short hostname but no directory domain — 'domain' is omitted rather than fabricated from the FQDN suffix.",
3501
3532
  "examples": [
3502
3533
  {
3503
- "$comment": "Domain-joined host carrying all three identity fields separately: short hostname, FQDN, and the (distinct) directory domain. HOST_NAME and HOST_FQDN from a STIG checklist map here; note the AD domain differs from the FQDN's DNS suffix.",
3504
3534
  "type": "host",
3505
3535
  "name": "web-server-prod-01",
3506
3536
  "componentId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
@@ -3516,7 +3546,6 @@
3516
3546
  }
3517
3547
  },
3518
3548
  {
3519
- "$comment": "Standalone/workgroup host: has a short hostname but no directory domain — 'domain' is omitted rather than fabricated from the FQDN suffix.",
3520
3549
  "type": "host",
3521
3550
  "name": "kiosk-lab-07",
3522
3551
  "hostname": "kiosk-lab-07",
@@ -3651,7 +3680,7 @@
3651
3680
  "const": "cloudAccount"
3652
3681
  },
3653
3682
  "provider": {
3654
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Cloud_Provider",
3683
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Cloud_Provider",
3655
3684
  "description": "Cloud provider."
3656
3685
  },
3657
3686
  "accountId": {
@@ -3690,7 +3719,7 @@
3690
3719
  "const": "cloudResource"
3691
3720
  },
3692
3721
  "provider": {
3693
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Cloud_Provider",
3722
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Cloud_Provider",
3694
3723
  "description": "Cloud provider."
3695
3724
  },
3696
3725
  "resourceType": {
@@ -3989,9 +4018,9 @@
3989
4018
  }
3990
4019
  }
3991
4020
  },
3992
- "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.5.0": {
4021
+ "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.7.0": {
3993
4022
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3994
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.5.0",
4023
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.7.0",
3995
4024
  "title": "HDF BOM Primitives",
3996
4025
  "description": "Generalized Bill-of-Materials / manifest representation.\n\nOne extensible Bom shape, discriminated by bomType, carries any manifest kind (SBOM, AI model/dataset, and reserved future kinds) either by passthrough (opaque ref/embed of the native document) or normalized (converted into HDF's queryable shape).\n\nSubject identity (name, version, componentId) is inherited from the host component or system — the BOM never re-owns it.\n\nSee ADR-0001.",
3997
4026
  "$defs": {
@@ -4047,7 +4076,7 @@
4047
4076
  "hashes": {
4048
4077
  "type": "array",
4049
4078
  "items": {
4050
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum"
4079
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum"
4051
4080
  },
4052
4081
  "description": "Integrity of the carried BOM *document* itself (the referenced/embedded manifest file), NOT the integrity of the BOM's subject artifact. Subject/artifact integrity (model weights, dataset archive) is a component-level concern, not carried here. Subject identity is inherited from the host component/system; per-node identity lives in the type-extension."
4053
4082
  },
@@ -4164,9 +4193,9 @@
4164
4193
  ]
4165
4194
  }
4166
4195
  ],
4196
+ "$comment": "Examples, in order: 1) Passthrough SBOM by external reference — the universal escape hatch, available to every bomType; 2) Passthrough for a reserved-but-not-yet-normalized type (cbom) — carried opaquely until a normalized extension ships; 3) Normalized ai-model BOM: CISA/G7-aligned fields live in the model extension, never at the component root or shared base; 4) Normalized dataset BOM with lineage — a filtered derivative of a base dataset, referenced by an ai-model via datasetRefs.",
4167
4197
  "examples": [
4168
4198
  {
4169
- "$comment": "Passthrough SBOM by external reference — the universal escape hatch, available to every bomType.",
4170
4199
  "bomType": "sbom",
4171
4200
  "format": "cyclonedx",
4172
4201
  "ref": "https://artifacts.agency.gov/sbom/webtier.cdx.json",
@@ -4178,7 +4207,6 @@
4178
4207
  ]
4179
4208
  },
4180
4209
  {
4181
- "$comment": "Passthrough for a reserved-but-not-yet-normalized type (cbom) — carried opaquely until a normalized extension ships.",
4182
4210
  "bomType": "cbom",
4183
4211
  "format": "cyclonedx",
4184
4212
  "document": {
@@ -4187,7 +4215,6 @@
4187
4215
  }
4188
4216
  },
4189
4217
  {
4190
- "$comment": "Normalized ai-model BOM: CISA/G7-aligned fields live in the model extension, never at the component root or shared base.",
4191
4218
  "bomType": "ai-model",
4192
4219
  "format": "cyclonedx-ml",
4193
4220
  "model": {
@@ -4227,7 +4254,6 @@
4227
4254
  }
4228
4255
  },
4229
4256
  {
4230
- "$comment": "Normalized dataset BOM with lineage — a filtered derivative of a base dataset, referenced by an ai-model via datasetRefs.",
4231
4257
  "bomType": "dataset",
4232
4258
  "format": "croissant",
4233
4259
  "dataset": {
@@ -4462,9 +4488,9 @@
4462
4488
  }
4463
4489
  }
4464
4490
  },
4465
- "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0": {
4491
+ "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.7.0": {
4466
4492
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4467
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0",
4493
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.7.0",
4468
4494
  "title": "HDF System Primitives",
4469
4495
  "description": "Types for describing system architecture, authorization boundaries, and components.",
4470
4496
  "$defs": {
@@ -4515,7 +4541,7 @@
4515
4541
  "description": "Rationale for why this override is needed."
4516
4542
  },
4517
4543
  "approvedBy": {
4518
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
4544
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
4519
4545
  "description": "Identity of the person or system that approved this override."
4520
4546
  }
4521
4547
  },
@@ -4597,9 +4623,9 @@
4597
4623
  }
4598
4624
  }
4599
4625
  },
4600
- "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.5.0": {
4626
+ "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.7.0": {
4601
4627
  "$schema": "https://json-schema.org/draft/2020-12/schema",
4602
- "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.5.0",
4628
+ "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.7.0",
4603
4629
  "type": "object",
4604
4630
  "unevaluatedProperties": false,
4605
4631
  "required": [
@@ -4609,7 +4635,7 @@
4609
4635
  "externalReferences": {
4610
4636
  "type": "array",
4611
4637
  "items": {
4612
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
4638
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/External_Reference"
4613
4639
  },
4614
4640
  "description": "Optional references to external artifacts (CTI/STIX, BOMs, advisories, runbooks, or any URI-addressable artifact) relevant to this assessment as a whole. Inert context; see External_Reference."
4615
4641
  },
@@ -4626,7 +4652,7 @@
4626
4652
  "components": {
4627
4653
  "type": "array",
4628
4654
  "items": {
4629
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0#/$defs/Component"
4655
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.7.0#/$defs/Component"
4630
4656
  },
4631
4657
  "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."
4632
4658
  },
@@ -4638,27 +4664,38 @@
4638
4664
  "description": "Information on the baselines that were evaluated, including findings."
4639
4665
  },
4640
4666
  "statistics": {
4641
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.5.0#/$defs/Statistics",
4667
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.7.0#/$defs/Statistics",
4642
4668
  "description": "Statistics for the assessment run, including duration and result counts."
4643
4669
  },
4644
4670
  "generator": {
4645
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Generator",
4671
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Generator",
4646
4672
  "description": "Information about the tool that generated this file."
4647
4673
  },
4648
4674
  "tool": {
4649
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Tool",
4675
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Tool",
4650
4676
  "description": "The security tool that produced the assessment data in this file."
4651
4677
  },
4652
4678
  "integrity": {
4653
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Integrity",
4679
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Integrity",
4654
4680
  "description": "Cryptographic integrity information for verifying this file."
4655
4681
  },
4682
+ "preAmendmentChecksum": {
4683
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
4684
+ "description": "Hash of this results document as it stood immediately before the most recent amendment application. Written by `hdf amend apply` when it applies at least one override; an apply that matches nothing leaves the document untouched. The hash covers the results file's RAW BYTES as read, not a canonical form, so reproducing it requires the byte-identical original — reformatting or re-serializing the source changes the value. Only the most recent pre-application state is recorded: applying amendments to an already-amended document REPLACES this value, so it is a single link back one step, not a growing chain. Distinct from the `previousChecksum` inside an override, which chains amendments to each other and is computed over a canonical JSON form.",
4685
+ "$comment": "Example 1: the real SHA-256 of hdf-converters/converters/nessus-to-hdf/fixtures/expected/sample.nessus.hdf.json, reproducible with `shasum -a 256` on that file — chosen over a synthetic digest so a reader can verify the hash basis is the raw file bytes.",
4686
+ "examples": [
4687
+ {
4688
+ "algorithm": "sha256",
4689
+ "value": "9599ce7889e99b70ef5d0f3efa4215e35059c10a7e89b9314cbf4ded8fdbad38"
4690
+ }
4691
+ ]
4692
+ },
4656
4693
  "runner": {
4657
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.5.0#/$defs/Runner",
4694
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.7.0#/$defs/Runner",
4658
4695
  "description": "Information about the test execution environment where the security tool was run. Distinct from targets (what is being tested)."
4659
4696
  },
4660
4697
  "remediation": {
4661
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Remediation",
4698
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Remediation",
4662
4699
  "description": "Optional reference to automated remediation resources (Ansible playbooks, Terraform scripts, etc.) for fixing failing requirements found in this assessment."
4663
4700
  },
4664
4701
  "systemRef": {
@@ -4672,7 +4709,7 @@
4672
4709
  "description": "Reference to an hdf-plan document describing the assessment plan that produced these results. May be a relative path, absolute URI, or fragment identifier."
4673
4710
  },
4674
4711
  "derivation": {
4675
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.5.0#/$defs/Derivation",
4712
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.7.0#/$defs/Derivation",
4676
4713
  "description": "Present ONLY on reconciled result sets: lineage recording the seed snapshot and event watermark this document was reassembled from (ADR-0005). Documents produced directly by a scan omit this field. When present, generator names the reconciling tool."
4677
4714
  },
4678
4715
  "extensions": {
@@ -4770,14 +4807,14 @@
4770
4807
  ],
4771
4808
  "allOf": [
4772
4809
  {
4773
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Baseline_Metadata"
4810
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Baseline_Metadata"
4774
4811
  }
4775
4812
  ],
4776
4813
  "properties": {
4777
4814
  "depends": {
4778
4815
  "type": "array",
4779
4816
  "items": {
4780
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Dependency"
4817
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Dependency"
4781
4818
  },
4782
4819
  "description": "The set of dependencies this baseline depends on."
4783
4820
  },
@@ -4790,15 +4827,15 @@
4790
4827
  "description": "The description - should be more detailed than the summary."
4791
4828
  },
4792
4829
  "integrity": {
4793
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Integrity",
4830
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Integrity",
4794
4831
  "description": "Cryptographic integrity information for verifying this baseline has not been tampered with."
4795
4832
  },
4796
4833
  "originalChecksum": {
4797
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
4834
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
4798
4835
  "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."
4799
4836
  },
4800
4837
  "resultsChecksum": {
4801
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
4838
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
4802
4839
  "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."
4803
4840
  },
4804
4841
  "statusMessage": {
@@ -4816,14 +4853,14 @@
4816
4853
  "groups": {
4817
4854
  "type": "array",
4818
4855
  "items": {
4819
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Requirement_Group"
4856
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Requirement_Group"
4820
4857
  },
4821
4858
  "description": "A set of descriptions for the requirement groups."
4822
4859
  },
4823
4860
  "inputs": {
4824
4861
  "type": "array",
4825
4862
  "items": {
4826
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.5.0#/$defs/Input"
4863
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.7.0#/$defs/Input"
4827
4864
  },
4828
4865
  "description": "Typed inputs used to parameterize this baseline at execution time. See the Input primitive for the full schema."
4829
4866
  },
@@ -4848,7 +4885,7 @@
4848
4885
  ],
4849
4886
  "allOf": [
4850
4887
  {
4851
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Requirement_Core"
4888
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Requirement_Core"
4852
4889
  }
4853
4890
  ],
4854
4891
  "properties": {
@@ -4856,7 +4893,7 @@
4856
4893
  "type": "array",
4857
4894
  "minItems": 1,
4858
4895
  "items": {
4859
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Requirement_Description"
4896
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Requirement_Description"
4860
4897
  },
4861
4898
  "contains": {
4862
4899
  "type": "object",
@@ -4872,37 +4909,37 @@
4872
4909
  "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'."
4873
4910
  },
4874
4911
  "severity": {
4875
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Severity",
4912
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Severity",
4876
4913
  "description": "Explicit severity rating. Typically derived from impact score but provided explicitly for clarity."
4877
4914
  },
4878
4915
  "sourceLocation": {
4879
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Source_Location",
4916
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Source_Location",
4880
4917
  "description": "The explicit location of the requirement within the source code."
4881
4918
  },
4882
4919
  "results": {
4883
4920
  "type": "array",
4884
4921
  "minItems": 1,
4885
4922
  "items": {
4886
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Requirement_Result"
4923
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Requirement_Result"
4887
4924
  },
4888
4925
  "description": "The set of all tests within the requirement and their results."
4889
4926
  },
4890
4927
  "statusOverrides": {
4891
4928
  "type": "array",
4892
4929
  "items": {
4893
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Status_Override"
4930
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Status_Override"
4894
4931
  },
4895
4932
  "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."
4896
4933
  },
4897
4934
  "poams": {
4898
4935
  "type": "array",
4899
4936
  "items": {
4900
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/POAM"
4937
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/POAM"
4901
4938
  },
4902
4939
  "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."
4903
4940
  },
4904
4941
  "effectiveStatus": {
4905
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
4942
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Result_Status",
4906
4943
  "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."
4907
4944
  },
4908
4945
  "effectiveImpact": {
@@ -4912,33 +4949,33 @@
4912
4949
  "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."
4913
4950
  },
4914
4951
  "disposition": {
4915
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Override_Type",
4952
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Override_Type",
4916
4953
  "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."
4917
4954
  },
4918
4955
  "effectiveChecksum": {
4919
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
4956
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
4920
4957
  "description": "Checksum of this requirement's resolved effective posture, for per-control change detection in continuous monitoring.\n\nsha256 over the canonical JSON object with keys status, impact, disposition (in that order), holding the resolved effective status, resolved effective impact, and governing override type (null when nothing governs), with override expiry anchored to the document timestamp.\n\nFlips exactly when the operative status, impact, or disposition changes; stable under all other churn (result details, timestamps, tags).\n\nOptional; stamped by tooling (hdf convert, hdf amend apply)."
4921
4958
  },
4922
4959
  "evidence": {
4923
4960
  "type": "array",
4924
4961
  "items": {
4925
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
4962
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
4926
4963
  },
4927
4964
  "description": "Supporting evidence for this requirement's findings, such as screenshots, code samples, or log excerpts."
4928
4965
  },
4929
4966
  "cvss": {
4930
4967
  "type": "array",
4931
4968
  "items": {
4932
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0#/$defs/Cvss"
4969
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0#/$defs/Cvss"
4933
4970
  },
4934
4971
  "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."
4935
4972
  },
4936
4973
  "epss": {
4937
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.5.0#/$defs/Epss",
4974
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.7.0#/$defs/Epss",
4938
4975
  "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."
4939
4976
  },
4940
4977
  "kev": {
4941
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.5.0#/$defs/Kev",
4978
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.7.0#/$defs/Kev",
4942
4979
  "description": "CISA Known Exploited Vulnerabilities (KEV) catalog status. When inKev=true, dateAdded and dueDate carry the federal patching deadline."
4943
4980
  },
4944
4981
  "cwe": {
@@ -4952,14 +4989,14 @@
4952
4989
  "affectedPackages": {
4953
4990
  "type": "array",
4954
4991
  "items": {
4955
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0#/$defs/Affected_Package"
4992
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0#/$defs/Affected_Package"
4956
4993
  },
4957
4994
  "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)."
4958
4995
  }
4959
4996
  },
4997
+ "$comment": "Examples, in order: 1) Passing requirement — no overrides, no disposition; 2) Waiver — AO accepted risk, status overridden to passed; 3) False positive (compliance scan) — STIG check was wrong, requirement actually passes; 4) False positive (CVE scan) — vulnerability does not apply to this build; 5) Risk adjustment — impact lowered, pass/fail unchanged; 6) Operational requirement — cannot remediate, remains open risk; 7) POAM — remediation tracked, status unchanged.",
4960
4998
  "examples": [
4961
4999
  {
4962
- "$comment": "Passing requirement — no overrides, no disposition",
4963
5000
  "id": "SV-230222",
4964
5001
  "title": "RHEL 9 must use SSH protocol version 2",
4965
5002
  "impact": 0.7,
@@ -4984,7 +5021,6 @@
4984
5021
  "effectiveStatus": "passed"
4985
5022
  },
4986
5023
  {
4987
- "$comment": "Waiver — AO accepted risk, status overridden to passed",
4988
5024
  "id": "SV-230300",
4989
5025
  "title": "RHEL 9 must enforce password complexity",
4990
5026
  "impact": 0.5,
@@ -5028,7 +5064,6 @@
5028
5064
  }
5029
5065
  },
5030
5066
  {
5031
- "$comment": "False positive (compliance scan) — STIG check was wrong, requirement actually passes",
5032
5067
  "id": "SV-230410",
5033
5068
  "title": "RHEL 9 must have sshd PermitRootLogin disabled",
5034
5069
  "impact": 0.7,
@@ -5068,7 +5103,6 @@
5068
5103
  "disposition": "falsePositive"
5069
5104
  },
5070
5105
  {
5071
- "$comment": "False positive (CVE scan) — vulnerability does not apply to this build",
5072
5106
  "id": "CVE-2026-12345",
5073
5107
  "title": "libxml2 buffer overflow in xmlParseEntityDecl",
5074
5108
  "impact": 0.9,
@@ -5108,7 +5142,6 @@
5108
5142
  "disposition": "falsePositive"
5109
5143
  },
5110
5144
  {
5111
- "$comment": "Risk adjustment — impact lowered, pass/fail unchanged",
5112
5145
  "id": "CVE-2026-67890",
5113
5146
  "title": "OpenSSL timing side-channel in RSA decryption",
5114
5147
  "impact": 0.7,
@@ -5151,7 +5184,6 @@
5151
5184
  "disposition": "riskAdjustment"
5152
5185
  },
5153
5186
  {
5154
- "$comment": "Operational requirement — cannot remediate, remains open risk",
5155
5187
  "id": "SV-230500",
5156
5188
  "title": "RHEL 9 must disable USB mass storage",
5157
5189
  "impact": 0.5,
@@ -5191,7 +5223,6 @@
5191
5223
  "disposition": "operationalRequirement"
5192
5224
  },
5193
5225
  {
5194
- "$comment": "POAM — remediation tracked, status unchanged",
5195
5226
  "id": "SV-230350",
5196
5227
  "title": "RHEL 9 must be patched within 30 days of release",
5197
5228
  "impact": 0.7,
@@ -5247,9 +5278,9 @@
5247
5278
  }
5248
5279
  }
5249
5280
  },
5250
- "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.5.0": {
5281
+ "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.7.0": {
5251
5282
  "$schema": "https://json-schema.org/draft/2020-12/schema",
5252
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.5.0",
5283
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.7.0",
5253
5284
  "title": "HDF Statistics Primitives",
5254
5285
  "description": "Statistics types for tracking assessment run metrics.",
5255
5286
  "$defs": {
@@ -5318,9 +5349,9 @@
5318
5349
  }
5319
5350
  }
5320
5351
  },
5321
- "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.5.0": {
5352
+ "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.7.0": {
5322
5353
  "$schema": "https://json-schema.org/draft/2020-12/schema",
5323
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.5.0",
5354
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.7.0",
5324
5355
  "title": "HDF Runner Primitive",
5325
5356
  "description": "Information about the test execution environment where the security tool/scanner was executed.",
5326
5357
  "$defs": {
@@ -5364,7 +5395,7 @@
5364
5395
  "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."
5365
5396
  },
5366
5397
  "operator": {
5367
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
5398
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
5368
5399
  "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."
5369
5400
  }
5370
5401
  },
@@ -5413,9 +5444,9 @@
5413
5444
  }
5414
5445
  }
5415
5446
  },
5416
- "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.5.0": {
5447
+ "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.7.0": {
5417
5448
  "$schema": "https://json-schema.org/draft/2020-12/schema",
5418
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.5.0",
5449
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.7.0",
5419
5450
  "title": "HDF Change Event Primitives",
5420
5451
  "description": "Shared building blocks for HDF change-event wire documents. The envelope is entity-agnostic: hdf-requirement-change-event composes it today, and any future sibling event type (e.g. component change events — hdf-comparison already models componentDiffs alongside requirementDiffs) reuses it verbatim.",
5421
5452
  "$defs": {
@@ -5469,7 +5500,7 @@
5469
5500
  "priorChecksum": {
5470
5501
  "oneOf": [
5471
5502
  {
5472
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum"
5503
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum"
5473
5504
  },
5474
5505
  {
5475
5506
  "type": "null"
@@ -5478,23 +5509,22 @@
5478
5509
  "description": "The effectiveChecksum of the entity state this event supersedes, forming a per-key hash chain: a mismatch or gap against stored state is detectable, letting a consumer mark the key unverified instead of serving stale posture.\n\nNull at chain start (no prior state, e.g. a new entity or the first event after a seed).\n\nThe chain provides tamper/gap evidence given a trusted head; completeness is anchored out-of-band by periodic re-centering rescans."
5479
5510
  }
5480
5511
  },
5512
+ "$comment": "Examples, in order: 1) Steady-state envelope: mid-chain event from an InSpec producer. priorChecksum links to the previous effectiveChecksum for this key; 2) Chain-start envelope: first event for a key after seeding — priorChecksum is null (the CloudTrail null-previous-digest convention), sequence starts low.",
5481
5513
  "examples": [
5482
5514
  {
5483
- "$comment": "Steady-state envelope: mid-chain event from an InSpec producer. priorChecksum links to the previous effectiveChecksum for this key.",
5484
5515
  "eventId": "0190f6f2-1c4e-7c3a-9f2a-3b1d5e7a9c01",
5485
5516
  "source": "inspec://web01/rhel9-stig",
5486
5517
  "sequence": 412,
5487
5518
  "systemRef": "apptier.hdf-system.json",
5488
5519
  "componentId": "6e0f2a3b-9c01-4d5e-8f7a-1b2c3d4e5f60",
5489
5520
  "timestamp": "2026-07-22T14:03:11Z",
5490
- "schemaRef": "https://mitre.github.io/hdf-libs/schemas/hdf-requirement-change-event/v3.5.0",
5521
+ "schemaRef": "https://mitre.github.io/hdf-libs/schemas/hdf-requirement-change-event/v3.7.0",
5491
5522
  "priorChecksum": {
5492
5523
  "algorithm": "sha256",
5493
5524
  "value": "704f62b2d0803438ad6b7b9bab45e2c4f350b7344135a2a7f8ef986d98669021"
5494
5525
  }
5495
5526
  },
5496
5527
  {
5497
- "$comment": "Chain-start envelope: first event for a key after seeding — priorChecksum is null (the CloudTrail null-previous-digest convention), sequence starts low.",
5498
5528
  "eventId": "0190f6f2-2a5b-7e4d-b1c8-4f2e6a8b0d12",
5499
5529
  "source": "inspec://web01/rhel9-stig",
5500
5530
  "sequence": 1,
@@ -5542,7 +5572,7 @@
5542
5572
  ],
5543
5573
  "properties": {
5544
5574
  "effectiveStatus": {
5545
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
5575
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Result_Status",
5546
5576
  "description": "The resolved effective compliance status at this point in the chain."
5547
5577
  },
5548
5578
  "effectiveImpact": {
@@ -5552,14 +5582,13 @@
5552
5582
  "description": "The resolved effective impact score (0.0–1.0) at this point in the chain."
5553
5583
  }
5554
5584
  },
5585
+ "$comment": "Examples, in order: 1) Prior posture of a failing SSH-cipher control before remediation; 2) Prior posture of a control passing under a waiver (the projection carries the resolved status; the governing override type travels in the requirement payload, not here).",
5555
5586
  "examples": [
5556
5587
  {
5557
- "$comment": "Prior posture of a failing SSH-cipher control before remediation.",
5558
5588
  "effectiveStatus": "failed",
5559
5589
  "effectiveImpact": 0.5
5560
5590
  },
5561
5591
  {
5562
- "$comment": "Prior posture of a control passing under a waiver (the projection carries the resolved status; the governing override type travels in the requirement payload, not here).",
5563
5592
  "effectiveStatus": "passed",
5564
5593
  "effectiveImpact": 0.5
5565
5594
  }
@@ -5592,7 +5621,7 @@
5592
5621
  "description": "URI to the seed snapshot document (relative path or absolute URL)."
5593
5622
  },
5594
5623
  "checksum": {
5595
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
5624
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
5596
5625
  "description": "Checksum of the seed snapshot, REQUIRED: the derivation pins an immutable snapshot by content, not just location."
5597
5626
  }
5598
5627
  },
@@ -5620,9 +5649,9 @@
5620
5649
  "description": "The posture-as-of time of this reconciled view (RFC 3339, trimmed UTC) — the analog of PROV's generatedAtTime."
5621
5650
  }
5622
5651
  },
5652
+ "$comment": "Examples, in order: 1) A reconciled result set: reassembled from the pinned seed scan plus 3 change events through watermark 414. The document's generator names the reconciler, never the scanner.",
5623
5653
  "examples": [
5624
5654
  {
5625
- "$comment": "A reconciled result set: reassembled from the pinned seed scan plus 3 change events through watermark 414. The document's generator names the reconciler, never the scanner.",
5626
5655
  "seed": {
5627
5656
  "uri": "apptier-seed-scan.hdf.json",
5628
5657
  "checksum": {
@@ -5641,9 +5670,9 @@
5641
5670
  }
5642
5671
  }
5643
5672
  },
5644
- "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.5.0": {
5673
+ "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.7.0": {
5645
5674
  "$schema": "https://json-schema.org/draft/2020-12/schema",
5646
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.5.0",
5675
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.7.0",
5647
5676
  "title": "HDF Parameter Primitives",
5648
5677
  "description": "Input/parameter type definitions for typed, traceable configuration values that bridge governance prose and scanner automation.",
5649
5678
  "$defs": {
@@ -5774,9 +5803,9 @@
5774
5803
  }
5775
5804
  }
5776
5805
  },
5777
- "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.5.0": {
5806
+ "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.7.0": {
5778
5807
  "$schema": "https://json-schema.org/draft/2020-12/schema",
5779
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.5.0",
5808
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.7.0",
5780
5809
  "title": "HDF EPSS Primitive",
5781
5810
  "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.",
5782
5811
  "$defs": {
@@ -5808,21 +5837,19 @@
5808
5837
  "description": "ISO 8601 date (YYYY-MM-DD) on which FIRST.org published this EPSS score."
5809
5838
  }
5810
5839
  },
5840
+ "$comment": "Examples, in order: 1) High exploit probability and high percentile, characteristic of a widely-exploited vulnerability like Log4Shell (CVE-2021-44228) shortly after disclosure; 2) Low score but moderate percentile, the common case for CVEs that have some observed exploitation evidence but are not under active mass exploitation; 3) Very low score, typical of a CVE with no known exploitation activity or proof-of-concept availability.",
5811
5841
  "examples": [
5812
5842
  {
5813
- "$comment": "High exploit probability and high percentile, characteristic of a widely-exploited vulnerability like Log4Shell (CVE-2021-44228) shortly after disclosure.",
5814
5843
  "score": 0.97532,
5815
5844
  "percentile": 0.99987,
5816
5845
  "date": "2026-05-26"
5817
5846
  },
5818
5847
  {
5819
- "$comment": "Low score but moderate percentile, the common case for CVEs that have some observed exploitation evidence but are not under active mass exploitation.",
5820
5848
  "score": 0.04521,
5821
5849
  "percentile": 0.78432,
5822
5850
  "date": "2026-05-26"
5823
5851
  },
5824
5852
  {
5825
- "$comment": "Very low score, typical of a CVE with no known exploitation activity or proof-of-concept availability.",
5826
5853
  "score": 0.00042,
5827
5854
  "percentile": 0.10215,
5828
5855
  "date": "2026-05-26"
@@ -5833,9 +5860,9 @@
5833
5860
  }
5834
5861
  }
5835
5862
  },
5836
- "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.5.0": {
5863
+ "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.7.0": {
5837
5864
  "$schema": "https://json-schema.org/draft/2020-12/schema",
5838
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.5.0",
5865
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.7.0",
5839
5866
  "title": "HDF Kev Primitives",
5840
5867
  "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.",
5841
5868
  "$defs": {
@@ -5881,23 +5908,21 @@
5881
5908
  "description": "CISA's notes describing the vulnerability, observed exploitation, or remediation guidance."
5882
5909
  }
5883
5910
  },
5911
+ "$comment": "Examples, in order: 1) High-urgency case: recently added KEV entry with a short federal patching deadline; 2) Older KEV entry whose due date has already passed — useful for reporting overdue remediation; 3) Vulnerability evaluated against the KEV catalog and confirmed not present — dateAdded/dueDate are not required when inKev is false.",
5884
5912
  "examples": [
5885
5913
  {
5886
- "$comment": "High-urgency case: recently added KEV entry with a short federal patching deadline.",
5887
5914
  "inKev": true,
5888
5915
  "dateAdded": "2026-03-15",
5889
5916
  "dueDate": "2026-04-05",
5890
5917
  "notes": "Active ransomware exploitation observed; apply vendor patch immediately."
5891
5918
  },
5892
5919
  {
5893
- "$comment": "Older KEV entry whose due date has already passed — useful for reporting overdue remediation.",
5894
5920
  "inKev": true,
5895
5921
  "dateAdded": "2023-11-07",
5896
5922
  "dueDate": "2023-11-28",
5897
5923
  "notes": "Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable."
5898
5924
  },
5899
5925
  {
5900
- "$comment": "Vulnerability evaluated against the KEV catalog and confirmed not present — dateAdded/dueDate are not required when inKev is false.",
5901
5926
  "inKev": false
5902
5927
  }
5903
5928
  ],