@mitre/hdf-schema 3.4.4 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -2
- package/dist/go/hdf.go +535 -271
- package/dist/helpers.d.ts +56 -1
- package/dist/helpers.js +98 -38
- package/dist/index.d.ts +2 -0
- package/dist/index.js +28 -26
- package/dist/schemas/hdf-amendments.schema.json +235 -48
- package/dist/schemas/hdf-baseline.schema.json +240 -53
- package/dist/schemas/hdf-comparison.schema.json +1948 -1504
- package/dist/schemas/hdf-evidence-package.schema.json +242 -48
- package/dist/schemas/hdf-plan.schema.json +692 -498
- package/dist/schemas/hdf-requirement-change-event.schema.json +5290 -0
- package/dist/schemas/hdf-results.schema.json +1650 -1215
- package/dist/schemas/hdf-system.schema.json +262 -68
- package/dist/ts/hdf.d.ts +420 -73
- package/dist/ts/hdf.js +65 -30
- package/dist/ts/hdf.ts +428 -77
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-comparison/v3.
|
|
3
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-comparison/v3.5.0",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"unevaluatedProperties": false,
|
|
6
6
|
"required": [
|
|
@@ -11,13 +11,20 @@
|
|
|
11
11
|
"requirementDiffs"
|
|
12
12
|
],
|
|
13
13
|
"properties": {
|
|
14
|
+
"externalReferences": {
|
|
15
|
+
"type": "array",
|
|
16
|
+
"items": {
|
|
17
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
|
|
18
|
+
},
|
|
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
|
+
},
|
|
14
21
|
"formatVersion": {
|
|
15
22
|
"type": "string",
|
|
16
23
|
"const": "1.0.0",
|
|
17
24
|
"description": "Schema version for this comparison format."
|
|
18
25
|
},
|
|
19
26
|
"comparisonMode": {
|
|
20
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
27
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Comparison_Mode",
|
|
21
28
|
"description": "The mode of comparison being performed."
|
|
22
29
|
},
|
|
23
30
|
"timestamp": {
|
|
@@ -26,50 +33,50 @@
|
|
|
26
33
|
"description": "When this comparison was performed."
|
|
27
34
|
},
|
|
28
35
|
"generator": {
|
|
29
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
36
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Generator",
|
|
30
37
|
"description": "Information about the tool that generated this comparison."
|
|
31
38
|
},
|
|
32
39
|
"sources": {
|
|
33
40
|
"type": "array",
|
|
34
41
|
"minItems": 2,
|
|
35
42
|
"items": {
|
|
36
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
43
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Source"
|
|
37
44
|
},
|
|
38
45
|
"description": "The source documents being compared. At least two sources are required."
|
|
39
46
|
},
|
|
40
47
|
"matching": {
|
|
41
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
48
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Matching_Config",
|
|
42
49
|
"description": "Configuration for how requirements were matched across sources."
|
|
43
50
|
},
|
|
44
51
|
"summary": {
|
|
45
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
52
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Comparison_Summary",
|
|
46
53
|
"description": "Summary statistics for the overall comparison."
|
|
47
54
|
},
|
|
48
55
|
"baselineDiffs": {
|
|
49
56
|
"type": "array",
|
|
50
57
|
"items": {
|
|
51
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
58
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Baseline_Diff"
|
|
52
59
|
},
|
|
53
60
|
"description": "Comparison of baselines between sources."
|
|
54
61
|
},
|
|
55
62
|
"requirementDiffs": {
|
|
56
63
|
"type": "array",
|
|
57
64
|
"items": {
|
|
58
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
65
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Requirement_Diff"
|
|
59
66
|
},
|
|
60
67
|
"description": "Detailed comparison of individual requirements between sources."
|
|
61
68
|
},
|
|
62
69
|
"componentDiffs": {
|
|
63
70
|
"type": "array",
|
|
64
71
|
"items": {
|
|
65
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
72
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Component_Diff"
|
|
66
73
|
},
|
|
67
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."
|
|
68
75
|
},
|
|
69
76
|
"packageDiffs": {
|
|
70
77
|
"type": "array",
|
|
71
78
|
"items": {
|
|
72
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
79
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Package_Diff"
|
|
73
80
|
},
|
|
74
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."
|
|
75
82
|
},
|
|
@@ -81,19 +88,19 @@
|
|
|
81
88
|
"drift": {
|
|
82
89
|
"type": "array",
|
|
83
90
|
"items": {
|
|
84
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
91
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Requirement_Diff"
|
|
85
92
|
},
|
|
86
93
|
"description": "External/metadata changes separate from status changes (Terraform pattern)."
|
|
87
94
|
},
|
|
88
95
|
"annotations": {
|
|
89
96
|
"type": "object",
|
|
90
97
|
"additionalProperties": {
|
|
91
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.
|
|
98
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0#/$defs/Annotation"
|
|
92
99
|
},
|
|
93
100
|
"description": "Map of annotation IDs to annotation objects, providing context or action items for requirement diffs."
|
|
94
101
|
},
|
|
95
102
|
"integrity": {
|
|
96
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
103
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Integrity",
|
|
97
104
|
"description": "Cryptographic integrity information for verifying this comparison document."
|
|
98
105
|
},
|
|
99
106
|
"extensions": {
|
|
@@ -105,1801 +112,1945 @@
|
|
|
105
112
|
"description": "Structured comparison between two or more HDF security assessment documents. Supports temporal, baseline, fleet, and multi-source comparison modes.",
|
|
106
113
|
"title": "HDF Comparison",
|
|
107
114
|
"$defs": {
|
|
108
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/
|
|
115
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0": {
|
|
109
116
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
110
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/
|
|
111
|
-
"title": "HDF
|
|
112
|
-
"description": "
|
|
117
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0",
|
|
118
|
+
"title": "HDF Common Primitives",
|
|
119
|
+
"description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
|
|
113
120
|
"$defs": {
|
|
114
|
-
"
|
|
115
|
-
"type": "
|
|
116
|
-
"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
"
|
|
120
|
-
"updated",
|
|
121
|
-
"fixed",
|
|
122
|
-
"regressed",
|
|
123
|
-
"moved",
|
|
124
|
-
"split",
|
|
125
|
-
"merged"
|
|
126
|
-
],
|
|
127
|
-
"description": "SARIF-compatible vocabulary extended for security. 'new' = present only in new source, 'absent' = present only in old, 'unchanged' = same effective status, 'updated' = status changed (generic), 'fixed' = was failing now passing, 'regressed' = was passing now failing, 'moved' = reorganized same content, 'split'/'merged' = reserved for v1.1.",
|
|
128
|
-
"title": "Requirement State"
|
|
129
|
-
},
|
|
130
|
-
"Change_Reason": {
|
|
131
|
-
"type": "string",
|
|
132
|
-
"enum": [
|
|
133
|
-
"resultChanged",
|
|
134
|
-
"overrideAdded",
|
|
135
|
-
"overrideExpired",
|
|
136
|
-
"overrideRemoved",
|
|
137
|
-
"overrideModified",
|
|
138
|
-
"impactChanged",
|
|
139
|
-
"baselineUpgraded",
|
|
140
|
-
"controlMapped",
|
|
141
|
-
"scannerChanged",
|
|
142
|
-
"targetChanged",
|
|
143
|
-
"configChanged",
|
|
144
|
-
"metadataChanged"
|
|
145
|
-
],
|
|
146
|
-
"description": "The reason a requirement's state changed between sources.",
|
|
147
|
-
"title": "Change Reason"
|
|
148
|
-
},
|
|
149
|
-
"Comparison_Mode": {
|
|
150
|
-
"type": "string",
|
|
151
|
-
"enum": [
|
|
152
|
-
"temporal",
|
|
153
|
-
"baseline",
|
|
154
|
-
"fleet",
|
|
155
|
-
"multiSource",
|
|
156
|
-
"baselineEvolution",
|
|
157
|
-
"systemDrift"
|
|
158
|
-
],
|
|
159
|
-
"description": "The mode of comparison. 'temporal' compares the same target over time. 'baseline' compares against a golden reference. 'fleet' compares across multiple systems. 'multiSource' compares outputs from different scanners. 'baselineEvolution' compares two baseline documents to detect requirement changes between versions. 'systemDrift' compares two system documents to detect component-level changes.",
|
|
160
|
-
"title": "Comparison Mode"
|
|
161
|
-
},
|
|
162
|
-
"Source_Role": {
|
|
163
|
-
"type": "string",
|
|
164
|
-
"enum": [
|
|
165
|
-
"old",
|
|
166
|
-
"new",
|
|
167
|
-
"golden",
|
|
168
|
-
"reference",
|
|
169
|
-
"system"
|
|
170
|
-
],
|
|
171
|
-
"description": "The role of a source document in the comparison.",
|
|
172
|
-
"title": "Source Role"
|
|
173
|
-
},
|
|
174
|
-
"Original_Format": {
|
|
175
|
-
"type": "string",
|
|
176
|
-
"enum": [
|
|
177
|
-
"hdf-v2",
|
|
178
|
-
"inspec-v1",
|
|
179
|
-
"sarif",
|
|
180
|
-
"oscal-ar",
|
|
181
|
-
"xccdf"
|
|
182
|
-
],
|
|
183
|
-
"description": "The original format of the source document before conversion to HDF.",
|
|
184
|
-
"title": "Original Format"
|
|
185
|
-
},
|
|
186
|
-
"Match_Strategy": {
|
|
187
|
-
"type": "string",
|
|
188
|
-
"enum": [
|
|
189
|
-
"exactId",
|
|
190
|
-
"mappedId",
|
|
191
|
-
"cciMatch",
|
|
192
|
-
"nistMatch",
|
|
193
|
-
"fuzzyTitle",
|
|
194
|
-
"fuzzyContent"
|
|
121
|
+
"External_Reference": {
|
|
122
|
+
"type": "object",
|
|
123
|
+
"title": "External Reference",
|
|
124
|
+
"description": "A generalized reference to any external artifact by identity and/or location, modeled on the STIX 2.1 `external_references` common property. Purpose-agnostic: cite a CVE, an ATT&CK technique, a STIX bundle/object, a BOM, a runbook, or any vendor artifact — including kinds with no dedicated HDF reference category. `sourceName` names the system; `externalId` cites by id within that system; `href` locates it. `sourceName` + `externalId` is equivalently a URN (`urn:<sourceName>:<externalId>`, RFC 8141), so the by-identity and by-location forms stay interconvertible. A reference is inert context: it overrides nothing, so it carries only lightweight optional `addedBy`/`addedAt` attribution, never override machinery.",
|
|
125
|
+
"required": [
|
|
126
|
+
"sourceName"
|
|
195
127
|
],
|
|
196
|
-
"
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
128
|
+
"anyOf": [
|
|
129
|
+
{
|
|
130
|
+
"required": [
|
|
131
|
+
"externalId"
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"required": [
|
|
136
|
+
"href"
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"required": [
|
|
141
|
+
"description"
|
|
142
|
+
]
|
|
143
|
+
}
|
|
206
144
|
],
|
|
207
|
-
"
|
|
208
|
-
|
|
145
|
+
"properties": {
|
|
146
|
+
"sourceName": {
|
|
147
|
+
"type": "string",
|
|
148
|
+
"minLength": 1,
|
|
149
|
+
"description": "Name of the external system/source being referenced (e.g., 'cve', 'mitre-att&ck', 'stix', 'taxii', or any vendor label). Open string — not a closed enum. Use the `x-` prefix convention for custom/experimental sources, mirroring `bomType`."
|
|
150
|
+
},
|
|
151
|
+
"externalId": {
|
|
152
|
+
"type": "string",
|
|
153
|
+
"description": "Identifier of the artifact within `sourceName` (e.g., 'CVE-2021-44228' for source 'cve', 'T1059' for 'mitre-att&ck'). Cite by id without needing a URL. Together with `sourceName` this is a URN."
|
|
154
|
+
},
|
|
155
|
+
"href": {
|
|
156
|
+
"type": "string",
|
|
157
|
+
"format": "uri-reference",
|
|
158
|
+
"description": "Location of the artifact. `uri-reference` (not `uri`) so a bare internal `#fragment`/`#uuid` reference is expressible alongside absolute URLs. `checksum`/`mediaType` apply only to a retrievable `href`."
|
|
159
|
+
},
|
|
160
|
+
"description": {
|
|
161
|
+
"type": "string",
|
|
162
|
+
"description": "Human-readable description of what is referenced. Satisfies the at-least-one rule on its own when neither id nor href is available."
|
|
163
|
+
},
|
|
164
|
+
"rel": {
|
|
165
|
+
"type": "string",
|
|
166
|
+
"description": "Open relationship token describing how this reference relates to the referencing object. Deliberately open (cf. OSCAL `rel` allow-other, RFC 8288 extension relations). Documented starter vocabulary: 'reference' (generic), 'definition' (defines the concept), 'evidence' (supporting evidence), 'investigate' (a live pivot to investigate), 'canonical' (the authoritative source)."
|
|
167
|
+
},
|
|
168
|
+
"mediaType": {
|
|
169
|
+
"type": "string",
|
|
170
|
+
"description": "IANA media type of the referenced artifact when retrievable (RFC 6838), e.g., 'application/json'. Meaningful only with `href`."
|
|
171
|
+
},
|
|
172
|
+
"checksum": {
|
|
173
|
+
"$ref": "#/$defs/Checksum",
|
|
174
|
+
"description": "Integrity hash of the referenced artifact. Reuses the HDF `Checksum` primitive (not STIX `hashes`). Meaningful only with a retrievable `href`."
|
|
175
|
+
},
|
|
176
|
+
"addedBy": {
|
|
177
|
+
"$ref": "#/$defs/Identity",
|
|
178
|
+
"description": "Who attached this reference. Lightweight, flat attribution — a reference overrides nothing, so it has no chaining/superseding/disposition."
|
|
179
|
+
},
|
|
180
|
+
"addedAt": {
|
|
181
|
+
"type": "string",
|
|
182
|
+
"format": "date-time",
|
|
183
|
+
"description": "When this reference was attached (RFC 3339 / trimmed-UTC per HDF timestamp convention)."
|
|
184
|
+
},
|
|
185
|
+
"kind": {
|
|
186
|
+
"type": "string",
|
|
187
|
+
"minLength": 1,
|
|
188
|
+
"description": "Open token classifying the referenced/embedded payload, turning a bare reference into an enrichment envelope. Deliberately open (like `sourceName`/`rel`), not a closed enum. Documented starter vocabulary: 'threat-intel' (STIX/CTI object), 'annotation' (human triage note), 'exploitation' (EPSS/KEV signal carried as context), 'advisory' (vendor/security advisory). Use the `x-` prefix for custom kinds."
|
|
189
|
+
},
|
|
190
|
+
"document": {
|
|
191
|
+
"type": "object",
|
|
192
|
+
"additionalProperties": true,
|
|
193
|
+
"description": "Optional lossless embedded copy of the referenced artifact — the raw STIX object, EPSS record, advisory, or annotation payload — preserved verbatim. Composes with `href`/`externalId` (which point at the artifact) and `checksum` (which ties the copy to the source): a single entry can both point and embed. HDF stays payload-agnostic — the content is carried untouched, never normalized into HDF fields — so this does not duplicate the source ontology (e.g. STIX rides here unchanged)."
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
"unevaluatedProperties": false,
|
|
197
|
+
"examples": [
|
|
198
|
+
{
|
|
199
|
+
"$comment": "By-identity: cite a CVE by its id in the 'cve' system without a URL — equivalently urn:cve:CVE-2021-44228.",
|
|
200
|
+
"sourceName": "cve",
|
|
201
|
+
"externalId": "CVE-2021-44228",
|
|
202
|
+
"rel": "definition"
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"$comment": "By-identity AND by-locator together (anyOf, not oneOf) — an ATT&CK technique cited by id with its canonical URL.",
|
|
206
|
+
"sourceName": "mitre-att&ck",
|
|
207
|
+
"externalId": "T1059",
|
|
208
|
+
"href": "https://attack.mitre.org/techniques/T1059/",
|
|
209
|
+
"rel": "canonical"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"$comment": "By-locator to a retrievable STIX bundle, with integrity hash, media type, and attribution.",
|
|
213
|
+
"sourceName": "stix",
|
|
214
|
+
"href": "https://cti.example.org/bundles/log4shell.json",
|
|
215
|
+
"rel": "investigate",
|
|
216
|
+
"mediaType": "application/json",
|
|
217
|
+
"checksum": {
|
|
218
|
+
"algorithm": "sha256",
|
|
219
|
+
"value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
220
|
+
},
|
|
221
|
+
"addedBy": {
|
|
222
|
+
"type": "email",
|
|
223
|
+
"identifier": "analyst@agency.gov"
|
|
224
|
+
},
|
|
225
|
+
"addedAt": "2026-07-26T00:00:00Z"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
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
|
+
"sourceName": "stix",
|
|
230
|
+
"externalId": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
|
|
231
|
+
"href": "https://cti.example.org/bundles/log4shell.json#vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
|
|
232
|
+
"rel": "investigate",
|
|
233
|
+
"kind": "threat-intel",
|
|
234
|
+
"document": {
|
|
235
|
+
"type": "vulnerability",
|
|
236
|
+
"spec_version": "2.1",
|
|
237
|
+
"id": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
|
|
238
|
+
"name": "CVE-2021-44228",
|
|
239
|
+
"external_references": [
|
|
240
|
+
{
|
|
241
|
+
"source_name": "cve",
|
|
242
|
+
"external_id": "CVE-2021-44228"
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
]
|
|
209
248
|
},
|
|
210
|
-
"
|
|
249
|
+
"Hash_Algorithm": {
|
|
211
250
|
"type": "string",
|
|
212
251
|
"enum": [
|
|
213
|
-
"
|
|
214
|
-
"
|
|
215
|
-
"
|
|
216
|
-
"
|
|
217
|
-
"scannerNote"
|
|
252
|
+
"sha256",
|
|
253
|
+
"sha384",
|
|
254
|
+
"sha512",
|
|
255
|
+
"blake3"
|
|
218
256
|
],
|
|
219
|
-
"description": "
|
|
220
|
-
"title": "
|
|
257
|
+
"description": "Supported cryptographic hash algorithms for checksums and integrity verification. blake3 covers container-image and other artifact digests that use it.",
|
|
258
|
+
"title": "Hash Algorithm"
|
|
221
259
|
},
|
|
222
|
-
"
|
|
260
|
+
"Requirement_Group": {
|
|
223
261
|
"type": "object",
|
|
224
262
|
"unevaluatedProperties": false,
|
|
225
263
|
"required": [
|
|
226
|
-
"
|
|
227
|
-
"
|
|
264
|
+
"id",
|
|
265
|
+
"requirements"
|
|
228
266
|
],
|
|
229
267
|
"properties": {
|
|
230
|
-
"
|
|
268
|
+
"id": {
|
|
231
269
|
"type": "string",
|
|
232
|
-
"
|
|
233
|
-
"enum": [
|
|
234
|
-
"add",
|
|
235
|
-
"remove",
|
|
236
|
-
"replace"
|
|
237
|
-
],
|
|
238
|
-
"description": "The type of change operation."
|
|
270
|
+
"description": "The unique identifier for the group. Example: the relative path to the file specifying the requirements."
|
|
239
271
|
},
|
|
240
|
-
"
|
|
272
|
+
"title": {
|
|
241
273
|
"type": "string",
|
|
242
|
-
"description": "
|
|
243
|
-
},
|
|
244
|
-
"oldValue": {
|
|
245
|
-
"description": "The previous value of the field (for 'remove' and 'replace' operations)."
|
|
274
|
+
"description": "The title of the group - should be human readable."
|
|
246
275
|
},
|
|
247
|
-
"
|
|
248
|
-
"
|
|
276
|
+
"requirements": {
|
|
277
|
+
"type": "array",
|
|
278
|
+
"items": {
|
|
279
|
+
"type": "string"
|
|
280
|
+
},
|
|
281
|
+
"description": "The set of requirements as specified by their ids in this group. Example: 'SV-238196'."
|
|
249
282
|
}
|
|
250
283
|
},
|
|
251
|
-
"description": "
|
|
252
|
-
"title": "
|
|
284
|
+
"description": "Describes a group of requirements, such as those defined in a single file.",
|
|
285
|
+
"title": "Requirement Group"
|
|
253
286
|
},
|
|
254
|
-
"
|
|
287
|
+
"Dependency": {
|
|
255
288
|
"type": "object",
|
|
256
289
|
"unevaluatedProperties": false,
|
|
257
|
-
"required": [
|
|
258
|
-
"role",
|
|
259
|
-
"label"
|
|
260
|
-
],
|
|
290
|
+
"required": [],
|
|
261
291
|
"properties": {
|
|
262
|
-
"
|
|
263
|
-
"
|
|
264
|
-
"description": "The
|
|
292
|
+
"name": {
|
|
293
|
+
"type": "string",
|
|
294
|
+
"description": "The name or assigned alias."
|
|
265
295
|
},
|
|
266
|
-
"
|
|
296
|
+
"url": {
|
|
267
297
|
"type": "string",
|
|
268
|
-
"
|
|
298
|
+
"format": "uri-reference",
|
|
299
|
+
"description": "The address of the dependency."
|
|
269
300
|
},
|
|
270
|
-
"
|
|
301
|
+
"branch": {
|
|
271
302
|
"type": "string",
|
|
272
|
-
"
|
|
273
|
-
"description": "URI pointing to the source document."
|
|
303
|
+
"description": "The branch name for a git repo."
|
|
274
304
|
},
|
|
275
|
-
"
|
|
276
|
-
"
|
|
277
|
-
"description": "The
|
|
305
|
+
"path": {
|
|
306
|
+
"type": "string",
|
|
307
|
+
"description": "The relative path if the dependency is locally available."
|
|
278
308
|
},
|
|
279
|
-
"
|
|
280
|
-
"
|
|
281
|
-
"description": "
|
|
309
|
+
"statusMessage": {
|
|
310
|
+
"type": "string",
|
|
311
|
+
"description": "The reason for the status if it is 'failed' or 'skipped'."
|
|
282
312
|
},
|
|
283
|
-
"
|
|
313
|
+
"status": {
|
|
284
314
|
"type": "string",
|
|
285
|
-
"
|
|
286
|
-
"description": "When the source assessment was performed. ISO 8601 format."
|
|
315
|
+
"description": "The status. Should be: 'loaded', 'failed', or 'skipped'."
|
|
287
316
|
},
|
|
288
|
-
"
|
|
289
|
-
"
|
|
290
|
-
"
|
|
317
|
+
"git": {
|
|
318
|
+
"type": "string",
|
|
319
|
+
"format": "uri",
|
|
320
|
+
"description": "The location of the git repo. Example: 'https://github.com/my-org/ubuntu-22.04-stig-baseline.git'."
|
|
291
321
|
},
|
|
292
|
-
"
|
|
293
|
-
"type": "
|
|
294
|
-
"
|
|
295
|
-
|
|
322
|
+
"supermarket": {
|
|
323
|
+
"type": "string",
|
|
324
|
+
"description": "The 'user/profilename' attribute for a Supermarket server."
|
|
325
|
+
},
|
|
326
|
+
"compliance": {
|
|
327
|
+
"type": "string",
|
|
328
|
+
"description": "The 'user/profilename' attribute for an Automate server."
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
"examples": [
|
|
332
|
+
{
|
|
333
|
+
"name": "ubuntu-22.04-baseline",
|
|
334
|
+
"url": "https://github.com/my-org/ubuntu-22.04-stig-baseline",
|
|
335
|
+
"git": "https://github.com/my-org/ubuntu-22.04-stig-baseline.git",
|
|
336
|
+
"branch": "main",
|
|
337
|
+
"status": "loaded"
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"name": "ssl-tls-baseline",
|
|
341
|
+
"path": "../shared-baselines/ssl-tls",
|
|
342
|
+
"status": "loaded"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"name": "windows-2022-baseline",
|
|
346
|
+
"git": "https://github.com/security-org/windows-2022-stig.git",
|
|
347
|
+
"branch": "v1.2.0",
|
|
348
|
+
"status": "failed",
|
|
349
|
+
"statusMessage": "Unable to clone repository: authentication failed"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"name": "chef-supermarket-baseline",
|
|
353
|
+
"supermarket": "dev-sec/linux-baseline",
|
|
354
|
+
"status": "loaded"
|
|
355
|
+
}
|
|
356
|
+
],
|
|
357
|
+
"description": "A dependency for a baseline. Can include relative paths or URLs for where to find the dependency.",
|
|
358
|
+
"title": "Dependency"
|
|
359
|
+
},
|
|
360
|
+
"Reference": {
|
|
361
|
+
"anyOf": [
|
|
362
|
+
{
|
|
363
|
+
"type": "object",
|
|
364
|
+
"required": [
|
|
365
|
+
"ref"
|
|
366
|
+
],
|
|
367
|
+
"properties": {
|
|
368
|
+
"ref": {
|
|
369
|
+
"anyOf": [
|
|
370
|
+
{
|
|
371
|
+
"type": "string",
|
|
372
|
+
"description": "A human readable/meaningful reference. Example: a book title."
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"type": "array",
|
|
376
|
+
"items": {
|
|
377
|
+
"type": "object",
|
|
378
|
+
"additionalProperties": true
|
|
379
|
+
},
|
|
380
|
+
"description": "An array of reference objects."
|
|
381
|
+
}
|
|
382
|
+
]
|
|
383
|
+
}
|
|
296
384
|
},
|
|
297
|
-
"description": "
|
|
385
|
+
"description": "A reference using the 'ref' field."
|
|
298
386
|
},
|
|
299
|
-
|
|
387
|
+
{
|
|
300
388
|
"type": "object",
|
|
301
|
-
"unevaluatedProperties": false,
|
|
302
389
|
"required": [
|
|
303
|
-
"
|
|
390
|
+
"url"
|
|
304
391
|
],
|
|
305
392
|
"properties": {
|
|
306
|
-
"
|
|
393
|
+
"url": {
|
|
307
394
|
"type": "string",
|
|
308
|
-
"
|
|
309
|
-
}
|
|
310
|
-
|
|
395
|
+
"format": "uri"
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
"description": "A URL pointing at the reference."
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"type": "object",
|
|
402
|
+
"required": [
|
|
403
|
+
"uri"
|
|
404
|
+
],
|
|
405
|
+
"properties": {
|
|
406
|
+
"uri": {
|
|
311
407
|
"type": "string",
|
|
312
|
-
"
|
|
408
|
+
"format": "uri"
|
|
313
409
|
}
|
|
314
410
|
},
|
|
315
|
-
"description": "
|
|
411
|
+
"description": "A URI pointing at the reference."
|
|
316
412
|
}
|
|
317
|
-
|
|
318
|
-
"description": "A
|
|
319
|
-
"title": "
|
|
413
|
+
],
|
|
414
|
+
"description": "A reference to an external document.",
|
|
415
|
+
"title": "Reference"
|
|
320
416
|
},
|
|
321
|
-
"
|
|
417
|
+
"Source_Location": {
|
|
322
418
|
"type": "object",
|
|
323
419
|
"unevaluatedProperties": false,
|
|
324
|
-
"required": [
|
|
325
|
-
"primaryStrategy"
|
|
326
|
-
],
|
|
420
|
+
"required": [],
|
|
327
421
|
"properties": {
|
|
328
|
-
"
|
|
329
|
-
"$ref": "#/$defs/Match_Strategy",
|
|
330
|
-
"description": "The primary strategy used to match requirements across sources."
|
|
331
|
-
},
|
|
332
|
-
"fallbackStrategies": {
|
|
333
|
-
"type": "array",
|
|
334
|
-
"items": {
|
|
335
|
-
"$ref": "#/$defs/Match_Strategy"
|
|
336
|
-
},
|
|
337
|
-
"description": "Ordered list of fallback strategies tried when the primary strategy fails to find a match."
|
|
338
|
-
},
|
|
339
|
-
"minimumConfidence": {
|
|
340
|
-
"type": "number",
|
|
341
|
-
"minimum": 0,
|
|
342
|
-
"maximum": 1,
|
|
343
|
-
"description": "Minimum confidence score (0-1) required to accept a match."
|
|
344
|
-
},
|
|
345
|
-
"mappingTableUri": {
|
|
422
|
+
"ref": {
|
|
346
423
|
"type": "string",
|
|
347
|
-
"
|
|
348
|
-
"description": "URI pointing to an external mapping table used for ID translation."
|
|
424
|
+
"description": "Path to the file that this requirement originates from."
|
|
349
425
|
},
|
|
350
|
-
"
|
|
351
|
-
"type": "
|
|
352
|
-
"
|
|
353
|
-
"type": "string"
|
|
354
|
-
},
|
|
355
|
-
"description": "Fields used to compute a fingerprint for fuzzy matching."
|
|
426
|
+
"line": {
|
|
427
|
+
"type": "number",
|
|
428
|
+
"description": "The line on which this requirement is located."
|
|
356
429
|
}
|
|
357
430
|
},
|
|
358
|
-
"
|
|
359
|
-
|
|
431
|
+
"examples": [
|
|
432
|
+
{
|
|
433
|
+
"ref": "controls/SV-260476.rb",
|
|
434
|
+
"line": 1
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"ref": "profiles/ubuntu/controls/configure_audit.rb",
|
|
438
|
+
"line": 42
|
|
439
|
+
}
|
|
440
|
+
],
|
|
441
|
+
"description": "The explicit location of a requirement within source code.",
|
|
442
|
+
"title": "Source Location"
|
|
360
443
|
},
|
|
361
|
-
"
|
|
444
|
+
"Supported_Platform": {
|
|
362
445
|
"type": "object",
|
|
363
446
|
"unevaluatedProperties": false,
|
|
447
|
+
"required": [],
|
|
364
448
|
"properties": {
|
|
365
|
-
"
|
|
366
|
-
"type": "
|
|
367
|
-
"
|
|
368
|
-
"description": "Number of requirements that changed from failing to passing."
|
|
369
|
-
},
|
|
370
|
-
"regressed": {
|
|
371
|
-
"type": "integer",
|
|
372
|
-
"minimum": 0,
|
|
373
|
-
"description": "Number of requirements that changed from passing to failing."
|
|
374
|
-
},
|
|
375
|
-
"new": {
|
|
376
|
-
"type": "integer",
|
|
377
|
-
"minimum": 0,
|
|
378
|
-
"description": "Number of requirements present only in the new source."
|
|
379
|
-
},
|
|
380
|
-
"absent": {
|
|
381
|
-
"type": "integer",
|
|
382
|
-
"minimum": 0,
|
|
383
|
-
"description": "Number of requirements present only in the old source."
|
|
449
|
+
"platformFamily": {
|
|
450
|
+
"type": "string",
|
|
451
|
+
"description": "The platform family. Example: 'redhat'."
|
|
384
452
|
},
|
|
385
|
-
"
|
|
386
|
-
"type": "
|
|
387
|
-
"
|
|
388
|
-
"description": "Number of requirements with the same effective status."
|
|
453
|
+
"platformName": {
|
|
454
|
+
"type": "string",
|
|
455
|
+
"description": "The platform name - can include wildcards. Example: 'debian'."
|
|
389
456
|
},
|
|
390
|
-
"
|
|
391
|
-
"type": "
|
|
392
|
-
"
|
|
393
|
-
"description": "Number of requirements with a generic status change."
|
|
457
|
+
"platform": {
|
|
458
|
+
"type": "string",
|
|
459
|
+
"description": "The location of the platform. Can be: 'os', 'aws', 'azure', or 'gcp'."
|
|
394
460
|
},
|
|
395
|
-
"
|
|
396
|
-
"type": "
|
|
397
|
-
"
|
|
398
|
-
"description": "Number of requirements that were reorganized without content change."
|
|
461
|
+
"release": {
|
|
462
|
+
"type": "string",
|
|
463
|
+
"description": "The release of the platform. Example: '20.04' for 'ubuntu'."
|
|
399
464
|
}
|
|
400
465
|
},
|
|
401
|
-
"description": "
|
|
402
|
-
"title": "
|
|
466
|
+
"description": "A supported platform target. Example: the platform name being 'ubuntu'.",
|
|
467
|
+
"title": "Supported Platform"
|
|
403
468
|
},
|
|
404
|
-
"
|
|
469
|
+
"Checksum": {
|
|
405
470
|
"type": "object",
|
|
406
471
|
"unevaluatedProperties": false,
|
|
472
|
+
"required": [
|
|
473
|
+
"algorithm",
|
|
474
|
+
"value"
|
|
475
|
+
],
|
|
407
476
|
"properties": {
|
|
408
|
-
"
|
|
409
|
-
"$ref": "#/$defs/
|
|
410
|
-
"description": "
|
|
411
|
-
},
|
|
412
|
-
"high": {
|
|
413
|
-
"$ref": "#/$defs/State_Counts",
|
|
414
|
-
"description": "State counts for high severity requirements."
|
|
415
|
-
},
|
|
416
|
-
"medium": {
|
|
417
|
-
"$ref": "#/$defs/State_Counts",
|
|
418
|
-
"description": "State counts for medium severity requirements."
|
|
477
|
+
"algorithm": {
|
|
478
|
+
"$ref": "#/$defs/Hash_Algorithm",
|
|
479
|
+
"description": "The hash algorithm used for the checksum."
|
|
419
480
|
},
|
|
420
|
-
"
|
|
421
|
-
"
|
|
422
|
-
"description": "
|
|
481
|
+
"value": {
|
|
482
|
+
"type": "string",
|
|
483
|
+
"description": "The checksum value."
|
|
423
484
|
}
|
|
424
485
|
},
|
|
425
|
-
"
|
|
426
|
-
|
|
486
|
+
"examples": [
|
|
487
|
+
{
|
|
488
|
+
"algorithm": "sha256",
|
|
489
|
+
"value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"algorithm": "sha512",
|
|
493
|
+
"value": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
|
|
494
|
+
}
|
|
495
|
+
],
|
|
496
|
+
"description": "Cryptographic checksum for baseline integrity verification.",
|
|
497
|
+
"title": "Checksum"
|
|
427
498
|
},
|
|
428
|
-
"
|
|
499
|
+
"Identity": {
|
|
429
500
|
"type": "object",
|
|
430
501
|
"unevaluatedProperties": false,
|
|
431
502
|
"required": [
|
|
432
|
-
"
|
|
433
|
-
"
|
|
503
|
+
"identifier",
|
|
504
|
+
"type"
|
|
434
505
|
],
|
|
435
506
|
"properties": {
|
|
436
|
-
"
|
|
437
|
-
"type": "integer",
|
|
438
|
-
"minimum": 0,
|
|
439
|
-
"description": "Zero-based index into the sources array identifying which source this summary is for."
|
|
440
|
-
},
|
|
441
|
-
"label": {
|
|
507
|
+
"identifier": {
|
|
442
508
|
"type": "string",
|
|
443
|
-
"description": "
|
|
444
|
-
},
|
|
445
|
-
"fixed": {
|
|
446
|
-
"type": "integer",
|
|
447
|
-
"minimum": 0,
|
|
448
|
-
"description": "Number of requirements that changed from failing to passing."
|
|
449
|
-
},
|
|
450
|
-
"regressed": {
|
|
451
|
-
"type": "integer",
|
|
452
|
-
"minimum": 0,
|
|
453
|
-
"description": "Number of requirements that changed from passing to failing."
|
|
509
|
+
"description": "The identifier value. Example: 'user@example.com', 'jdoe', 'automated-scanner-01'."
|
|
454
510
|
},
|
|
455
|
-
"
|
|
456
|
-
"type": "
|
|
457
|
-
"
|
|
458
|
-
"
|
|
511
|
+
"type": {
|
|
512
|
+
"type": "string",
|
|
513
|
+
"title": "Identity Type",
|
|
514
|
+
"enum": [
|
|
515
|
+
"email",
|
|
516
|
+
"username",
|
|
517
|
+
"system",
|
|
518
|
+
"agent",
|
|
519
|
+
"simple",
|
|
520
|
+
"other"
|
|
521
|
+
],
|
|
522
|
+
"description": "The type of identifier. Use 'email' for email addresses, 'username' for user accounts, 'system' for deterministic non-interactive automation (CI jobs, cron, scanners), 'agent' for an AI/LLM agent acting with autonomy — kept distinct from 'system' so auditors can apply AI-specific scrutiny (e.g. 'an LLM proposed this' vs a deterministic job) and satisfy AI-source disclosure under frameworks like the EU AI Act and NIST AI RMF, 'simple' for basic string identifiers without additional classification, or 'other' for custom identity systems."
|
|
459
523
|
},
|
|
460
|
-
"
|
|
461
|
-
"type": "
|
|
462
|
-
"
|
|
463
|
-
|
|
524
|
+
"description": {
|
|
525
|
+
"type": "string",
|
|
526
|
+
"description": "Optional description of the identity or identity system, particularly useful when type is 'other'."
|
|
527
|
+
}
|
|
528
|
+
},
|
|
529
|
+
"examples": [
|
|
530
|
+
{
|
|
531
|
+
"type": "email",
|
|
532
|
+
"identifier": "admin@example.com"
|
|
464
533
|
},
|
|
465
|
-
|
|
466
|
-
"type": "
|
|
467
|
-
"
|
|
468
|
-
"description": "
|
|
534
|
+
{
|
|
535
|
+
"type": "username",
|
|
536
|
+
"identifier": "jdoe",
|
|
537
|
+
"description": "Security Operations Analyst"
|
|
469
538
|
},
|
|
470
|
-
|
|
471
|
-
"type": "
|
|
472
|
-
"
|
|
473
|
-
"description": "
|
|
539
|
+
{
|
|
540
|
+
"type": "system",
|
|
541
|
+
"identifier": "automated-scanner-01",
|
|
542
|
+
"description": "Nightly compliance scan pipeline"
|
|
474
543
|
},
|
|
475
|
-
|
|
476
|
-
"type": "
|
|
477
|
-
"
|
|
478
|
-
"description": "
|
|
544
|
+
{
|
|
545
|
+
"type": "agent",
|
|
546
|
+
"identifier": "cve-enrichment-bot/v0.4.2",
|
|
547
|
+
"description": "OpenAI GPT-4 via internal CVE-enrichment tool; proposes environmental CVSS for human review"
|
|
479
548
|
}
|
|
480
|
-
|
|
481
|
-
"description": "
|
|
482
|
-
"title": "
|
|
549
|
+
],
|
|
550
|
+
"description": "Represents an identity that performed an action, such as capturing evidence or applying an override.",
|
|
551
|
+
"title": "Identity"
|
|
483
552
|
},
|
|
484
|
-
"
|
|
553
|
+
"Evidence": {
|
|
485
554
|
"type": "object",
|
|
486
555
|
"unevaluatedProperties": false,
|
|
487
556
|
"required": [
|
|
488
|
-
"
|
|
489
|
-
"
|
|
490
|
-
"unmatchedOldCount",
|
|
491
|
-
"unmatchedNewCount"
|
|
557
|
+
"type",
|
|
558
|
+
"data"
|
|
492
559
|
],
|
|
493
560
|
"properties": {
|
|
494
|
-
"
|
|
495
|
-
"type": "
|
|
496
|
-
"
|
|
497
|
-
"
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
"
|
|
506
|
-
"minimum": 0,
|
|
507
|
-
"description": "Number of requirements in the old source with no match in the new source."
|
|
508
|
-
},
|
|
509
|
-
"unmatchedNewCount": {
|
|
510
|
-
"type": "integer",
|
|
511
|
-
"minimum": 0,
|
|
512
|
-
"description": "Number of requirements in the new source with no match in the old source."
|
|
513
|
-
},
|
|
514
|
-
"new": {
|
|
515
|
-
"type": "integer",
|
|
516
|
-
"minimum": 0,
|
|
517
|
-
"description": "Number of requirements present only in the new source."
|
|
518
|
-
},
|
|
519
|
-
"absent": {
|
|
520
|
-
"type": "integer",
|
|
521
|
-
"minimum": 0,
|
|
522
|
-
"description": "Number of requirements present only in the old source."
|
|
523
|
-
},
|
|
524
|
-
"unchanged": {
|
|
525
|
-
"type": "integer",
|
|
526
|
-
"minimum": 0,
|
|
527
|
-
"description": "Number of requirements with the same effective status."
|
|
561
|
+
"type": {
|
|
562
|
+
"type": "string",
|
|
563
|
+
"title": "Evidence Type",
|
|
564
|
+
"enum": [
|
|
565
|
+
"screenshot",
|
|
566
|
+
"code",
|
|
567
|
+
"log",
|
|
568
|
+
"url",
|
|
569
|
+
"file",
|
|
570
|
+
"other"
|
|
571
|
+
],
|
|
572
|
+
"description": "The type of evidence being provided."
|
|
528
573
|
},
|
|
529
|
-
"
|
|
530
|
-
"type": "
|
|
531
|
-
"
|
|
532
|
-
"description": "Number of requirements with a generic status change."
|
|
574
|
+
"data": {
|
|
575
|
+
"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."
|
|
533
577
|
},
|
|
534
|
-
"
|
|
535
|
-
"type": "
|
|
536
|
-
"
|
|
537
|
-
"description": "Number of requirements that changed from failing to passing."
|
|
578
|
+
"description": {
|
|
579
|
+
"type": "string",
|
|
580
|
+
"description": "Human-readable description of what this evidence shows."
|
|
538
581
|
},
|
|
539
|
-
"
|
|
540
|
-
"type": "
|
|
541
|
-
"
|
|
542
|
-
"description": "Number of requirements that changed from passing to failing."
|
|
582
|
+
"mimeType": {
|
|
583
|
+
"type": "string",
|
|
584
|
+
"description": "MIME type of the evidence. Example: 'image/png', 'text/plain', 'application/json'."
|
|
543
585
|
},
|
|
544
|
-
"
|
|
545
|
-
"type": "
|
|
546
|
-
"
|
|
547
|
-
"description": "Number of requirements that were reorganized without content change."
|
|
586
|
+
"encoding": {
|
|
587
|
+
"type": "string",
|
|
588
|
+
"description": "Encoding used for the data. Example: 'base64', 'utf-8'."
|
|
548
589
|
},
|
|
549
|
-
"
|
|
590
|
+
"size": {
|
|
550
591
|
"type": "number",
|
|
551
|
-
"description": "
|
|
592
|
+
"description": "Size of the evidence data in bytes."
|
|
552
593
|
},
|
|
553
|
-
"
|
|
554
|
-
"type": "
|
|
555
|
-
"
|
|
594
|
+
"capturedAt": {
|
|
595
|
+
"type": "string",
|
|
596
|
+
"format": "date-time",
|
|
597
|
+
"description": "Timestamp when this evidence was captured. ISO 8601 format."
|
|
556
598
|
},
|
|
557
|
-
"
|
|
558
|
-
"
|
|
559
|
-
"description": "
|
|
599
|
+
"capturedBy": {
|
|
600
|
+
"$ref": "#/$defs/Identity",
|
|
601
|
+
"description": "Identity of who or what captured this evidence."
|
|
602
|
+
}
|
|
603
|
+
},
|
|
604
|
+
"examples": [
|
|
605
|
+
{
|
|
606
|
+
"type": "screenshot",
|
|
607
|
+
"data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
|
|
608
|
+
"description": "Screenshot showing firewall configuration with required ports blocked",
|
|
609
|
+
"mimeType": "image/png",
|
|
610
|
+
"encoding": "base64",
|
|
611
|
+
"size": 95,
|
|
612
|
+
"capturedAt": "2025-12-14T10:30:00Z",
|
|
613
|
+
"capturedBy": {
|
|
614
|
+
"identifier": "security-auditor@example.com",
|
|
615
|
+
"type": "email"
|
|
616
|
+
}
|
|
560
617
|
},
|
|
561
|
-
|
|
562
|
-
"type": "
|
|
563
|
-
"
|
|
564
|
-
"
|
|
565
|
-
"
|
|
618
|
+
{
|
|
619
|
+
"type": "code",
|
|
620
|
+
"data": "# Nginx configuration\nserver {\n listen 443 ssl;\n ssl_protocols TLSv1.2 TLSv1.3;\n ssl_ciphers HIGH:!aNULL:!MD5;\n}",
|
|
621
|
+
"description": "Server configuration showing TLS 1.2+ enforcement",
|
|
622
|
+
"mimeType": "text/plain",
|
|
623
|
+
"capturedAt": "2025-12-14T10:45:00Z"
|
|
566
624
|
},
|
|
567
|
-
|
|
568
|
-
"
|
|
569
|
-
"
|
|
625
|
+
{
|
|
626
|
+
"type": "log",
|
|
627
|
+
"data": "[2025-12-14 10:00:15] INFO: Security scan completed - 0 critical vulnerabilities found\n[2025-12-14 10:00:16] INFO: All required security patches applied\n[2025-12-14 10:00:17] INFO: System compliant with security baseline",
|
|
628
|
+
"description": "Security scan log output",
|
|
629
|
+
"mimeType": "text/plain",
|
|
630
|
+
"size": 256
|
|
570
631
|
},
|
|
571
|
-
|
|
572
|
-
"type": "
|
|
573
|
-
"
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
632
|
+
{
|
|
633
|
+
"type": "url",
|
|
634
|
+
"data": "https://jira.example.com/browse/SEC-12345",
|
|
635
|
+
"description": "Link to security ticket documenting remediation work",
|
|
636
|
+
"capturedAt": "2025-12-14T11:00:00Z"
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
"type": "file",
|
|
640
|
+
"data": "UEsDBBQAAAAIAI1ZX1YhQp8FHgAAABIAAAAIAAAAdGVzdC50eHRLy8nPS8lQSgIAUmNEBhQAAAA=",
|
|
641
|
+
"description": "Compliance audit report PDF",
|
|
642
|
+
"mimeType": "application/pdf",
|
|
643
|
+
"encoding": "base64",
|
|
644
|
+
"size": 2048,
|
|
645
|
+
"capturedAt": "2025-12-14T12:00:00Z",
|
|
646
|
+
"capturedBy": {
|
|
647
|
+
"identifier": "compliance-system",
|
|
648
|
+
"type": "system"
|
|
649
|
+
}
|
|
577
650
|
}
|
|
578
|
-
|
|
579
|
-
"description": "
|
|
580
|
-
"title": "
|
|
651
|
+
],
|
|
652
|
+
"description": "Supporting evidence for a finding or override, such as screenshots, code samples, log excerpts, or URLs.",
|
|
653
|
+
"title": "Evidence"
|
|
581
654
|
},
|
|
582
|
-
"
|
|
655
|
+
"Remediation": {
|
|
583
656
|
"type": "object",
|
|
584
657
|
"unevaluatedProperties": false,
|
|
585
658
|
"required": [
|
|
586
|
-
"
|
|
587
|
-
"state"
|
|
659
|
+
"uri"
|
|
588
660
|
],
|
|
589
661
|
"properties": {
|
|
590
|
-
"
|
|
662
|
+
"uri": {
|
|
591
663
|
"type": "string",
|
|
592
|
-
"
|
|
664
|
+
"format": "uri",
|
|
665
|
+
"description": "URI pointing to automated remediation resources (Ansible playbooks, Terraform scripts, etc.). Examples: GitHub repository, DISA STIG Supplemental Automation Content, vendor-provided scripts."
|
|
593
666
|
},
|
|
594
|
-
"
|
|
595
|
-
"
|
|
596
|
-
"
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
],
|
|
603
|
-
"description": "The state of this baseline in the comparison."
|
|
667
|
+
"checksum": {
|
|
668
|
+
"$ref": "#/$defs/Checksum",
|
|
669
|
+
"description": "Optional cryptographic checksum for verifying the integrity of remediation resources fetched from the URI. Recommended for security when referencing external automation scripts."
|
|
670
|
+
}
|
|
671
|
+
},
|
|
672
|
+
"examples": [
|
|
673
|
+
{
|
|
674
|
+
"uri": "https://github.com/ansible-lockdown/RHEL9-STIG/tree/main/tasks"
|
|
604
675
|
},
|
|
605
|
-
|
|
676
|
+
{
|
|
677
|
+
"uri": "https://artifacts.example.com/remediation/ubuntu-22.04-hardening-v1.2.tar.gz",
|
|
678
|
+
"checksum": {
|
|
679
|
+
"algorithm": "sha256",
|
|
680
|
+
"value": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
],
|
|
684
|
+
"description": "Reference to automated remediation resources for implementing security controls. Points to external automation content like Ansible playbooks, Terraform scripts, or vendor-provided remediation tools.",
|
|
685
|
+
"title": "Remediation"
|
|
686
|
+
},
|
|
687
|
+
"Verification_Method": {
|
|
688
|
+
"type": "object",
|
|
689
|
+
"unevaluatedProperties": false,
|
|
690
|
+
"required": [
|
|
691
|
+
"type",
|
|
692
|
+
"controller"
|
|
693
|
+
],
|
|
694
|
+
"properties": {
|
|
695
|
+
"type": {
|
|
606
696
|
"type": "string",
|
|
607
|
-
"description": "
|
|
697
|
+
"description": "The type of verification method. Example: 'JsonWebKey2020', 'RsaVerificationKey2018', 'Ed25519VerificationKey2020'."
|
|
608
698
|
},
|
|
609
|
-
"
|
|
699
|
+
"controller": {
|
|
610
700
|
"type": "string",
|
|
611
|
-
"description": "
|
|
701
|
+
"description": "The entity that controls this verification method. Can be a DID, URI, or other identifier."
|
|
612
702
|
},
|
|
613
|
-
"
|
|
703
|
+
"publicKeyJwk": {
|
|
704
|
+
"type": "object",
|
|
705
|
+
"additionalProperties": true,
|
|
706
|
+
"description": "Public key in JSON Web Key format."
|
|
707
|
+
},
|
|
708
|
+
"publicKeyPem": {
|
|
614
709
|
"type": "string",
|
|
615
|
-
"description": "
|
|
710
|
+
"description": "Public key in PEM format. Example: '-----BEGIN PUBLIC KEY-----...-----END PUBLIC KEY-----'."
|
|
711
|
+
},
|
|
712
|
+
"publicKeyBase58": {
|
|
713
|
+
"type": "string",
|
|
714
|
+
"description": "Public key in Base58 format, commonly used with Ed25519 keys."
|
|
616
715
|
}
|
|
617
716
|
},
|
|
618
|
-
"description": "
|
|
619
|
-
"title": "
|
|
717
|
+
"description": "Verification method containing the public key needed to verify a digital signature. Supports multiple key formats including JWK (for RSA, EC), PEM, and Base58.",
|
|
718
|
+
"title": "Verification Method"
|
|
620
719
|
},
|
|
621
|
-
"
|
|
720
|
+
"Milestone": {
|
|
622
721
|
"type": "object",
|
|
623
722
|
"unevaluatedProperties": false,
|
|
624
723
|
"required": [
|
|
625
|
-
"
|
|
626
|
-
"
|
|
724
|
+
"description",
|
|
725
|
+
"estimatedCompletion",
|
|
726
|
+
"status"
|
|
627
727
|
],
|
|
628
728
|
"properties": {
|
|
629
|
-
"
|
|
729
|
+
"description": {
|
|
630
730
|
"type": "string",
|
|
631
|
-
"description": "
|
|
731
|
+
"description": "Description of this milestone or task."
|
|
632
732
|
},
|
|
633
|
-
"
|
|
733
|
+
"estimatedCompletion": {
|
|
634
734
|
"type": "string",
|
|
635
|
-
"
|
|
636
|
-
"
|
|
637
|
-
"new",
|
|
638
|
-
"absent",
|
|
639
|
-
"unchanged",
|
|
640
|
-
"updated"
|
|
641
|
-
],
|
|
642
|
-
"description": "The state of this component in the comparison."
|
|
735
|
+
"format": "date-time",
|
|
736
|
+
"description": "Estimated completion date. ISO 8601 format."
|
|
643
737
|
},
|
|
644
|
-
"
|
|
645
|
-
"
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
}
|
|
738
|
+
"status": {
|
|
739
|
+
"type": "string",
|
|
740
|
+
"title": "Milestone Status",
|
|
741
|
+
"enum": [
|
|
742
|
+
"pending",
|
|
743
|
+
"inProgress",
|
|
744
|
+
"completed"
|
|
652
745
|
],
|
|
653
|
-
"description": "
|
|
746
|
+
"description": "Current status of this milestone."
|
|
654
747
|
},
|
|
655
|
-
"
|
|
656
|
-
"
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
},
|
|
660
|
-
{
|
|
661
|
-
"type": "null"
|
|
662
|
-
}
|
|
663
|
-
],
|
|
664
|
-
"description": "Component snapshot from the new system document. Null when state is 'absent'."
|
|
748
|
+
"completedAt": {
|
|
749
|
+
"type": "string",
|
|
750
|
+
"format": "date-time",
|
|
751
|
+
"description": "Actual completion timestamp. ISO 8601 format."
|
|
665
752
|
},
|
|
666
|
-
"
|
|
667
|
-
"
|
|
668
|
-
"
|
|
669
|
-
"$ref": "#/$defs/Field_Change"
|
|
670
|
-
},
|
|
671
|
-
"description": "Detailed field-level changes between the before and after component snapshots."
|
|
753
|
+
"completedBy": {
|
|
754
|
+
"$ref": "#/$defs/Identity",
|
|
755
|
+
"description": "Identity of who completed this milestone."
|
|
672
756
|
}
|
|
673
757
|
},
|
|
674
|
-
"description": "
|
|
675
|
-
"title": "
|
|
758
|
+
"description": "A milestone or task within a POA&M remediation plan.",
|
|
759
|
+
"title": "Milestone"
|
|
676
760
|
},
|
|
677
|
-
"
|
|
761
|
+
"Signature": {
|
|
678
762
|
"type": "object",
|
|
679
763
|
"unevaluatedProperties": false,
|
|
680
764
|
"required": [
|
|
681
|
-
"
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
]
|
|
688
|
-
},
|
|
689
|
-
{
|
|
690
|
-
"required": [
|
|
691
|
-
"identifier"
|
|
692
|
-
]
|
|
693
|
-
}
|
|
765
|
+
"type",
|
|
766
|
+
"created",
|
|
767
|
+
"creator",
|
|
768
|
+
"signatureValue",
|
|
769
|
+
"proofPurpose",
|
|
770
|
+
"verificationMethod"
|
|
694
771
|
],
|
|
695
772
|
"properties": {
|
|
696
|
-
"
|
|
773
|
+
"type": {
|
|
697
774
|
"type": "string",
|
|
698
|
-
"description": "
|
|
775
|
+
"description": "The signature suite type. Example: 'JsonWebSignature2020', 'RsaSignature2018', 'Ed25519Signature2020'."
|
|
699
776
|
},
|
|
700
|
-
"
|
|
777
|
+
"created": {
|
|
701
778
|
"type": "string",
|
|
702
|
-
"
|
|
779
|
+
"format": "date-time",
|
|
780
|
+
"description": "When the signature was created. ISO 8601 format."
|
|
703
781
|
},
|
|
704
|
-
"
|
|
782
|
+
"creator": {
|
|
783
|
+
"$ref": "#/$defs/Identity",
|
|
784
|
+
"description": "The identity that created this signature."
|
|
785
|
+
},
|
|
786
|
+
"signatureValue": {
|
|
705
787
|
"type": "string",
|
|
706
|
-
"description": "
|
|
788
|
+
"description": "The base64-encoded or base58-encoded signature value."
|
|
707
789
|
},
|
|
708
|
-
"
|
|
790
|
+
"proofPurpose": {
|
|
709
791
|
"type": "string",
|
|
710
|
-
"
|
|
711
|
-
"enum": [
|
|
712
|
-
"added",
|
|
713
|
-
"removed",
|
|
714
|
-
"updated",
|
|
715
|
-
"unchanged"
|
|
716
|
-
],
|
|
717
|
-
"description": "The state of this package: added (new in new SBOM), removed (absent from new SBOM), updated (version changed), unchanged."
|
|
792
|
+
"description": "The purpose of this signature. Example: 'attestation', 'authentication', 'assertionMethod'."
|
|
718
793
|
},
|
|
719
|
-
"
|
|
794
|
+
"verificationMethod": {
|
|
795
|
+
"$ref": "#/$defs/Verification_Method",
|
|
796
|
+
"description": "The verification method containing the public key for signature verification."
|
|
797
|
+
},
|
|
798
|
+
"nonce": {
|
|
720
799
|
"type": "string",
|
|
721
|
-
"description": "
|
|
800
|
+
"description": "Random value to prevent replay attacks."
|
|
722
801
|
},
|
|
723
|
-
"
|
|
802
|
+
"challenge": {
|
|
724
803
|
"type": "string",
|
|
725
|
-
"description": "
|
|
804
|
+
"description": "Challenge value from the verifier, used in challenge-response authentication."
|
|
726
805
|
},
|
|
727
|
-
"
|
|
728
|
-
"type": "
|
|
729
|
-
"
|
|
730
|
-
"type": "string"
|
|
731
|
-
},
|
|
732
|
-
"description": "License identifiers for this package."
|
|
806
|
+
"domain": {
|
|
807
|
+
"type": "string",
|
|
808
|
+
"description": "Domain restriction for the signature, prevents cross-domain replay attacks."
|
|
733
809
|
}
|
|
734
810
|
},
|
|
735
811
|
"examples": [
|
|
736
812
|
{
|
|
737
|
-
"
|
|
738
|
-
"
|
|
739
|
-
"
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
813
|
+
"type": "JsonWebSignature2020",
|
|
814
|
+
"created": "2025-12-14T10:00:00Z",
|
|
815
|
+
"creator": {
|
|
816
|
+
"identifier": "security-team@example.com",
|
|
817
|
+
"type": "email"
|
|
818
|
+
},
|
|
819
|
+
"signatureValue": "eyJhbGciOiJSUzI1NiIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..MEYCIQDvKbtLRhWAa",
|
|
820
|
+
"proofPurpose": "attestation",
|
|
821
|
+
"verificationMethod": {
|
|
822
|
+
"type": "JsonWebKey2020",
|
|
823
|
+
"controller": "did:example:123456789abcdefghi",
|
|
824
|
+
"publicKeyJwk": {
|
|
825
|
+
"kty": "RSA",
|
|
826
|
+
"n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtV",
|
|
827
|
+
"e": "AQAB"
|
|
828
|
+
}
|
|
829
|
+
}
|
|
743
830
|
},
|
|
744
831
|
{
|
|
745
|
-
"
|
|
746
|
-
"
|
|
747
|
-
"
|
|
748
|
-
|
|
749
|
-
|
|
832
|
+
"type": "RsaSignature2018",
|
|
833
|
+
"created": "2025-12-14T11:30:00Z",
|
|
834
|
+
"creator": {
|
|
835
|
+
"identifier": "ciso@example.com",
|
|
836
|
+
"type": "email"
|
|
837
|
+
},
|
|
838
|
+
"signatureValue": "pY9...Cg==",
|
|
839
|
+
"proofPurpose": "authentication",
|
|
840
|
+
"verificationMethod": {
|
|
841
|
+
"type": "RsaVerificationKey2018",
|
|
842
|
+
"controller": "https://example.com/issuers/565049",
|
|
843
|
+
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAryQICCl6NZ5gDKrnSztO\n-----END PUBLIC KEY-----"
|
|
844
|
+
},
|
|
845
|
+
"nonce": "c0ae1c8e-c7e7-469f-b252-86e6a0e7387e"
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
"type": "Ed25519Signature2020",
|
|
849
|
+
"created": "2025-12-14T14:00:00Z",
|
|
850
|
+
"creator": {
|
|
851
|
+
"identifier": "automated-signer",
|
|
852
|
+
"type": "system",
|
|
853
|
+
"description": "Hardware security module (HSM) for automated attestations"
|
|
854
|
+
},
|
|
855
|
+
"signatureValue": "z58DAdFfa9SkqZMVMxABEBC59Ck6WibLZ",
|
|
856
|
+
"proofPurpose": "assertionMethod",
|
|
857
|
+
"verificationMethod": {
|
|
858
|
+
"type": "Ed25519VerificationKey2020",
|
|
859
|
+
"controller": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
|
|
860
|
+
"publicKeyBase58": "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
|
|
861
|
+
},
|
|
862
|
+
"challenge": "1f44d2f3-d16c-47a4-9f5f-1d6e8f4e3a2b",
|
|
863
|
+
"domain": "https://compliance.example.com"
|
|
750
864
|
}
|
|
751
865
|
],
|
|
752
|
-
"description": "
|
|
753
|
-
"title": "
|
|
866
|
+
"description": "A digital signature following W3C Data Integrity Proofs pattern. Supports hardware security tokens (PKCS#11/PKCS#12), Yubikeys, GPG keys, passkeys, and other cryptographic signing methods via JWK, PEM, or Base58 key formats.",
|
|
867
|
+
"title": "Signature"
|
|
754
868
|
},
|
|
755
|
-
"
|
|
869
|
+
"Baseline_Metadata": {
|
|
756
870
|
"type": "object",
|
|
757
|
-
"unevaluatedProperties": false,
|
|
758
|
-
"required": [
|
|
759
|
-
"field",
|
|
760
|
-
"values"
|
|
761
|
-
],
|
|
762
871
|
"properties": {
|
|
763
|
-
"
|
|
764
|
-
"type": "string",
|
|
765
|
-
"description": "The field where the conflict occurs."
|
|
766
|
-
},
|
|
767
|
-
"values": {
|
|
872
|
+
"externalReferences": {
|
|
768
873
|
"type": "array",
|
|
769
874
|
"items": {
|
|
770
|
-
"
|
|
771
|
-
"unevaluatedProperties": false,
|
|
772
|
-
"required": [
|
|
773
|
-
"sourceIndex",
|
|
774
|
-
"sourceLabel",
|
|
775
|
-
"value"
|
|
776
|
-
],
|
|
777
|
-
"properties": {
|
|
778
|
-
"sourceIndex": {
|
|
779
|
-
"type": "integer",
|
|
780
|
-
"minimum": 0,
|
|
781
|
-
"description": "Zero-based index into the sources array."
|
|
782
|
-
},
|
|
783
|
-
"sourceLabel": {
|
|
784
|
-
"type": "string",
|
|
785
|
-
"description": "Human-readable label for the source."
|
|
786
|
-
},
|
|
787
|
-
"value": {
|
|
788
|
-
"description": "The value reported by this source for the conflicting field."
|
|
789
|
-
}
|
|
790
|
-
}
|
|
875
|
+
"$ref": "#/$defs/External_Reference"
|
|
791
876
|
},
|
|
792
|
-
"description": "
|
|
877
|
+
"description": "Optional references to external artifacts relevant to this baseline (CTI/STIX, advisories, source catalogs, or any URI-addressable artifact). Travels with the baseline definition. Inert context; see External_Reference."
|
|
793
878
|
},
|
|
794
|
-
"
|
|
795
|
-
"type": "
|
|
796
|
-
"
|
|
797
|
-
"description": "Index of the source whose value was chosen as the resolution."
|
|
879
|
+
"name": {
|
|
880
|
+
"type": "string",
|
|
881
|
+
"description": "The name - must be unique."
|
|
798
882
|
},
|
|
799
|
-
"
|
|
800
|
-
"$ref": "#/$defs/Conflict_Resolution",
|
|
801
|
-
"description": "How the conflict was resolved."
|
|
802
|
-
}
|
|
803
|
-
},
|
|
804
|
-
"description": "A conflict between scanner results for the same requirement.",
|
|
805
|
-
"title": "Scanner Conflict"
|
|
806
|
-
},
|
|
807
|
-
"Annotation": {
|
|
808
|
-
"type": "object",
|
|
809
|
-
"unevaluatedProperties": false,
|
|
810
|
-
"required": [
|
|
811
|
-
"label"
|
|
812
|
-
],
|
|
813
|
-
"properties": {
|
|
814
|
-
"label": {
|
|
883
|
+
"title": {
|
|
815
884
|
"type": "string",
|
|
816
|
-
"description": "
|
|
885
|
+
"description": "The title - should be human readable."
|
|
817
886
|
},
|
|
818
|
-
"
|
|
887
|
+
"maintainer": {
|
|
819
888
|
"type": "string",
|
|
820
|
-
"description": "
|
|
889
|
+
"description": "The maintainer(s)."
|
|
821
890
|
},
|
|
822
|
-
"
|
|
823
|
-
"
|
|
824
|
-
"description": "The
|
|
891
|
+
"copyright": {
|
|
892
|
+
"type": "string",
|
|
893
|
+
"description": "The copyright holder(s)."
|
|
825
894
|
},
|
|
826
|
-
"
|
|
827
|
-
"type": "boolean",
|
|
828
|
-
"description": "Whether this annotation requires human confirmation before acting on it."
|
|
829
|
-
}
|
|
830
|
-
},
|
|
831
|
-
"description": "An annotation attached to a comparison, providing context or action items.",
|
|
832
|
-
"title": "Annotation"
|
|
833
|
-
},
|
|
834
|
-
"Requirement_Diff": {
|
|
835
|
-
"type": "object",
|
|
836
|
-
"unevaluatedProperties": false,
|
|
837
|
-
"required": [
|
|
838
|
-
"id",
|
|
839
|
-
"state",
|
|
840
|
-
"changeReasons",
|
|
841
|
-
"before",
|
|
842
|
-
"after",
|
|
843
|
-
"fieldChanges"
|
|
844
|
-
],
|
|
845
|
-
"properties": {
|
|
846
|
-
"id": {
|
|
895
|
+
"copyrightEmail": {
|
|
847
896
|
"type": "string",
|
|
848
|
-
"description": "The
|
|
897
|
+
"description": "The email address or other contact information of the copyright holder(s)."
|
|
849
898
|
},
|
|
850
|
-
"
|
|
851
|
-
"
|
|
852
|
-
"description": "The
|
|
899
|
+
"license": {
|
|
900
|
+
"type": "string",
|
|
901
|
+
"description": "The copyright license. Example: 'Apache-2.0'."
|
|
853
902
|
},
|
|
854
|
-
"
|
|
903
|
+
"summary": {
|
|
904
|
+
"type": "string",
|
|
905
|
+
"description": "The summary. Example: the Security Technical Implementation Guide (STIG) header."
|
|
906
|
+
},
|
|
907
|
+
"version": {
|
|
908
|
+
"type": "string",
|
|
909
|
+
"description": "The version of the baseline."
|
|
910
|
+
},
|
|
911
|
+
"supports": {
|
|
855
912
|
"type": "array",
|
|
856
913
|
"items": {
|
|
857
|
-
"$ref": "#/$defs/
|
|
914
|
+
"$ref": "#/$defs/Supported_Platform"
|
|
858
915
|
},
|
|
859
|
-
"description": "The
|
|
916
|
+
"description": "The set of supported platform targets."
|
|
860
917
|
},
|
|
861
|
-
"
|
|
862
|
-
"
|
|
863
|
-
|
|
864
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.4.0#/$defs/Evaluated_Requirement"
|
|
865
|
-
},
|
|
866
|
-
{
|
|
867
|
-
"type": "null"
|
|
868
|
-
}
|
|
869
|
-
],
|
|
870
|
-
"description": "The requirement as it appeared in the old/reference source. Null when state is 'new'."
|
|
918
|
+
"status": {
|
|
919
|
+
"type": "string",
|
|
920
|
+
"description": "The status. Example: 'loaded'."
|
|
871
921
|
},
|
|
872
|
-
"
|
|
873
|
-
"
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
922
|
+
"labels": {
|
|
923
|
+
"type": "object",
|
|
924
|
+
"additionalProperties": {
|
|
925
|
+
"type": "string"
|
|
926
|
+
},
|
|
927
|
+
"description": "Optional key-value labels for flexible grouping. Well-known keys: system, component, environment, region, team. Values must be strings."
|
|
928
|
+
}
|
|
929
|
+
},
|
|
930
|
+
"examples": [
|
|
931
|
+
{
|
|
932
|
+
"name": "rhel-9-stig-baseline",
|
|
933
|
+
"title": "Red Hat Enterprise Linux 9 STIG Baseline",
|
|
934
|
+
"maintainer": "MITRE SAF Team",
|
|
935
|
+
"copyright": "The MITRE Corporation",
|
|
936
|
+
"copyrightEmail": "saf@mitre.org",
|
|
937
|
+
"license": "Apache-2.0",
|
|
938
|
+
"summary": "InSpec baseline for RHEL 9 STIG compliance",
|
|
939
|
+
"version": "1.0.0",
|
|
940
|
+
"supports": [
|
|
877
941
|
{
|
|
878
|
-
"
|
|
942
|
+
"platformName": "redhat",
|
|
943
|
+
"platformFamily": "redhat",
|
|
944
|
+
"release": "9"
|
|
879
945
|
}
|
|
880
946
|
],
|
|
881
|
-
"
|
|
882
|
-
}
|
|
883
|
-
|
|
947
|
+
"status": "loaded"
|
|
948
|
+
}
|
|
949
|
+
],
|
|
950
|
+
"description": "Shared metadata fields for baselines. Used in both standalone baseline documents and evaluated baseline results.",
|
|
951
|
+
"title": "Baseline Metadata"
|
|
952
|
+
},
|
|
953
|
+
"Requirement_Core": {
|
|
954
|
+
"type": "object",
|
|
955
|
+
"properties": {
|
|
956
|
+
"externalReferences": {
|
|
884
957
|
"type": "array",
|
|
885
958
|
"items": {
|
|
886
|
-
"$ref": "#/$defs/
|
|
959
|
+
"$ref": "#/$defs/External_Reference"
|
|
887
960
|
},
|
|
888
|
-
"description": "
|
|
889
|
-
},
|
|
890
|
-
"oldId": {
|
|
891
|
-
"type": "string",
|
|
892
|
-
"description": "The requirement ID in the old source, if different from the canonical id."
|
|
961
|
+
"description": "Optional references to external artifacts relevant to this requirement (CTI/STIX correlation, advisories, control/definition sources, or any URI-addressable artifact). Applies to both baseline requirement definitions and evaluated requirements. Inert context; see External_Reference."
|
|
893
962
|
},
|
|
894
|
-
"
|
|
963
|
+
"id": {
|
|
895
964
|
"type": "string",
|
|
896
|
-
"description": "The requirement
|
|
965
|
+
"description": "The requirement identifier. Example: 'SV-238196'."
|
|
897
966
|
},
|
|
898
967
|
"title": {
|
|
899
968
|
"type": "string",
|
|
900
|
-
"description": "The
|
|
901
|
-
},
|
|
902
|
-
"oldEffectiveStatus": {
|
|
903
|
-
"type": "string",
|
|
904
|
-
"description": "The effective status of the requirement in the old source."
|
|
905
|
-
},
|
|
906
|
-
"newEffectiveStatus": {
|
|
907
|
-
"type": "string",
|
|
908
|
-
"description": "The effective status of the requirement in the new source."
|
|
909
|
-
},
|
|
910
|
-
"oldImpact": {
|
|
911
|
-
"type": "number",
|
|
912
|
-
"minimum": 0,
|
|
913
|
-
"maximum": 1,
|
|
914
|
-
"description": "The impact score of the requirement in the old source (0-1)."
|
|
915
|
-
},
|
|
916
|
-
"newImpact": {
|
|
917
|
-
"type": "number",
|
|
918
|
-
"minimum": 0,
|
|
919
|
-
"maximum": 1,
|
|
920
|
-
"description": "The impact score of the requirement in the new source (0-1)."
|
|
921
|
-
},
|
|
922
|
-
"matchStrategy": {
|
|
923
|
-
"$ref": "#/$defs/Match_Strategy",
|
|
924
|
-
"description": "The strategy that was used to match this requirement across sources."
|
|
925
|
-
},
|
|
926
|
-
"matchConfidence": {
|
|
927
|
-
"type": "number",
|
|
928
|
-
"minimum": 0,
|
|
929
|
-
"maximum": 1,
|
|
930
|
-
"description": "Confidence score for the match (0-1)."
|
|
931
|
-
},
|
|
932
|
-
"matchManual": {
|
|
933
|
-
"type": "boolean",
|
|
934
|
-
"description": "Whether the match was manually confirmed by a human."
|
|
969
|
+
"description": "The title - is nullable."
|
|
935
970
|
},
|
|
936
|
-
"
|
|
971
|
+
"descriptions": {
|
|
937
972
|
"type": "array",
|
|
973
|
+
"minItems": 1,
|
|
938
974
|
"items": {
|
|
939
|
-
"type": "
|
|
975
|
+
"type": "object",
|
|
976
|
+
"unevaluatedProperties": false,
|
|
977
|
+
"required": [
|
|
978
|
+
"label",
|
|
979
|
+
"data"
|
|
980
|
+
],
|
|
981
|
+
"properties": {
|
|
982
|
+
"label": {
|
|
983
|
+
"type": "string",
|
|
984
|
+
"description": "Description category. The 'default' label is required for the primary description. Common labels: 'default', 'check', 'fix', 'rationale'. Tools may use custom labels."
|
|
985
|
+
},
|
|
986
|
+
"data": {
|
|
987
|
+
"type": "string",
|
|
988
|
+
"description": "The description text content."
|
|
989
|
+
}
|
|
990
|
+
}
|
|
940
991
|
},
|
|
941
|
-
"description": "
|
|
992
|
+
"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'."
|
|
942
993
|
},
|
|
943
|
-
"
|
|
944
|
-
"type": "
|
|
994
|
+
"impact": {
|
|
995
|
+
"type": "number",
|
|
945
996
|
"minimum": 0,
|
|
946
|
-
"
|
|
997
|
+
"maximum": 1,
|
|
998
|
+
"description": "The impactfulness or severity (0.0 to 1.0)."
|
|
947
999
|
},
|
|
948
|
-
"
|
|
1000
|
+
"refs": {
|
|
949
1001
|
"type": "array",
|
|
950
1002
|
"items": {
|
|
951
|
-
"$ref": "#/$defs/
|
|
1003
|
+
"$ref": "#/$defs/Reference"
|
|
952
1004
|
},
|
|
953
|
-
"description": "
|
|
1005
|
+
"description": "The set of references to external documents."
|
|
954
1006
|
},
|
|
955
|
-
"
|
|
1007
|
+
"tags": {
|
|
956
1008
|
"type": "object",
|
|
957
1009
|
"additionalProperties": true,
|
|
958
|
-
"description": "
|
|
1010
|
+
"description": "A set of tags - usually metadata like CCI, STIG ID, severity."
|
|
959
1011
|
},
|
|
960
|
-
"
|
|
961
|
-
"type": "object",
|
|
962
|
-
"additionalProperties": true,
|
|
963
|
-
"description": "Sensitive data from the new source that should not be included in the main after snapshot."
|
|
964
|
-
}
|
|
965
|
-
},
|
|
966
|
-
"description": "A comparison of a single requirement between sources, including state, changes, and full before/after snapshots.",
|
|
967
|
-
"title": "Requirement Diff"
|
|
968
|
-
}
|
|
969
|
-
}
|
|
970
|
-
},
|
|
971
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0": {
|
|
972
|
-
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
973
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0",
|
|
974
|
-
"title": "HDF Common Primitives",
|
|
975
|
-
"description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
|
|
976
|
-
"$defs": {
|
|
977
|
-
"Hash_Algorithm": {
|
|
978
|
-
"type": "string",
|
|
979
|
-
"enum": [
|
|
980
|
-
"sha256",
|
|
981
|
-
"sha384",
|
|
982
|
-
"sha512",
|
|
983
|
-
"blake3"
|
|
984
|
-
],
|
|
985
|
-
"description": "Supported cryptographic hash algorithms for checksums and integrity verification. blake3 covers container-image and other artifact digests that use it.",
|
|
986
|
-
"title": "Hash Algorithm"
|
|
987
|
-
},
|
|
988
|
-
"Requirement_Group": {
|
|
989
|
-
"type": "object",
|
|
990
|
-
"unevaluatedProperties": false,
|
|
991
|
-
"required": [
|
|
992
|
-
"id",
|
|
993
|
-
"requirements"
|
|
994
|
-
],
|
|
995
|
-
"properties": {
|
|
996
|
-
"id": {
|
|
997
|
-
"type": "string",
|
|
998
|
-
"description": "The unique identifier for the group. Example: the relative path to the file specifying the requirements."
|
|
999
|
-
},
|
|
1000
|
-
"title": {
|
|
1001
|
-
"type": "string",
|
|
1002
|
-
"description": "The title of the group - should be human readable."
|
|
1003
|
-
},
|
|
1004
|
-
"requirements": {
|
|
1005
|
-
"type": "array",
|
|
1006
|
-
"items": {
|
|
1007
|
-
"type": "string"
|
|
1008
|
-
},
|
|
1009
|
-
"description": "The set of requirements as specified by their ids in this group. Example: 'SV-238196'."
|
|
1010
|
-
}
|
|
1011
|
-
},
|
|
1012
|
-
"description": "Describes a group of requirements, such as those defined in a single file.",
|
|
1013
|
-
"title": "Requirement Group"
|
|
1014
|
-
},
|
|
1015
|
-
"Dependency": {
|
|
1016
|
-
"type": "object",
|
|
1017
|
-
"unevaluatedProperties": false,
|
|
1018
|
-
"required": [],
|
|
1019
|
-
"properties": {
|
|
1020
|
-
"name": {
|
|
1021
|
-
"type": "string",
|
|
1022
|
-
"description": "The name or assigned alias."
|
|
1023
|
-
},
|
|
1024
|
-
"url": {
|
|
1025
|
-
"type": "string",
|
|
1026
|
-
"format": "uri-reference",
|
|
1027
|
-
"description": "The address of the dependency."
|
|
1028
|
-
},
|
|
1029
|
-
"branch": {
|
|
1030
|
-
"type": "string",
|
|
1031
|
-
"description": "The branch name for a git repo."
|
|
1032
|
-
},
|
|
1033
|
-
"path": {
|
|
1034
|
-
"type": "string",
|
|
1035
|
-
"description": "The relative path if the dependency is locally available."
|
|
1036
|
-
},
|
|
1037
|
-
"statusMessage": {
|
|
1012
|
+
"code": {
|
|
1038
1013
|
"type": "string",
|
|
1039
|
-
"description": "The
|
|
1014
|
+
"description": "The raw source code of the requirement. Set to null for manual-only requirements or requirements not yet implemented; use verificationMethod to disambiguate manual-by-design from manual-pending-automation. Note that if this is an overlay, it does not include the underlying source code."
|
|
1040
1015
|
},
|
|
1041
|
-
"
|
|
1042
|
-
"
|
|
1043
|
-
"description": "The
|
|
1016
|
+
"sourceLocation": {
|
|
1017
|
+
"$ref": "#/$defs/Source_Location",
|
|
1018
|
+
"description": "The explicit location of the requirement within the source code."
|
|
1044
1019
|
},
|
|
1045
|
-
"
|
|
1020
|
+
"controlType": {
|
|
1046
1021
|
"type": "string",
|
|
1047
|
-
"
|
|
1048
|
-
"
|
|
1022
|
+
"title": "Control Type",
|
|
1023
|
+
"enum": [
|
|
1024
|
+
"policy",
|
|
1025
|
+
"procedure",
|
|
1026
|
+
"technical",
|
|
1027
|
+
"management",
|
|
1028
|
+
"operational"
|
|
1029
|
+
],
|
|
1030
|
+
"description": "Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A categories. 'policy' = an authored governance statement; 'procedure' = a documented process; 'technical' = an enforced technical configuration; 'management' = a programmatic/management activity; 'operational' = a recurring operational activity (e.g. AT, IR, MA families). Optional: when omitted, consumers may infer heuristically from family/id but should not assume a default."
|
|
1049
1031
|
},
|
|
1050
|
-
"
|
|
1051
|
-
"
|
|
1052
|
-
"description": "
|
|
1032
|
+
"verificationMethod": {
|
|
1033
|
+
"$ref": "#/$defs/Verification_Method_Enum",
|
|
1034
|
+
"description": "How this requirement is intended to be verified. Disambiguates the two cases that null 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and runs without operator action; 'hybrid' = part automated, part manual. Optional: when omitted, consumers should not infer a default."
|
|
1053
1035
|
},
|
|
1054
|
-
"
|
|
1036
|
+
"applicability": {
|
|
1055
1037
|
"type": "string",
|
|
1056
|
-
"
|
|
1038
|
+
"title": "Applicability",
|
|
1039
|
+
"enum": [
|
|
1040
|
+
"required",
|
|
1041
|
+
"optional",
|
|
1042
|
+
"advisory"
|
|
1043
|
+
],
|
|
1044
|
+
"description": "Whether the requirement is mandatory within its baseline. Distinct from severity (risk weight) and status (lifecycle state). Maps 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{}). Optional: when omitted, consumers should treat the requirement as 'required' by convention."
|
|
1057
1045
|
}
|
|
1058
1046
|
},
|
|
1059
1047
|
"examples": [
|
|
1060
1048
|
{
|
|
1061
|
-
"
|
|
1062
|
-
"
|
|
1063
|
-
"
|
|
1064
|
-
"
|
|
1065
|
-
"
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
"
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
},
|
|
1079
|
-
{
|
|
1080
|
-
"name": "chef-supermarket-baseline",
|
|
1081
|
-
"supermarket": "dev-sec/linux-baseline",
|
|
1082
|
-
"status": "loaded"
|
|
1083
|
-
}
|
|
1084
|
-
],
|
|
1085
|
-
"description": "A dependency for a baseline. Can include relative paths or URLs for where to find the dependency.",
|
|
1086
|
-
"title": "Dependency"
|
|
1087
|
-
},
|
|
1088
|
-
"Reference": {
|
|
1089
|
-
"anyOf": [
|
|
1090
|
-
{
|
|
1091
|
-
"type": "object",
|
|
1092
|
-
"required": [
|
|
1093
|
-
"ref"
|
|
1049
|
+
"$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.5.0 (backward compatibility).",
|
|
1050
|
+
"id": "SV-238196",
|
|
1051
|
+
"title": "The Ubuntu operating system must enforce password complexity",
|
|
1052
|
+
"impact": 0.5,
|
|
1053
|
+
"tags": {
|
|
1054
|
+
"nist": [
|
|
1055
|
+
"IA-5"
|
|
1056
|
+
],
|
|
1057
|
+
"severity": "medium",
|
|
1058
|
+
"cci": [
|
|
1059
|
+
"CCI-000192"
|
|
1060
|
+
]
|
|
1061
|
+
},
|
|
1062
|
+
"refs": [
|
|
1063
|
+
{
|
|
1064
|
+
"url": "https://public.cyber.mil/stigs/"
|
|
1065
|
+
}
|
|
1094
1066
|
],
|
|
1095
|
-
"
|
|
1096
|
-
|
|
1097
|
-
"
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
"type": "array",
|
|
1104
|
-
"items": {
|
|
1105
|
-
"type": "object",
|
|
1106
|
-
"additionalProperties": true
|
|
1107
|
-
},
|
|
1108
|
-
"description": "An array of reference objects."
|
|
1109
|
-
}
|
|
1110
|
-
]
|
|
1067
|
+
"descriptions": [
|
|
1068
|
+
{
|
|
1069
|
+
"label": "default",
|
|
1070
|
+
"data": "Use of a complex password helps to increase the time and resources required to compromise the password."
|
|
1071
|
+
},
|
|
1072
|
+
{
|
|
1073
|
+
"label": "check",
|
|
1074
|
+
"data": "Verify the value of 'minlen' in /etc/security/pwquality.conf."
|
|
1111
1075
|
}
|
|
1112
|
-
|
|
1113
|
-
"description": "A reference using the 'ref' field."
|
|
1076
|
+
]
|
|
1114
1077
|
},
|
|
1115
1078
|
{
|
|
1116
|
-
"
|
|
1117
|
-
"
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
"
|
|
1121
|
-
"
|
|
1122
|
-
"
|
|
1123
|
-
|
|
1124
|
-
|
|
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
|
+
"id": "AC-3",
|
|
1081
|
+
"title": "Access Enforcement",
|
|
1082
|
+
"impact": 0.7,
|
|
1083
|
+
"tags": {
|
|
1084
|
+
"nist": [
|
|
1085
|
+
"AC-3"
|
|
1086
|
+
],
|
|
1087
|
+
"severity": "high"
|
|
1125
1088
|
},
|
|
1126
|
-
"
|
|
1089
|
+
"descriptions": [
|
|
1090
|
+
{
|
|
1091
|
+
"label": "default",
|
|
1092
|
+
"data": "The information system enforces approved authorizations for logical access to information and system resources."
|
|
1093
|
+
}
|
|
1094
|
+
],
|
|
1095
|
+
"code": "control 'AC-3' do; impact 0.7; end",
|
|
1096
|
+
"controlType": "technical",
|
|
1097
|
+
"verificationMethod": "automated",
|
|
1098
|
+
"applicability": "required"
|
|
1127
1099
|
},
|
|
1128
1100
|
{
|
|
1129
|
-
"
|
|
1130
|
-
"
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
"
|
|
1134
|
-
"
|
|
1135
|
-
"
|
|
1136
|
-
|
|
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
|
+
"id": "KSI-CNA-01",
|
|
1103
|
+
"title": "Cyber Security Plan documents the system",
|
|
1104
|
+
"impact": 0.5,
|
|
1105
|
+
"tags": {
|
|
1106
|
+
"ksi": [
|
|
1107
|
+
"KSI-CNA"
|
|
1108
|
+
]
|
|
1109
|
+
},
|
|
1110
|
+
"descriptions": [
|
|
1111
|
+
{
|
|
1112
|
+
"label": "default",
|
|
1113
|
+
"data": "The Cyber Security Plan documents the system, its boundary, and its components."
|
|
1137
1114
|
}
|
|
1115
|
+
],
|
|
1116
|
+
"controlType": "policy",
|
|
1117
|
+
"verificationMethod": "manual-by-design",
|
|
1118
|
+
"applicability": "required"
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
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
|
+
"id": "SV-999999",
|
|
1123
|
+
"title": "Example STIG rule pending automation",
|
|
1124
|
+
"impact": 0.3,
|
|
1125
|
+
"tags": {
|
|
1126
|
+
"stig_id": "SV-999999"
|
|
1138
1127
|
},
|
|
1139
|
-
"
|
|
1128
|
+
"descriptions": [
|
|
1129
|
+
{
|
|
1130
|
+
"label": "default",
|
|
1131
|
+
"data": "Example requirement that is intended to be automated but currently lacks a fix block."
|
|
1132
|
+
},
|
|
1133
|
+
{
|
|
1134
|
+
"label": "check",
|
|
1135
|
+
"data": "Manual review of system configuration is required."
|
|
1136
|
+
}
|
|
1137
|
+
],
|
|
1138
|
+
"verificationMethod": "manual-pending-automation",
|
|
1139
|
+
"applicability": "advisory"
|
|
1140
1140
|
}
|
|
1141
1141
|
],
|
|
1142
|
-
"description": "
|
|
1143
|
-
"title": "
|
|
1142
|
+
"description": "Core requirement fields shared between baseline requirements and evaluated requirements. Contains the fundamental requirement definition without assessment results.",
|
|
1143
|
+
"title": "Requirement Core"
|
|
1144
1144
|
},
|
|
1145
|
-
"
|
|
1146
|
-
"type": "
|
|
1147
|
-
"
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
"
|
|
1151
|
-
|
|
1152
|
-
"description": "Path to the file that this requirement originates from."
|
|
1153
|
-
},
|
|
1154
|
-
"line": {
|
|
1155
|
-
"type": "number",
|
|
1156
|
-
"description": "The line on which this requirement is located."
|
|
1157
|
-
}
|
|
1158
|
-
},
|
|
1159
|
-
"examples": [
|
|
1160
|
-
{
|
|
1161
|
-
"ref": "controls/SV-260476.rb",
|
|
1162
|
-
"line": 1
|
|
1163
|
-
},
|
|
1164
|
-
{
|
|
1165
|
-
"ref": "profiles/ubuntu/controls/configure_audit.rb",
|
|
1166
|
-
"line": 42
|
|
1167
|
-
}
|
|
1145
|
+
"Verification_Method_Enum": {
|
|
1146
|
+
"type": "string",
|
|
1147
|
+
"enum": [
|
|
1148
|
+
"automated",
|
|
1149
|
+
"manual-by-design",
|
|
1150
|
+
"manual-pending-automation",
|
|
1151
|
+
"hybrid"
|
|
1168
1152
|
],
|
|
1169
|
-
"description": "
|
|
1170
|
-
"title": "
|
|
1153
|
+
"description": "How a requirement is intended to be verified. Disambiguates the two cases that null 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and runs without operator action; 'hybrid' = part automated, part manual. Named '_Enum' to disambiguate from the unrelated Verification_Method DID-context struct.",
|
|
1154
|
+
"title": "Verification Method Enum"
|
|
1171
1155
|
},
|
|
1172
|
-
"
|
|
1173
|
-
"type": "
|
|
1174
|
-
"
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
"
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1156
|
+
"Severity": {
|
|
1157
|
+
"type": "string",
|
|
1158
|
+
"enum": [
|
|
1159
|
+
"critical",
|
|
1160
|
+
"high",
|
|
1161
|
+
"medium",
|
|
1162
|
+
"low",
|
|
1163
|
+
"informational"
|
|
1164
|
+
],
|
|
1165
|
+
"description": "Severity rating for a requirement. Typically derived from the numeric impact score.",
|
|
1166
|
+
"title": "Severity"
|
|
1167
|
+
},
|
|
1168
|
+
"Cloud_Provider": {
|
|
1169
|
+
"type": [
|
|
1170
|
+
"string",
|
|
1171
|
+
"null"
|
|
1172
|
+
],
|
|
1173
|
+
"enum": [
|
|
1174
|
+
"aws",
|
|
1175
|
+
"azure",
|
|
1176
|
+
"gcp",
|
|
1177
|
+
"oci",
|
|
1178
|
+
"other",
|
|
1179
|
+
null
|
|
1180
|
+
],
|
|
1181
|
+
"description": "Cloud service provider identifier.",
|
|
1182
|
+
"title": "Cloud Provider"
|
|
1183
|
+
}
|
|
1184
|
+
}
|
|
1185
|
+
},
|
|
1186
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0": {
|
|
1187
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1188
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/comparison/v3.5.0",
|
|
1189
|
+
"title": "HDF Comparison Primitives",
|
|
1190
|
+
"description": "Types for representing structured comparisons between HDF security assessment documents.",
|
|
1191
|
+
"$defs": {
|
|
1192
|
+
"Requirement_State": {
|
|
1193
|
+
"type": "string",
|
|
1194
|
+
"enum": [
|
|
1195
|
+
"new",
|
|
1196
|
+
"absent",
|
|
1197
|
+
"unchanged",
|
|
1198
|
+
"updated",
|
|
1199
|
+
"fixed",
|
|
1200
|
+
"regressed",
|
|
1201
|
+
"moved",
|
|
1202
|
+
"split",
|
|
1203
|
+
"merged"
|
|
1204
|
+
],
|
|
1205
|
+
"description": "SARIF-compatible vocabulary extended for security. 'new' = present only in new source, 'absent' = present only in old, 'unchanged' = same effective status, 'updated' = status changed (generic), 'fixed' = was failing now passing, 'regressed' = was passing now failing, 'moved' = reorganized same content, 'split'/'merged' = reserved for v1.1.",
|
|
1206
|
+
"title": "Requirement State"
|
|
1207
|
+
},
|
|
1208
|
+
"Change_Reason": {
|
|
1209
|
+
"type": "string",
|
|
1210
|
+
"enum": [
|
|
1211
|
+
"resultChanged",
|
|
1212
|
+
"overrideAdded",
|
|
1213
|
+
"overrideExpired",
|
|
1214
|
+
"overrideRemoved",
|
|
1215
|
+
"overrideModified",
|
|
1216
|
+
"impactChanged",
|
|
1217
|
+
"dispositionChanged",
|
|
1218
|
+
"effectiveImpactChanged",
|
|
1219
|
+
"baselineUpgraded",
|
|
1220
|
+
"controlMapped",
|
|
1221
|
+
"scannerChanged",
|
|
1222
|
+
"targetChanged",
|
|
1223
|
+
"configChanged",
|
|
1224
|
+
"metadataChanged"
|
|
1225
|
+
],
|
|
1226
|
+
"description": "The reason a requirement's state changed between sources. 'dispositionChanged' = the governing override type differs between the sources (e.g. a waiver replaced a riskAdjustment); 'effectiveImpactChanged' = the post-override impact score differs while the base impact may be unchanged.",
|
|
1227
|
+
"title": "Change Reason"
|
|
1228
|
+
},
|
|
1229
|
+
"Comparison_Mode": {
|
|
1230
|
+
"type": "string",
|
|
1231
|
+
"enum": [
|
|
1232
|
+
"temporal",
|
|
1233
|
+
"baseline",
|
|
1234
|
+
"fleet",
|
|
1235
|
+
"multiSource",
|
|
1236
|
+
"baselineEvolution",
|
|
1237
|
+
"systemDrift"
|
|
1238
|
+
],
|
|
1239
|
+
"description": "The mode of comparison. 'temporal' compares the same target over time. 'baseline' compares against a golden reference. 'fleet' compares across multiple systems. 'multiSource' compares outputs from different scanners. 'baselineEvolution' compares two baseline documents to detect requirement changes between versions. 'systemDrift' compares two system documents to detect component-level changes.",
|
|
1240
|
+
"title": "Comparison Mode"
|
|
1241
|
+
},
|
|
1242
|
+
"Source_Role": {
|
|
1243
|
+
"type": "string",
|
|
1244
|
+
"enum": [
|
|
1245
|
+
"old",
|
|
1246
|
+
"new",
|
|
1247
|
+
"golden",
|
|
1248
|
+
"reference",
|
|
1249
|
+
"system"
|
|
1250
|
+
],
|
|
1251
|
+
"description": "The role of a source document in the comparison.",
|
|
1252
|
+
"title": "Source Role"
|
|
1253
|
+
},
|
|
1254
|
+
"Original_Format": {
|
|
1255
|
+
"type": "string",
|
|
1256
|
+
"enum": [
|
|
1257
|
+
"hdf-v2",
|
|
1258
|
+
"inspec-v1",
|
|
1259
|
+
"sarif",
|
|
1260
|
+
"oscal-ar",
|
|
1261
|
+
"xccdf"
|
|
1262
|
+
],
|
|
1263
|
+
"description": "The original format of the source document before conversion to HDF.",
|
|
1264
|
+
"title": "Original Format"
|
|
1265
|
+
},
|
|
1266
|
+
"Match_Strategy": {
|
|
1267
|
+
"type": "string",
|
|
1268
|
+
"enum": [
|
|
1269
|
+
"exactId",
|
|
1270
|
+
"mappedId",
|
|
1271
|
+
"cciMatch",
|
|
1272
|
+
"nistMatch",
|
|
1273
|
+
"fuzzyTitle",
|
|
1274
|
+
"fuzzyContent"
|
|
1275
|
+
],
|
|
1276
|
+
"description": "The strategy used to match requirements across sources. 'exactId' matches by identical IDs. 'mappedId' uses an ID mapping table. 'cciMatch'/'nistMatch' match by framework identifiers. 'fuzzyTitle'/'fuzzyContent' use text similarity.",
|
|
1277
|
+
"title": "Match Strategy"
|
|
1278
|
+
},
|
|
1279
|
+
"Conflict_Resolution": {
|
|
1280
|
+
"type": "string",
|
|
1281
|
+
"enum": [
|
|
1282
|
+
"mostSevere",
|
|
1283
|
+
"mostRecent",
|
|
1284
|
+
"manual",
|
|
1285
|
+
"unresolved"
|
|
1286
|
+
],
|
|
1287
|
+
"description": "How a conflict between multiple scanner results was resolved.",
|
|
1288
|
+
"title": "Conflict Resolution"
|
|
1196
1289
|
},
|
|
1197
|
-
"
|
|
1290
|
+
"Annotation_Category": {
|
|
1291
|
+
"type": "string",
|
|
1292
|
+
"enum": [
|
|
1293
|
+
"remediation",
|
|
1294
|
+
"drift",
|
|
1295
|
+
"waiver",
|
|
1296
|
+
"baselineChange",
|
|
1297
|
+
"scannerNote"
|
|
1298
|
+
],
|
|
1299
|
+
"description": "The category of an annotation attached to a comparison.",
|
|
1300
|
+
"title": "Annotation Category"
|
|
1301
|
+
},
|
|
1302
|
+
"Field_Change": {
|
|
1198
1303
|
"type": "object",
|
|
1199
1304
|
"unevaluatedProperties": false,
|
|
1200
1305
|
"required": [
|
|
1201
|
-
"
|
|
1202
|
-
"
|
|
1306
|
+
"op",
|
|
1307
|
+
"path"
|
|
1203
1308
|
],
|
|
1204
1309
|
"properties": {
|
|
1205
|
-
"
|
|
1206
|
-
"
|
|
1207
|
-
"
|
|
1310
|
+
"op": {
|
|
1311
|
+
"type": "string",
|
|
1312
|
+
"title": "Op",
|
|
1313
|
+
"enum": [
|
|
1314
|
+
"add",
|
|
1315
|
+
"remove",
|
|
1316
|
+
"replace"
|
|
1317
|
+
],
|
|
1318
|
+
"description": "The type of change operation."
|
|
1208
1319
|
},
|
|
1209
|
-
"
|
|
1320
|
+
"path": {
|
|
1210
1321
|
"type": "string",
|
|
1211
|
-
"description": "
|
|
1212
|
-
}
|
|
1213
|
-
},
|
|
1214
|
-
"examples": [
|
|
1215
|
-
{
|
|
1216
|
-
"algorithm": "sha256",
|
|
1217
|
-
"value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
1322
|
+
"description": "JSON Pointer path to the changed field."
|
|
1218
1323
|
},
|
|
1219
|
-
{
|
|
1220
|
-
"
|
|
1221
|
-
|
|
1324
|
+
"oldValue": {
|
|
1325
|
+
"description": "The previous value of the field (for 'remove' and 'replace' operations)."
|
|
1326
|
+
},
|
|
1327
|
+
"newValue": {
|
|
1328
|
+
"description": "The new value of the field (for 'add' and 'replace' operations)."
|
|
1222
1329
|
}
|
|
1223
|
-
|
|
1224
|
-
"description": "
|
|
1225
|
-
"title": "
|
|
1330
|
+
},
|
|
1331
|
+
"description": "A single field-level change between two versions of a requirement.",
|
|
1332
|
+
"title": "Field Change"
|
|
1226
1333
|
},
|
|
1227
|
-
"
|
|
1334
|
+
"Source": {
|
|
1228
1335
|
"type": "object",
|
|
1229
1336
|
"unevaluatedProperties": false,
|
|
1230
1337
|
"required": [
|
|
1231
|
-
"
|
|
1232
|
-
"
|
|
1338
|
+
"role",
|
|
1339
|
+
"label"
|
|
1233
1340
|
],
|
|
1234
1341
|
"properties": {
|
|
1235
|
-
"
|
|
1342
|
+
"role": {
|
|
1343
|
+
"$ref": "#/$defs/Source_Role",
|
|
1344
|
+
"description": "The role of this source in the comparison."
|
|
1345
|
+
},
|
|
1346
|
+
"label": {
|
|
1236
1347
|
"type": "string",
|
|
1237
|
-
"description": "
|
|
1348
|
+
"description": "Human-readable label for this source. Example: 'Before remediation scan'."
|
|
1238
1349
|
},
|
|
1239
|
-
"
|
|
1350
|
+
"uri": {
|
|
1240
1351
|
"type": "string",
|
|
1241
|
-
"
|
|
1242
|
-
"
|
|
1243
|
-
"email",
|
|
1244
|
-
"username",
|
|
1245
|
-
"system",
|
|
1246
|
-
"agent",
|
|
1247
|
-
"simple",
|
|
1248
|
-
"other"
|
|
1249
|
-
],
|
|
1250
|
-
"description": "The type of identifier. Use 'email' for email addresses, 'username' for user accounts, 'system' for deterministic non-interactive automation (CI jobs, cron, scanners), 'agent' for an AI/LLM agent acting with autonomy — kept distinct from 'system' so auditors can apply AI-specific scrutiny (e.g. 'an LLM proposed this' vs a deterministic job) and satisfy AI-source disclosure under frameworks like the EU AI Act and NIST AI RMF, 'simple' for basic string identifiers without additional classification, or 'other' for custom identity systems."
|
|
1352
|
+
"format": "uri",
|
|
1353
|
+
"description": "URI pointing to the source document."
|
|
1251
1354
|
},
|
|
1252
|
-
"
|
|
1355
|
+
"originalFormat": {
|
|
1356
|
+
"$ref": "#/$defs/Original_Format",
|
|
1357
|
+
"description": "The original format of the source document before conversion to HDF."
|
|
1358
|
+
},
|
|
1359
|
+
"checksum": {
|
|
1360
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
|
|
1361
|
+
"description": "Cryptographic checksum of the source document for integrity verification."
|
|
1362
|
+
},
|
|
1363
|
+
"assessmentTimestamp": {
|
|
1253
1364
|
"type": "string",
|
|
1254
|
-
"
|
|
1255
|
-
|
|
1256
|
-
},
|
|
1257
|
-
"examples": [
|
|
1258
|
-
{
|
|
1259
|
-
"type": "email",
|
|
1260
|
-
"identifier": "admin@example.com"
|
|
1365
|
+
"format": "date-time",
|
|
1366
|
+
"description": "When the source assessment was performed. ISO 8601 format."
|
|
1261
1367
|
},
|
|
1262
|
-
{
|
|
1263
|
-
"
|
|
1264
|
-
"
|
|
1265
|
-
"description": "Security Operations Analyst"
|
|
1368
|
+
"tool": {
|
|
1369
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Tool",
|
|
1370
|
+
"description": "The security tool that produced the assessment data in this source."
|
|
1266
1371
|
},
|
|
1267
|
-
{
|
|
1268
|
-
"type": "
|
|
1269
|
-
"
|
|
1270
|
-
|
|
1372
|
+
"components": {
|
|
1373
|
+
"type": "array",
|
|
1374
|
+
"items": {
|
|
1375
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0#/$defs/Component"
|
|
1376
|
+
},
|
|
1377
|
+
"description": "The components assessed in this source."
|
|
1271
1378
|
},
|
|
1272
|
-
{
|
|
1273
|
-
"type": "
|
|
1274
|
-
"
|
|
1275
|
-
"
|
|
1379
|
+
"baselineRef": {
|
|
1380
|
+
"type": "object",
|
|
1381
|
+
"unevaluatedProperties": false,
|
|
1382
|
+
"required": [
|
|
1383
|
+
"name"
|
|
1384
|
+
],
|
|
1385
|
+
"properties": {
|
|
1386
|
+
"name": {
|
|
1387
|
+
"type": "string",
|
|
1388
|
+
"description": "Name of the baseline used in this source."
|
|
1389
|
+
},
|
|
1390
|
+
"version": {
|
|
1391
|
+
"type": "string",
|
|
1392
|
+
"description": "Version of the baseline used in this source."
|
|
1393
|
+
}
|
|
1394
|
+
},
|
|
1395
|
+
"description": "Reference to the baseline used in this source assessment."
|
|
1276
1396
|
}
|
|
1277
|
-
|
|
1278
|
-
"description": "
|
|
1279
|
-
"title": "
|
|
1397
|
+
},
|
|
1398
|
+
"description": "A source document participating in the comparison.",
|
|
1399
|
+
"title": "Source"
|
|
1280
1400
|
},
|
|
1281
|
-
"
|
|
1401
|
+
"Matching_Config": {
|
|
1282
1402
|
"type": "object",
|
|
1283
1403
|
"unevaluatedProperties": false,
|
|
1284
1404
|
"required": [
|
|
1285
|
-
"
|
|
1286
|
-
"data"
|
|
1405
|
+
"primaryStrategy"
|
|
1287
1406
|
],
|
|
1288
1407
|
"properties": {
|
|
1289
|
-
"
|
|
1290
|
-
"
|
|
1291
|
-
"
|
|
1292
|
-
"enum": [
|
|
1293
|
-
"screenshot",
|
|
1294
|
-
"code",
|
|
1295
|
-
"log",
|
|
1296
|
-
"url",
|
|
1297
|
-
"file",
|
|
1298
|
-
"other"
|
|
1299
|
-
],
|
|
1300
|
-
"description": "The type of evidence being provided."
|
|
1301
|
-
},
|
|
1302
|
-
"data": {
|
|
1303
|
-
"type": "string",
|
|
1304
|
-
"description": "The evidence content. For screenshots/files: base64-encoded data or URL. For code/logs: the raw text. For URLs: the URL string."
|
|
1305
|
-
},
|
|
1306
|
-
"description": {
|
|
1307
|
-
"type": "string",
|
|
1308
|
-
"description": "Human-readable description of what this evidence shows."
|
|
1309
|
-
},
|
|
1310
|
-
"mimeType": {
|
|
1311
|
-
"type": "string",
|
|
1312
|
-
"description": "MIME type of the evidence. Example: 'image/png', 'text/plain', 'application/json'."
|
|
1408
|
+
"primaryStrategy": {
|
|
1409
|
+
"$ref": "#/$defs/Match_Strategy",
|
|
1410
|
+
"description": "The primary strategy used to match requirements across sources."
|
|
1313
1411
|
},
|
|
1314
|
-
"
|
|
1315
|
-
"type": "
|
|
1316
|
-
"
|
|
1412
|
+
"fallbackStrategies": {
|
|
1413
|
+
"type": "array",
|
|
1414
|
+
"items": {
|
|
1415
|
+
"$ref": "#/$defs/Match_Strategy"
|
|
1416
|
+
},
|
|
1417
|
+
"description": "Ordered list of fallback strategies tried when the primary strategy fails to find a match."
|
|
1317
1418
|
},
|
|
1318
|
-
"
|
|
1419
|
+
"minimumConfidence": {
|
|
1319
1420
|
"type": "number",
|
|
1320
|
-
"
|
|
1421
|
+
"minimum": 0,
|
|
1422
|
+
"maximum": 1,
|
|
1423
|
+
"description": "Minimum confidence score (0-1) required to accept a match."
|
|
1321
1424
|
},
|
|
1322
|
-
"
|
|
1425
|
+
"mappingTableUri": {
|
|
1323
1426
|
"type": "string",
|
|
1324
|
-
"format": "
|
|
1325
|
-
"description": "
|
|
1427
|
+
"format": "uri",
|
|
1428
|
+
"description": "URI pointing to an external mapping table used for ID translation."
|
|
1326
1429
|
},
|
|
1327
|
-
"
|
|
1328
|
-
"
|
|
1329
|
-
"
|
|
1430
|
+
"fingerprintFields": {
|
|
1431
|
+
"type": "array",
|
|
1432
|
+
"items": {
|
|
1433
|
+
"type": "string"
|
|
1434
|
+
},
|
|
1435
|
+
"description": "Fields used to compute a fingerprint for fuzzy matching."
|
|
1330
1436
|
}
|
|
1331
1437
|
},
|
|
1332
|
-
"
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
"
|
|
1341
|
-
"
|
|
1342
|
-
|
|
1343
|
-
"type": "email"
|
|
1344
|
-
}
|
|
1438
|
+
"description": "Configuration for how requirements are matched across sources.",
|
|
1439
|
+
"title": "Matching Config"
|
|
1440
|
+
},
|
|
1441
|
+
"State_Counts": {
|
|
1442
|
+
"type": "object",
|
|
1443
|
+
"unevaluatedProperties": false,
|
|
1444
|
+
"properties": {
|
|
1445
|
+
"fixed": {
|
|
1446
|
+
"type": "integer",
|
|
1447
|
+
"minimum": 0,
|
|
1448
|
+
"description": "Number of requirements that changed from failing to passing."
|
|
1345
1449
|
},
|
|
1346
|
-
{
|
|
1347
|
-
"type": "
|
|
1348
|
-
"
|
|
1349
|
-
"description": "
|
|
1350
|
-
|
|
1351
|
-
|
|
1450
|
+
"regressed": {
|
|
1451
|
+
"type": "integer",
|
|
1452
|
+
"minimum": 0,
|
|
1453
|
+
"description": "Number of requirements that changed from passing to failing."
|
|
1454
|
+
},
|
|
1455
|
+
"new": {
|
|
1456
|
+
"type": "integer",
|
|
1457
|
+
"minimum": 0,
|
|
1458
|
+
"description": "Number of requirements present only in the new source."
|
|
1459
|
+
},
|
|
1460
|
+
"absent": {
|
|
1461
|
+
"type": "integer",
|
|
1462
|
+
"minimum": 0,
|
|
1463
|
+
"description": "Number of requirements present only in the old source."
|
|
1464
|
+
},
|
|
1465
|
+
"unchanged": {
|
|
1466
|
+
"type": "integer",
|
|
1467
|
+
"minimum": 0,
|
|
1468
|
+
"description": "Number of requirements with the same effective status."
|
|
1469
|
+
},
|
|
1470
|
+
"updated": {
|
|
1471
|
+
"type": "integer",
|
|
1472
|
+
"minimum": 0,
|
|
1473
|
+
"description": "Number of requirements with a generic status change."
|
|
1352
1474
|
},
|
|
1353
|
-
{
|
|
1354
|
-
"type": "
|
|
1355
|
-
"
|
|
1356
|
-
"description": "
|
|
1357
|
-
|
|
1358
|
-
|
|
1475
|
+
"moved": {
|
|
1476
|
+
"type": "integer",
|
|
1477
|
+
"minimum": 0,
|
|
1478
|
+
"description": "Number of requirements that were reorganized without content change."
|
|
1479
|
+
}
|
|
1480
|
+
},
|
|
1481
|
+
"description": "Counts of requirements in each state.",
|
|
1482
|
+
"title": "State Counts"
|
|
1483
|
+
},
|
|
1484
|
+
"Severity_Breakdown": {
|
|
1485
|
+
"type": "object",
|
|
1486
|
+
"unevaluatedProperties": false,
|
|
1487
|
+
"properties": {
|
|
1488
|
+
"critical": {
|
|
1489
|
+
"$ref": "#/$defs/State_Counts",
|
|
1490
|
+
"description": "State counts for critical severity requirements."
|
|
1359
1491
|
},
|
|
1360
|
-
{
|
|
1361
|
-
"
|
|
1362
|
-
"
|
|
1363
|
-
"description": "Link to security ticket documenting remediation work",
|
|
1364
|
-
"capturedAt": "2025-12-14T11:00:00Z"
|
|
1492
|
+
"high": {
|
|
1493
|
+
"$ref": "#/$defs/State_Counts",
|
|
1494
|
+
"description": "State counts for high severity requirements."
|
|
1365
1495
|
},
|
|
1366
|
-
{
|
|
1367
|
-
"
|
|
1368
|
-
"
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
"
|
|
1372
|
-
"
|
|
1373
|
-
"capturedAt": "2025-12-14T12:00:00Z",
|
|
1374
|
-
"capturedBy": {
|
|
1375
|
-
"identifier": "compliance-system",
|
|
1376
|
-
"type": "system"
|
|
1377
|
-
}
|
|
1496
|
+
"medium": {
|
|
1497
|
+
"$ref": "#/$defs/State_Counts",
|
|
1498
|
+
"description": "State counts for medium severity requirements."
|
|
1499
|
+
},
|
|
1500
|
+
"low": {
|
|
1501
|
+
"$ref": "#/$defs/State_Counts",
|
|
1502
|
+
"description": "State counts for low severity requirements."
|
|
1378
1503
|
}
|
|
1379
|
-
|
|
1380
|
-
"description": "
|
|
1381
|
-
"title": "
|
|
1504
|
+
},
|
|
1505
|
+
"description": "Breakdown of state counts by severity level.",
|
|
1506
|
+
"title": "Severity Breakdown"
|
|
1382
1507
|
},
|
|
1383
|
-
"
|
|
1508
|
+
"Per_Source_Summary": {
|
|
1384
1509
|
"type": "object",
|
|
1385
1510
|
"unevaluatedProperties": false,
|
|
1386
1511
|
"required": [
|
|
1387
|
-
"
|
|
1512
|
+
"sourceIndex",
|
|
1513
|
+
"label"
|
|
1388
1514
|
],
|
|
1389
1515
|
"properties": {
|
|
1390
|
-
"
|
|
1516
|
+
"sourceIndex": {
|
|
1517
|
+
"type": "integer",
|
|
1518
|
+
"minimum": 0,
|
|
1519
|
+
"description": "Zero-based index into the sources array identifying which source this summary is for."
|
|
1520
|
+
},
|
|
1521
|
+
"label": {
|
|
1391
1522
|
"type": "string",
|
|
1392
|
-
"
|
|
1393
|
-
"description": "URI pointing to automated remediation resources (Ansible playbooks, Terraform scripts, etc.). Examples: GitHub repository, DISA STIG Supplemental Automation Content, vendor-provided scripts."
|
|
1523
|
+
"description": "Human-readable label for this source."
|
|
1394
1524
|
},
|
|
1395
|
-
"
|
|
1396
|
-
"
|
|
1397
|
-
"
|
|
1398
|
-
|
|
1399
|
-
},
|
|
1400
|
-
"examples": [
|
|
1401
|
-
{
|
|
1402
|
-
"uri": "https://github.com/ansible-lockdown/RHEL9-STIG/tree/main/tasks"
|
|
1525
|
+
"fixed": {
|
|
1526
|
+
"type": "integer",
|
|
1527
|
+
"minimum": 0,
|
|
1528
|
+
"description": "Number of requirements that changed from failing to passing."
|
|
1403
1529
|
},
|
|
1404
|
-
{
|
|
1405
|
-
"
|
|
1406
|
-
"
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1530
|
+
"regressed": {
|
|
1531
|
+
"type": "integer",
|
|
1532
|
+
"minimum": 0,
|
|
1533
|
+
"description": "Number of requirements that changed from passing to failing."
|
|
1534
|
+
},
|
|
1535
|
+
"new": {
|
|
1536
|
+
"type": "integer",
|
|
1537
|
+
"minimum": 0,
|
|
1538
|
+
"description": "Number of requirements present only in the new source."
|
|
1539
|
+
},
|
|
1540
|
+
"absent": {
|
|
1541
|
+
"type": "integer",
|
|
1542
|
+
"minimum": 0,
|
|
1543
|
+
"description": "Number of requirements present only in the old source."
|
|
1544
|
+
},
|
|
1545
|
+
"unchanged": {
|
|
1546
|
+
"type": "integer",
|
|
1547
|
+
"minimum": 0,
|
|
1548
|
+
"description": "Number of requirements with the same effective status."
|
|
1549
|
+
},
|
|
1550
|
+
"updated": {
|
|
1551
|
+
"type": "integer",
|
|
1552
|
+
"minimum": 0,
|
|
1553
|
+
"description": "Number of requirements with a generic status change."
|
|
1554
|
+
},
|
|
1555
|
+
"moved": {
|
|
1556
|
+
"type": "integer",
|
|
1557
|
+
"minimum": 0,
|
|
1558
|
+
"description": "Number of requirements that were reorganized without content change."
|
|
1410
1559
|
}
|
|
1411
|
-
|
|
1412
|
-
"description": "
|
|
1413
|
-
"title": "
|
|
1560
|
+
},
|
|
1561
|
+
"description": "Summary statistics for a single source in a multi-source comparison.",
|
|
1562
|
+
"title": "Per Source Summary"
|
|
1414
1563
|
},
|
|
1415
|
-
"
|
|
1564
|
+
"Comparison_Summary": {
|
|
1416
1565
|
"type": "object",
|
|
1417
1566
|
"unevaluatedProperties": false,
|
|
1418
1567
|
"required": [
|
|
1419
|
-
"
|
|
1420
|
-
"
|
|
1568
|
+
"total",
|
|
1569
|
+
"matchedCount",
|
|
1570
|
+
"unmatchedOldCount",
|
|
1571
|
+
"unmatchedNewCount"
|
|
1421
1572
|
],
|
|
1422
1573
|
"properties": {
|
|
1423
|
-
"
|
|
1424
|
-
"type": "
|
|
1425
|
-
"
|
|
1574
|
+
"total": {
|
|
1575
|
+
"type": "integer",
|
|
1576
|
+
"minimum": 0,
|
|
1577
|
+
"description": "Total number of unique requirements across all sources."
|
|
1426
1578
|
},
|
|
1427
|
-
"
|
|
1428
|
-
"type": "
|
|
1429
|
-
"
|
|
1579
|
+
"matchedCount": {
|
|
1580
|
+
"type": "integer",
|
|
1581
|
+
"minimum": 0,
|
|
1582
|
+
"description": "Number of requirements successfully matched between sources."
|
|
1430
1583
|
},
|
|
1431
|
-
"
|
|
1432
|
-
"type": "
|
|
1433
|
-
"
|
|
1434
|
-
"description": "
|
|
1584
|
+
"unmatchedOldCount": {
|
|
1585
|
+
"type": "integer",
|
|
1586
|
+
"minimum": 0,
|
|
1587
|
+
"description": "Number of requirements in the old source with no match in the new source."
|
|
1435
1588
|
},
|
|
1436
|
-
"
|
|
1437
|
-
"type": "
|
|
1438
|
-
"
|
|
1589
|
+
"unmatchedNewCount": {
|
|
1590
|
+
"type": "integer",
|
|
1591
|
+
"minimum": 0,
|
|
1592
|
+
"description": "Number of requirements in the new source with no match in the old source."
|
|
1439
1593
|
},
|
|
1440
|
-
"
|
|
1441
|
-
"type": "
|
|
1442
|
-
"
|
|
1594
|
+
"new": {
|
|
1595
|
+
"type": "integer",
|
|
1596
|
+
"minimum": 0,
|
|
1597
|
+
"description": "Number of requirements present only in the new source."
|
|
1598
|
+
},
|
|
1599
|
+
"absent": {
|
|
1600
|
+
"type": "integer",
|
|
1601
|
+
"minimum": 0,
|
|
1602
|
+
"description": "Number of requirements present only in the old source."
|
|
1603
|
+
},
|
|
1604
|
+
"unchanged": {
|
|
1605
|
+
"type": "integer",
|
|
1606
|
+
"minimum": 0,
|
|
1607
|
+
"description": "Number of requirements with the same effective status."
|
|
1608
|
+
},
|
|
1609
|
+
"updated": {
|
|
1610
|
+
"type": "integer",
|
|
1611
|
+
"minimum": 0,
|
|
1612
|
+
"description": "Number of requirements with a generic status change."
|
|
1613
|
+
},
|
|
1614
|
+
"fixed": {
|
|
1615
|
+
"type": "integer",
|
|
1616
|
+
"minimum": 0,
|
|
1617
|
+
"description": "Number of requirements that changed from failing to passing."
|
|
1618
|
+
},
|
|
1619
|
+
"regressed": {
|
|
1620
|
+
"type": "integer",
|
|
1621
|
+
"minimum": 0,
|
|
1622
|
+
"description": "Number of requirements that changed from passing to failing."
|
|
1623
|
+
},
|
|
1624
|
+
"moved": {
|
|
1625
|
+
"type": "integer",
|
|
1626
|
+
"minimum": 0,
|
|
1627
|
+
"description": "Number of requirements that were reorganized without content change."
|
|
1628
|
+
},
|
|
1629
|
+
"oldCompliancePercent": {
|
|
1630
|
+
"type": "number",
|
|
1631
|
+
"description": "Compliance percentage of the old source (0-100)."
|
|
1632
|
+
},
|
|
1633
|
+
"newCompliancePercent": {
|
|
1634
|
+
"type": "number",
|
|
1635
|
+
"description": "Compliance percentage of the new source (0-100)."
|
|
1636
|
+
},
|
|
1637
|
+
"complianceDelta": {
|
|
1638
|
+
"type": "number",
|
|
1639
|
+
"description": "Change in compliance percentage (new - old)."
|
|
1640
|
+
},
|
|
1641
|
+
"averageMatchConfidence": {
|
|
1642
|
+
"type": "number",
|
|
1643
|
+
"minimum": 0,
|
|
1644
|
+
"maximum": 1,
|
|
1645
|
+
"description": "Average confidence score across all requirement matches (0-1)."
|
|
1646
|
+
},
|
|
1647
|
+
"bySeverity": {
|
|
1648
|
+
"$ref": "#/$defs/Severity_Breakdown",
|
|
1649
|
+
"description": "State counts broken down by severity level."
|
|
1650
|
+
},
|
|
1651
|
+
"perSource": {
|
|
1652
|
+
"type": "array",
|
|
1653
|
+
"items": {
|
|
1654
|
+
"$ref": "#/$defs/Per_Source_Summary"
|
|
1655
|
+
},
|
|
1656
|
+
"description": "Summary statistics for each individual source in a multi-source comparison."
|
|
1443
1657
|
}
|
|
1444
1658
|
},
|
|
1445
|
-
"description": "
|
|
1446
|
-
"title": "
|
|
1659
|
+
"description": "Summary statistics for the overall comparison.",
|
|
1660
|
+
"title": "Comparison Summary"
|
|
1447
1661
|
},
|
|
1448
|
-
"
|
|
1662
|
+
"Baseline_Diff": {
|
|
1449
1663
|
"type": "object",
|
|
1450
1664
|
"unevaluatedProperties": false,
|
|
1451
1665
|
"required": [
|
|
1452
|
-
"
|
|
1453
|
-
"
|
|
1454
|
-
"status"
|
|
1666
|
+
"name",
|
|
1667
|
+
"state"
|
|
1455
1668
|
],
|
|
1456
1669
|
"properties": {
|
|
1457
|
-
"
|
|
1458
|
-
"type": "string",
|
|
1459
|
-
"description": "Description of this milestone or task."
|
|
1460
|
-
},
|
|
1461
|
-
"estimatedCompletion": {
|
|
1670
|
+
"name": {
|
|
1462
1671
|
"type": "string",
|
|
1463
|
-
"
|
|
1464
|
-
"description": "Estimated completion date. ISO 8601 format."
|
|
1672
|
+
"description": "Name of the baseline being compared."
|
|
1465
1673
|
},
|
|
1466
|
-
"
|
|
1674
|
+
"state": {
|
|
1467
1675
|
"type": "string",
|
|
1468
|
-
"title": "
|
|
1676
|
+
"title": "Baseline Diff State",
|
|
1469
1677
|
"enum": [
|
|
1470
|
-
"
|
|
1471
|
-
"
|
|
1472
|
-
"
|
|
1678
|
+
"new",
|
|
1679
|
+
"absent",
|
|
1680
|
+
"unchanged",
|
|
1681
|
+
"updated"
|
|
1473
1682
|
],
|
|
1474
|
-
"description": "
|
|
1683
|
+
"description": "The state of this baseline in the comparison."
|
|
1475
1684
|
},
|
|
1476
|
-
"
|
|
1685
|
+
"oldVersion": {
|
|
1477
1686
|
"type": "string",
|
|
1478
|
-
"
|
|
1479
|
-
"description": "Actual completion timestamp. ISO 8601 format."
|
|
1687
|
+
"description": "Version of the baseline in the old source."
|
|
1480
1688
|
},
|
|
1481
|
-
"
|
|
1482
|
-
"
|
|
1483
|
-
"description": "
|
|
1689
|
+
"newVersion": {
|
|
1690
|
+
"type": "string",
|
|
1691
|
+
"description": "Version of the baseline in the new source."
|
|
1692
|
+
},
|
|
1693
|
+
"mappingSource": {
|
|
1694
|
+
"type": "string",
|
|
1695
|
+
"description": "The source of any ID mapping used to correlate requirements across baseline versions."
|
|
1484
1696
|
}
|
|
1485
1697
|
},
|
|
1486
|
-
"description": "
|
|
1487
|
-
"title": "
|
|
1698
|
+
"description": "Comparison of a baseline between sources.",
|
|
1699
|
+
"title": "Baseline Diff"
|
|
1488
1700
|
},
|
|
1489
|
-
"
|
|
1701
|
+
"Component_Diff": {
|
|
1490
1702
|
"type": "object",
|
|
1491
1703
|
"unevaluatedProperties": false,
|
|
1492
1704
|
"required": [
|
|
1493
|
-
"
|
|
1494
|
-
"
|
|
1495
|
-
"creator",
|
|
1496
|
-
"signatureValue",
|
|
1497
|
-
"proofPurpose",
|
|
1498
|
-
"verificationMethod"
|
|
1705
|
+
"name",
|
|
1706
|
+
"state"
|
|
1499
1707
|
],
|
|
1500
1708
|
"properties": {
|
|
1501
|
-
"
|
|
1502
|
-
"type": "string",
|
|
1503
|
-
"description": "The signature suite type. Example: 'JsonWebSignature2020', 'RsaSignature2018', 'Ed25519Signature2020'."
|
|
1504
|
-
},
|
|
1505
|
-
"created": {
|
|
1506
|
-
"type": "string",
|
|
1507
|
-
"format": "date-time",
|
|
1508
|
-
"description": "When the signature was created. ISO 8601 format."
|
|
1509
|
-
},
|
|
1510
|
-
"creator": {
|
|
1511
|
-
"$ref": "#/$defs/Identity",
|
|
1512
|
-
"description": "The identity that created this signature."
|
|
1513
|
-
},
|
|
1514
|
-
"signatureValue": {
|
|
1709
|
+
"name": {
|
|
1515
1710
|
"type": "string",
|
|
1516
|
-
"description": "
|
|
1711
|
+
"description": "Component name used for matching across system versions."
|
|
1517
1712
|
},
|
|
1518
|
-
"
|
|
1713
|
+
"state": {
|
|
1519
1714
|
"type": "string",
|
|
1520
|
-
"
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1715
|
+
"title": "Baseline Diff State",
|
|
1716
|
+
"enum": [
|
|
1717
|
+
"new",
|
|
1718
|
+
"absent",
|
|
1719
|
+
"unchanged",
|
|
1720
|
+
"updated"
|
|
1721
|
+
],
|
|
1722
|
+
"description": "The state of this component in the comparison."
|
|
1525
1723
|
},
|
|
1526
|
-
"
|
|
1527
|
-
"
|
|
1528
|
-
|
|
1724
|
+
"before": {
|
|
1725
|
+
"oneOf": [
|
|
1726
|
+
{
|
|
1727
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0#/$defs/Component"
|
|
1728
|
+
},
|
|
1729
|
+
{
|
|
1730
|
+
"type": "null"
|
|
1731
|
+
}
|
|
1732
|
+
],
|
|
1733
|
+
"description": "Component snapshot from the old system document. Null when state is 'new'."
|
|
1529
1734
|
},
|
|
1530
|
-
"
|
|
1531
|
-
"
|
|
1532
|
-
|
|
1735
|
+
"after": {
|
|
1736
|
+
"oneOf": [
|
|
1737
|
+
{
|
|
1738
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0#/$defs/Component"
|
|
1739
|
+
},
|
|
1740
|
+
{
|
|
1741
|
+
"type": "null"
|
|
1742
|
+
}
|
|
1743
|
+
],
|
|
1744
|
+
"description": "Component snapshot from the new system document. Null when state is 'absent'."
|
|
1533
1745
|
},
|
|
1534
|
-
"
|
|
1535
|
-
"type": "
|
|
1536
|
-
"
|
|
1746
|
+
"fieldChanges": {
|
|
1747
|
+
"type": "array",
|
|
1748
|
+
"items": {
|
|
1749
|
+
"$ref": "#/$defs/Field_Change"
|
|
1750
|
+
},
|
|
1751
|
+
"description": "Detailed field-level changes between the before and after component snapshots."
|
|
1537
1752
|
}
|
|
1538
1753
|
},
|
|
1539
|
-
"
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
"verificationMethod": {
|
|
1550
|
-
"type": "JsonWebKey2020",
|
|
1551
|
-
"controller": "did:example:123456789abcdefghi",
|
|
1552
|
-
"publicKeyJwk": {
|
|
1553
|
-
"kty": "RSA",
|
|
1554
|
-
"n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtV",
|
|
1555
|
-
"e": "AQAB"
|
|
1556
|
-
}
|
|
1557
|
-
}
|
|
1558
|
-
},
|
|
1754
|
+
"description": "Comparison of a single component between two system document versions.",
|
|
1755
|
+
"title": "Component Diff"
|
|
1756
|
+
},
|
|
1757
|
+
"Package_Diff": {
|
|
1758
|
+
"type": "object",
|
|
1759
|
+
"unevaluatedProperties": false,
|
|
1760
|
+
"required": [
|
|
1761
|
+
"state"
|
|
1762
|
+
],
|
|
1763
|
+
"anyOf": [
|
|
1559
1764
|
{
|
|
1560
|
-
"
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
"identifier": "ciso@example.com",
|
|
1564
|
-
"type": "email"
|
|
1565
|
-
},
|
|
1566
|
-
"signatureValue": "pY9...Cg==",
|
|
1567
|
-
"proofPurpose": "authentication",
|
|
1568
|
-
"verificationMethod": {
|
|
1569
|
-
"type": "RsaVerificationKey2018",
|
|
1570
|
-
"controller": "https://example.com/issuers/565049",
|
|
1571
|
-
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAryQICCl6NZ5gDKrnSztO\n-----END PUBLIC KEY-----"
|
|
1572
|
-
},
|
|
1573
|
-
"nonce": "c0ae1c8e-c7e7-469f-b252-86e6a0e7387e"
|
|
1765
|
+
"required": [
|
|
1766
|
+
"purl"
|
|
1767
|
+
]
|
|
1574
1768
|
},
|
|
1575
1769
|
{
|
|
1576
|
-
"
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
"identifier": "automated-signer",
|
|
1580
|
-
"type": "system",
|
|
1581
|
-
"description": "Hardware security module (HSM) for automated attestations"
|
|
1582
|
-
},
|
|
1583
|
-
"signatureValue": "z58DAdFfa9SkqZMVMxABEBC59Ck6WibLZ",
|
|
1584
|
-
"proofPurpose": "assertionMethod",
|
|
1585
|
-
"verificationMethod": {
|
|
1586
|
-
"type": "Ed25519VerificationKey2020",
|
|
1587
|
-
"controller": "did:key:z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK",
|
|
1588
|
-
"publicKeyBase58": "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
|
|
1589
|
-
},
|
|
1590
|
-
"challenge": "1f44d2f3-d16c-47a4-9f5f-1d6e8f4e3a2b",
|
|
1591
|
-
"domain": "https://compliance.example.com"
|
|
1770
|
+
"required": [
|
|
1771
|
+
"identifier"
|
|
1772
|
+
]
|
|
1592
1773
|
}
|
|
1593
1774
|
],
|
|
1594
|
-
"description": "A digital signature following W3C Data Integrity Proofs pattern. Supports hardware security tokens (PKCS#11/PKCS#12), Yubikeys, GPG keys, passkeys, and other cryptographic signing methods via JWK, PEM, or Base58 key formats.",
|
|
1595
|
-
"title": "Signature"
|
|
1596
|
-
},
|
|
1597
|
-
"Baseline_Metadata": {
|
|
1598
|
-
"type": "object",
|
|
1599
1775
|
"properties": {
|
|
1600
|
-
"
|
|
1601
|
-
"type": "string",
|
|
1602
|
-
"description": "The name - must be unique."
|
|
1603
|
-
},
|
|
1604
|
-
"title": {
|
|
1605
|
-
"type": "string",
|
|
1606
|
-
"description": "The title - should be human readable."
|
|
1607
|
-
},
|
|
1608
|
-
"maintainer": {
|
|
1776
|
+
"purl": {
|
|
1609
1777
|
"type": "string",
|
|
1610
|
-
"description": "
|
|
1778
|
+
"description": "Package URL (purl) — the preferred identity key for matching software packages across BOMs. Optional: BOM nodes without a purl (AI models, datasets, hardware parts, crypto algorithms) key on identifier instead."
|
|
1611
1779
|
},
|
|
1612
|
-
"
|
|
1780
|
+
"identifier": {
|
|
1613
1781
|
"type": "string",
|
|
1614
|
-
"description": "
|
|
1782
|
+
"description": "Generic identity key for matching a BOM node across versions when no purl applies — e.g. a Hugging Face model ref, dataset uniqueId, crypto algorithm OID, or hardware part number. At least one of purl or identifier is required."
|
|
1615
1783
|
},
|
|
1616
|
-
"
|
|
1784
|
+
"name": {
|
|
1617
1785
|
"type": "string",
|
|
1618
|
-
"description": "
|
|
1786
|
+
"description": "Human-readable node name."
|
|
1619
1787
|
},
|
|
1620
|
-
"
|
|
1788
|
+
"state": {
|
|
1621
1789
|
"type": "string",
|
|
1622
|
-
"
|
|
1790
|
+
"title": "Package Diff State",
|
|
1791
|
+
"enum": [
|
|
1792
|
+
"added",
|
|
1793
|
+
"removed",
|
|
1794
|
+
"updated",
|
|
1795
|
+
"unchanged"
|
|
1796
|
+
],
|
|
1797
|
+
"description": "The state of this package: added (new in new SBOM), removed (absent from new SBOM), updated (version changed), unchanged."
|
|
1623
1798
|
},
|
|
1624
|
-
"
|
|
1799
|
+
"oldVersion": {
|
|
1625
1800
|
"type": "string",
|
|
1626
|
-
"description": "
|
|
1801
|
+
"description": "Package version in the old SBOM."
|
|
1627
1802
|
},
|
|
1628
|
-
"
|
|
1803
|
+
"newVersion": {
|
|
1629
1804
|
"type": "string",
|
|
1630
|
-
"description": "
|
|
1805
|
+
"description": "Package version in the new SBOM."
|
|
1631
1806
|
},
|
|
1632
|
-
"
|
|
1807
|
+
"licenses": {
|
|
1633
1808
|
"type": "array",
|
|
1634
1809
|
"items": {
|
|
1635
|
-
"$ref": "#/$defs/Supported_Platform"
|
|
1636
|
-
},
|
|
1637
|
-
"description": "The set of supported platform targets."
|
|
1638
|
-
},
|
|
1639
|
-
"status": {
|
|
1640
|
-
"type": "string",
|
|
1641
|
-
"description": "The status. Example: 'loaded'."
|
|
1642
|
-
},
|
|
1643
|
-
"labels": {
|
|
1644
|
-
"type": "object",
|
|
1645
|
-
"additionalProperties": {
|
|
1646
1810
|
"type": "string"
|
|
1647
1811
|
},
|
|
1648
|
-
"description": "
|
|
1812
|
+
"description": "License identifiers for this package."
|
|
1649
1813
|
}
|
|
1650
1814
|
},
|
|
1651
1815
|
"examples": [
|
|
1652
1816
|
{
|
|
1653
|
-
"
|
|
1654
|
-
"
|
|
1655
|
-
"
|
|
1656
|
-
"
|
|
1657
|
-
"
|
|
1658
|
-
"
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
"
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
}
|
|
1667
|
-
],
|
|
1668
|
-
"status": "loaded"
|
|
1817
|
+
"$comment": "Software package diff keyed by purl (the SBOM case).",
|
|
1818
|
+
"purl": "pkg:npm/express@4.18.2",
|
|
1819
|
+
"name": "express",
|
|
1820
|
+
"state": "updated",
|
|
1821
|
+
"oldVersion": "4.18.1",
|
|
1822
|
+
"newVersion": "4.18.2"
|
|
1823
|
+
},
|
|
1824
|
+
{
|
|
1825
|
+
"$comment": "AI-model node diff keyed by identifier when no purl applies.",
|
|
1826
|
+
"identifier": "acme/llama-2-7b-chat-support",
|
|
1827
|
+
"name": "Llama-2-7b-chat (finetuned)",
|
|
1828
|
+
"state": "added",
|
|
1829
|
+
"newVersion": "1.2.0"
|
|
1669
1830
|
}
|
|
1670
1831
|
],
|
|
1671
|
-
"description": "
|
|
1672
|
-
"title": "
|
|
1832
|
+
"description": "Comparison of a single BOM node between two BOM versions, matched by purl (software) or identifier (models, datasets, hardware, crypto).",
|
|
1833
|
+
"title": "Package Diff"
|
|
1673
1834
|
},
|
|
1674
|
-
"
|
|
1835
|
+
"Scanner_Conflict": {
|
|
1675
1836
|
"type": "object",
|
|
1837
|
+
"unevaluatedProperties": false,
|
|
1838
|
+
"required": [
|
|
1839
|
+
"field",
|
|
1840
|
+
"values"
|
|
1841
|
+
],
|
|
1676
1842
|
"properties": {
|
|
1677
|
-
"
|
|
1678
|
-
"type": "string",
|
|
1679
|
-
"description": "The requirement identifier. Example: 'SV-238196'."
|
|
1680
|
-
},
|
|
1681
|
-
"title": {
|
|
1843
|
+
"field": {
|
|
1682
1844
|
"type": "string",
|
|
1683
|
-
"description": "The
|
|
1845
|
+
"description": "The field where the conflict occurs."
|
|
1684
1846
|
},
|
|
1685
|
-
"
|
|
1847
|
+
"values": {
|
|
1686
1848
|
"type": "array",
|
|
1687
|
-
"minItems": 1,
|
|
1688
1849
|
"items": {
|
|
1689
1850
|
"type": "object",
|
|
1690
1851
|
"unevaluatedProperties": false,
|
|
1691
1852
|
"required": [
|
|
1692
|
-
"
|
|
1693
|
-
"
|
|
1853
|
+
"sourceIndex",
|
|
1854
|
+
"sourceLabel",
|
|
1855
|
+
"value"
|
|
1694
1856
|
],
|
|
1695
1857
|
"properties": {
|
|
1696
|
-
"
|
|
1697
|
-
"type": "
|
|
1698
|
-
"
|
|
1858
|
+
"sourceIndex": {
|
|
1859
|
+
"type": "integer",
|
|
1860
|
+
"minimum": 0,
|
|
1861
|
+
"description": "Zero-based index into the sources array."
|
|
1699
1862
|
},
|
|
1700
|
-
"
|
|
1863
|
+
"sourceLabel": {
|
|
1701
1864
|
"type": "string",
|
|
1702
|
-
"description": "
|
|
1865
|
+
"description": "Human-readable label for the source."
|
|
1866
|
+
},
|
|
1867
|
+
"value": {
|
|
1868
|
+
"description": "The value reported by this source for the conflicting field."
|
|
1703
1869
|
}
|
|
1704
1870
|
}
|
|
1705
1871
|
},
|
|
1706
|
-
"description": "
|
|
1872
|
+
"description": "The conflicting values from each source."
|
|
1707
1873
|
},
|
|
1708
|
-
"
|
|
1709
|
-
"type": "
|
|
1874
|
+
"resolvedIndex": {
|
|
1875
|
+
"type": "integer",
|
|
1710
1876
|
"minimum": 0,
|
|
1711
|
-
"
|
|
1712
|
-
"description": "The impactfulness or severity (0.0 to 1.0)."
|
|
1713
|
-
},
|
|
1714
|
-
"refs": {
|
|
1715
|
-
"type": "array",
|
|
1716
|
-
"items": {
|
|
1717
|
-
"$ref": "#/$defs/Reference"
|
|
1718
|
-
},
|
|
1719
|
-
"description": "The set of references to external documents."
|
|
1720
|
-
},
|
|
1721
|
-
"tags": {
|
|
1722
|
-
"type": "object",
|
|
1723
|
-
"additionalProperties": true,
|
|
1724
|
-
"description": "A set of tags - usually metadata like CCI, STIG ID, severity."
|
|
1877
|
+
"description": "Index of the source whose value was chosen as the resolution."
|
|
1725
1878
|
},
|
|
1726
|
-
"
|
|
1879
|
+
"resolution": {
|
|
1880
|
+
"$ref": "#/$defs/Conflict_Resolution",
|
|
1881
|
+
"description": "How the conflict was resolved."
|
|
1882
|
+
}
|
|
1883
|
+
},
|
|
1884
|
+
"description": "A conflict between scanner results for the same requirement.",
|
|
1885
|
+
"title": "Scanner Conflict"
|
|
1886
|
+
},
|
|
1887
|
+
"Annotation": {
|
|
1888
|
+
"type": "object",
|
|
1889
|
+
"unevaluatedProperties": false,
|
|
1890
|
+
"required": [
|
|
1891
|
+
"label"
|
|
1892
|
+
],
|
|
1893
|
+
"properties": {
|
|
1894
|
+
"label": {
|
|
1727
1895
|
"type": "string",
|
|
1728
|
-
"description": "
|
|
1729
|
-
},
|
|
1730
|
-
"sourceLocation": {
|
|
1731
|
-
"$ref": "#/$defs/Source_Location",
|
|
1732
|
-
"description": "The explicit location of the requirement within the source code."
|
|
1896
|
+
"description": "Human-readable label for this annotation."
|
|
1733
1897
|
},
|
|
1734
|
-
"
|
|
1898
|
+
"description": {
|
|
1735
1899
|
"type": "string",
|
|
1736
|
-
"
|
|
1737
|
-
"enum": [
|
|
1738
|
-
"policy",
|
|
1739
|
-
"procedure",
|
|
1740
|
-
"technical",
|
|
1741
|
-
"management",
|
|
1742
|
-
"operational"
|
|
1743
|
-
],
|
|
1744
|
-
"description": "Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A categories. 'policy' = an authored governance statement; 'procedure' = a documented process; 'technical' = an enforced technical configuration; 'management' = a programmatic/management activity; 'operational' = a recurring operational activity (e.g. AT, IR, MA families). Optional: when omitted, consumers may infer heuristically from family/id but should not assume a default."
|
|
1900
|
+
"description": "Detailed description of the annotation."
|
|
1745
1901
|
},
|
|
1746
|
-
"
|
|
1747
|
-
"$ref": "#/$defs/
|
|
1748
|
-
"description": "
|
|
1902
|
+
"category": {
|
|
1903
|
+
"$ref": "#/$defs/Annotation_Category",
|
|
1904
|
+
"description": "The category of this annotation."
|
|
1749
1905
|
},
|
|
1750
|
-
"
|
|
1751
|
-
"type": "
|
|
1752
|
-
"
|
|
1753
|
-
"enum": [
|
|
1754
|
-
"required",
|
|
1755
|
-
"optional",
|
|
1756
|
-
"advisory"
|
|
1757
|
-
],
|
|
1758
|
-
"description": "Whether the requirement is mandatory within its baseline. Distinct from severity (risk weight) and status (lifecycle state). Maps 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{}). Optional: when omitted, consumers should treat the requirement as 'required' by convention."
|
|
1906
|
+
"needsConfirmation": {
|
|
1907
|
+
"type": "boolean",
|
|
1908
|
+
"description": "Whether this annotation requires human confirmation before acting on it."
|
|
1759
1909
|
}
|
|
1760
1910
|
},
|
|
1761
|
-
"
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1911
|
+
"description": "An annotation attached to a comparison, providing context or action items.",
|
|
1912
|
+
"title": "Annotation"
|
|
1913
|
+
},
|
|
1914
|
+
"Requirement_Diff": {
|
|
1915
|
+
"type": "object",
|
|
1916
|
+
"unevaluatedProperties": false,
|
|
1917
|
+
"required": [
|
|
1918
|
+
"id",
|
|
1919
|
+
"state",
|
|
1920
|
+
"changeReasons",
|
|
1921
|
+
"before",
|
|
1922
|
+
"after",
|
|
1923
|
+
"fieldChanges"
|
|
1924
|
+
],
|
|
1925
|
+
"properties": {
|
|
1926
|
+
"id": {
|
|
1927
|
+
"type": "string",
|
|
1928
|
+
"description": "The canonical requirement identifier used for this diff."
|
|
1929
|
+
},
|
|
1930
|
+
"state": {
|
|
1931
|
+
"$ref": "#/$defs/Requirement_State",
|
|
1932
|
+
"description": "The state of this requirement in the comparison."
|
|
1933
|
+
},
|
|
1934
|
+
"changeReasons": {
|
|
1935
|
+
"type": "array",
|
|
1936
|
+
"items": {
|
|
1937
|
+
"$ref": "#/$defs/Change_Reason"
|
|
1775
1938
|
},
|
|
1776
|
-
"
|
|
1939
|
+
"description": "The reasons for the state change."
|
|
1940
|
+
},
|
|
1941
|
+
"before": {
|
|
1942
|
+
"oneOf": [
|
|
1777
1943
|
{
|
|
1778
|
-
"
|
|
1944
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.5.0#/$defs/Evaluated_Requirement"
|
|
1945
|
+
},
|
|
1946
|
+
{
|
|
1947
|
+
"type": "null"
|
|
1779
1948
|
}
|
|
1780
1949
|
],
|
|
1781
|
-
"
|
|
1950
|
+
"description": "The requirement as it appeared in the old/reference source. Null when state is 'new'."
|
|
1951
|
+
},
|
|
1952
|
+
"after": {
|
|
1953
|
+
"oneOf": [
|
|
1782
1954
|
{
|
|
1783
|
-
"
|
|
1784
|
-
"data": "Use of a complex password helps to increase the time and resources required to compromise the password."
|
|
1955
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.5.0#/$defs/Evaluated_Requirement"
|
|
1785
1956
|
},
|
|
1786
1957
|
{
|
|
1787
|
-
"
|
|
1788
|
-
"data": "Verify the value of 'minlen' in /etc/security/pwquality.conf."
|
|
1958
|
+
"type": "null"
|
|
1789
1959
|
}
|
|
1790
|
-
]
|
|
1960
|
+
],
|
|
1961
|
+
"description": "The requirement as it appeared in the new source. Null when state is 'absent'."
|
|
1791
1962
|
},
|
|
1792
|
-
{
|
|
1793
|
-
"
|
|
1794
|
-
"
|
|
1795
|
-
|
|
1796
|
-
"impact": 0.7,
|
|
1797
|
-
"tags": {
|
|
1798
|
-
"nist": [
|
|
1799
|
-
"AC-3"
|
|
1800
|
-
],
|
|
1801
|
-
"severity": "high"
|
|
1963
|
+
"fieldChanges": {
|
|
1964
|
+
"type": "array",
|
|
1965
|
+
"items": {
|
|
1966
|
+
"$ref": "#/$defs/Field_Change"
|
|
1802
1967
|
},
|
|
1803
|
-
"
|
|
1804
|
-
{
|
|
1805
|
-
"label": "default",
|
|
1806
|
-
"data": "The information system enforces approved authorizations for logical access to information and system resources."
|
|
1807
|
-
}
|
|
1808
|
-
],
|
|
1809
|
-
"code": "control 'AC-3' do; impact 0.7; end",
|
|
1810
|
-
"controlType": "technical",
|
|
1811
|
-
"verificationMethod": "automated",
|
|
1812
|
-
"applicability": "required"
|
|
1968
|
+
"description": "Detailed field-level changes between the before and after versions."
|
|
1813
1969
|
},
|
|
1814
|
-
{
|
|
1815
|
-
"
|
|
1816
|
-
"
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
"
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1970
|
+
"oldId": {
|
|
1971
|
+
"type": "string",
|
|
1972
|
+
"description": "The requirement ID in the old source, if different from the canonical id."
|
|
1973
|
+
},
|
|
1974
|
+
"newId": {
|
|
1975
|
+
"type": "string",
|
|
1976
|
+
"description": "The requirement ID in the new source, if different from the canonical id."
|
|
1977
|
+
},
|
|
1978
|
+
"title": {
|
|
1979
|
+
"type": "string",
|
|
1980
|
+
"description": "The requirement title for human readability."
|
|
1981
|
+
},
|
|
1982
|
+
"oldEffectiveStatus": {
|
|
1983
|
+
"type": "string",
|
|
1984
|
+
"description": "The effective status of the requirement in the old source."
|
|
1985
|
+
},
|
|
1986
|
+
"newEffectiveStatus": {
|
|
1987
|
+
"type": "string",
|
|
1988
|
+
"description": "The effective status of the requirement in the new source."
|
|
1989
|
+
},
|
|
1990
|
+
"oldImpact": {
|
|
1991
|
+
"type": "number",
|
|
1992
|
+
"minimum": 0,
|
|
1993
|
+
"maximum": 1,
|
|
1994
|
+
"description": "The impact score of the requirement in the old source (0-1)."
|
|
1995
|
+
},
|
|
1996
|
+
"newImpact": {
|
|
1997
|
+
"type": "number",
|
|
1998
|
+
"minimum": 0,
|
|
1999
|
+
"maximum": 1,
|
|
2000
|
+
"description": "The impact score of the requirement in the new source (0-1)."
|
|
2001
|
+
},
|
|
2002
|
+
"matchStrategy": {
|
|
2003
|
+
"$ref": "#/$defs/Match_Strategy",
|
|
2004
|
+
"description": "The strategy that was used to match this requirement across sources."
|
|
2005
|
+
},
|
|
2006
|
+
"matchConfidence": {
|
|
2007
|
+
"type": "number",
|
|
2008
|
+
"minimum": 0,
|
|
2009
|
+
"maximum": 1,
|
|
2010
|
+
"description": "Confidence score for the match (0-1)."
|
|
2011
|
+
},
|
|
2012
|
+
"matchManual": {
|
|
2013
|
+
"type": "boolean",
|
|
2014
|
+
"description": "Whether the match was manually confirmed by a human."
|
|
2015
|
+
},
|
|
2016
|
+
"annotationIds": {
|
|
2017
|
+
"type": "array",
|
|
2018
|
+
"items": {
|
|
2019
|
+
"type": "string"
|
|
1823
2020
|
},
|
|
1824
|
-
"
|
|
1825
|
-
{
|
|
1826
|
-
"label": "default",
|
|
1827
|
-
"data": "The Cyber Security Plan documents the system, its boundary, and its components."
|
|
1828
|
-
}
|
|
1829
|
-
],
|
|
1830
|
-
"controlType": "policy",
|
|
1831
|
-
"verificationMethod": "manual-by-design",
|
|
1832
|
-
"applicability": "required"
|
|
2021
|
+
"description": "IDs of annotations attached to this requirement diff."
|
|
1833
2022
|
},
|
|
1834
|
-
{
|
|
1835
|
-
"
|
|
1836
|
-
"
|
|
1837
|
-
"
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
2023
|
+
"sourceIndex": {
|
|
2024
|
+
"type": "integer",
|
|
2025
|
+
"minimum": 0,
|
|
2026
|
+
"description": "Index into the sources array for multi-source comparisons."
|
|
2027
|
+
},
|
|
2028
|
+
"conflicts": {
|
|
2029
|
+
"type": "array",
|
|
2030
|
+
"items": {
|
|
2031
|
+
"$ref": "#/$defs/Scanner_Conflict"
|
|
1841
2032
|
},
|
|
1842
|
-
"
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
"
|
|
1853
|
-
"applicability": "advisory"
|
|
2033
|
+
"description": "Conflicts between multiple scanner results for this requirement."
|
|
2034
|
+
},
|
|
2035
|
+
"beforeSensitive": {
|
|
2036
|
+
"type": "object",
|
|
2037
|
+
"additionalProperties": true,
|
|
2038
|
+
"description": "Sensitive data from the old source that should not be included in the main before snapshot."
|
|
2039
|
+
},
|
|
2040
|
+
"afterSensitive": {
|
|
2041
|
+
"type": "object",
|
|
2042
|
+
"additionalProperties": true,
|
|
2043
|
+
"description": "Sensitive data from the new source that should not be included in the main after snapshot."
|
|
1854
2044
|
}
|
|
1855
|
-
|
|
1856
|
-
"description": "
|
|
1857
|
-
"title": "Requirement
|
|
1858
|
-
},
|
|
1859
|
-
"Verification_Method_Enum": {
|
|
1860
|
-
"type": "string",
|
|
1861
|
-
"enum": [
|
|
1862
|
-
"automated",
|
|
1863
|
-
"manual-by-design",
|
|
1864
|
-
"manual-pending-automation",
|
|
1865
|
-
"hybrid"
|
|
1866
|
-
],
|
|
1867
|
-
"description": "How a requirement is intended to be verified. Disambiguates the two cases that null 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and runs without operator action; 'hybrid' = part automated, part manual. Named '_Enum' to disambiguate from the unrelated Verification_Method DID-context struct.",
|
|
1868
|
-
"title": "Verification Method Enum"
|
|
1869
|
-
},
|
|
1870
|
-
"Severity": {
|
|
1871
|
-
"type": "string",
|
|
1872
|
-
"enum": [
|
|
1873
|
-
"critical",
|
|
1874
|
-
"high",
|
|
1875
|
-
"medium",
|
|
1876
|
-
"low",
|
|
1877
|
-
"informational"
|
|
1878
|
-
],
|
|
1879
|
-
"description": "Severity rating for a requirement. Typically derived from the numeric impact score.",
|
|
1880
|
-
"title": "Severity"
|
|
1881
|
-
},
|
|
1882
|
-
"Cloud_Provider": {
|
|
1883
|
-
"type": [
|
|
1884
|
-
"string",
|
|
1885
|
-
"null"
|
|
1886
|
-
],
|
|
1887
|
-
"enum": [
|
|
1888
|
-
"aws",
|
|
1889
|
-
"azure",
|
|
1890
|
-
"gcp",
|
|
1891
|
-
"oci",
|
|
1892
|
-
"other",
|
|
1893
|
-
null
|
|
1894
|
-
],
|
|
1895
|
-
"description": "Cloud service provider identifier.",
|
|
1896
|
-
"title": "Cloud Provider"
|
|
2045
|
+
},
|
|
2046
|
+
"description": "A comparison of a single requirement between sources, including state, changes, and full before/after snapshots.",
|
|
2047
|
+
"title": "Requirement Diff"
|
|
1897
2048
|
}
|
|
1898
2049
|
}
|
|
1899
2050
|
},
|
|
1900
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
2051
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0": {
|
|
1901
2052
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1902
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
2053
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0",
|
|
1903
2054
|
"title": "HDF Extension Primitives",
|
|
1904
2055
|
"description": "Extension types for waivers, attestations, generators, and integrity.",
|
|
1905
2056
|
"$defs": {
|
|
@@ -1926,16 +2077,23 @@
|
|
|
1926
2077
|
}
|
|
1927
2078
|
],
|
|
1928
2079
|
"properties": {
|
|
2080
|
+
"externalReferences": {
|
|
2081
|
+
"type": "array",
|
|
2082
|
+
"items": {
|
|
2083
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
|
|
2084
|
+
},
|
|
2085
|
+
"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
|
+
},
|
|
1929
2087
|
"type": {
|
|
1930
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2088
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Override_Type",
|
|
1931
2089
|
"description": "The type of override applied to this requirement."
|
|
1932
2090
|
},
|
|
1933
2091
|
"status": {
|
|
1934
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2092
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
|
|
1935
2093
|
"description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
|
|
1936
2094
|
},
|
|
1937
2095
|
"impact": {
|
|
1938
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2096
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Impact_Override",
|
|
1939
2097
|
"description": "Override to the requirement's impact score. At least one of status or impact must be set."
|
|
1940
2098
|
},
|
|
1941
2099
|
"reason": {
|
|
@@ -1943,7 +2101,7 @@
|
|
|
1943
2101
|
"description": "Explanation for why this override was applied."
|
|
1944
2102
|
},
|
|
1945
2103
|
"appliedBy": {
|
|
1946
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2104
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
|
|
1947
2105
|
"description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
|
|
1948
2106
|
},
|
|
1949
2107
|
"appliedAt": {
|
|
@@ -1957,27 +2115,27 @@
|
|
|
1957
2115
|
"description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
|
|
1958
2116
|
},
|
|
1959
2117
|
"signature": {
|
|
1960
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2118
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Signature",
|
|
1961
2119
|
"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."
|
|
1962
2120
|
},
|
|
1963
2121
|
"evidence": {
|
|
1964
2122
|
"type": "array",
|
|
1965
2123
|
"items": {
|
|
1966
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2124
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
|
|
1967
2125
|
},
|
|
1968
2126
|
"description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
|
|
1969
2127
|
},
|
|
1970
2128
|
"previousChecksum": {
|
|
1971
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2129
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
|
|
1972
2130
|
"description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
|
|
1973
2131
|
},
|
|
1974
2132
|
"cvss": {
|
|
1975
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2133
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0#/$defs/Cvss",
|
|
1976
2134
|
"$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.",
|
|
1977
2135
|
"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."
|
|
1978
2136
|
},
|
|
1979
2137
|
"justification": {
|
|
1980
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2138
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Justification",
|
|
1981
2139
|
"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."
|
|
1982
2140
|
}
|
|
1983
2141
|
},
|
|
@@ -2006,6 +2164,34 @@
|
|
|
2006
2164
|
"appliedAt": "2026-04-14T10:00:00Z",
|
|
2007
2165
|
"expiresAt": "2026-10-14T00:00:00Z"
|
|
2008
2166
|
},
|
|
2167
|
+
{
|
|
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
|
+
"type": "riskAdjustment",
|
|
2170
|
+
"impact": {
|
|
2171
|
+
"value": 0.9
|
|
2172
|
+
},
|
|
2173
|
+
"reason": "CVE-2021-44228 actively exploited in the wild per STIX threat intelligence",
|
|
2174
|
+
"appliedBy": {
|
|
2175
|
+
"identifier": "secops@agency.gov",
|
|
2176
|
+
"type": "email"
|
|
2177
|
+
},
|
|
2178
|
+
"appliedAt": "2026-07-27T00:00:00Z",
|
|
2179
|
+
"expiresAt": "2026-10-25T00:00:00Z",
|
|
2180
|
+
"externalReferences": [
|
|
2181
|
+
{
|
|
2182
|
+
"sourceName": "stix",
|
|
2183
|
+
"externalId": "sighting--a1b2c3d4-0000-4a2b-9c3d-000000000002",
|
|
2184
|
+
"kind": "threat-intel",
|
|
2185
|
+
"rel": "evidence",
|
|
2186
|
+
"document": {
|
|
2187
|
+
"type": "sighting",
|
|
2188
|
+
"spec_version": "2.1",
|
|
2189
|
+
"id": "sighting--a1b2c3d4-0000-4a2b-9c3d-000000000002",
|
|
2190
|
+
"sighting_of_ref": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001"
|
|
2191
|
+
}
|
|
2192
|
+
}
|
|
2193
|
+
]
|
|
2194
|
+
},
|
|
2009
2195
|
{
|
|
2010
2196
|
"type": "falsePositive",
|
|
2011
2197
|
"status": "passed",
|
|
@@ -2065,7 +2251,8 @@
|
|
|
2065
2251
|
"type",
|
|
2066
2252
|
"explanation",
|
|
2067
2253
|
"appliedBy",
|
|
2068
|
-
"appliedAt"
|
|
2254
|
+
"appliedAt",
|
|
2255
|
+
"expiresAt"
|
|
2069
2256
|
],
|
|
2070
2257
|
"properties": {
|
|
2071
2258
|
"type": {
|
|
@@ -2084,7 +2271,7 @@
|
|
|
2084
2271
|
"description": "Detailed explanation of the plan, including what actions will be taken."
|
|
2085
2272
|
},
|
|
2086
2273
|
"appliedBy": {
|
|
2087
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2274
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
|
|
2088
2275
|
"description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
|
|
2089
2276
|
},
|
|
2090
2277
|
"appliedAt": {
|
|
@@ -2095,28 +2282,28 @@
|
|
|
2095
2282
|
"expiresAt": {
|
|
2096
2283
|
"type": "string",
|
|
2097
2284
|
"format": "date-time",
|
|
2098
|
-
"description": "
|
|
2285
|
+
"description": "Required deadline for this POA&M. A POA&M is a time-boxed acceptance of an open finding; without a deadline it lets a failing requirement duck remediation indefinitely. Source a real date (e.g. a remediation target or vendor-fix date) — never a wall-clock default. ISO 8601 format."
|
|
2099
2286
|
},
|
|
2100
2287
|
"milestones": {
|
|
2101
2288
|
"type": "array",
|
|
2102
2289
|
"items": {
|
|
2103
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2290
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Milestone"
|
|
2104
2291
|
},
|
|
2105
2292
|
"description": "Optional array of milestones tracking progress toward completion."
|
|
2106
2293
|
},
|
|
2107
2294
|
"signature": {
|
|
2108
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2295
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Signature",
|
|
2109
2296
|
"description": "Optional digital signature for enhanced trust and non-repudiation."
|
|
2110
2297
|
},
|
|
2111
2298
|
"evidence": {
|
|
2112
2299
|
"type": "array",
|
|
2113
2300
|
"items": {
|
|
2114
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2301
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
|
|
2115
2302
|
},
|
|
2116
2303
|
"description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
|
|
2117
2304
|
},
|
|
2118
2305
|
"previousChecksum": {
|
|
2119
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2306
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
|
|
2120
2307
|
"description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
|
|
2121
2308
|
}
|
|
2122
2309
|
},
|
|
@@ -2129,6 +2316,7 @@
|
|
|
2129
2316
|
"type": "email"
|
|
2130
2317
|
},
|
|
2131
2318
|
"appliedAt": "2025-12-01T09:00:00Z",
|
|
2319
|
+
"expiresAt": "2099-12-31T00:00:00Z",
|
|
2132
2320
|
"milestones": [
|
|
2133
2321
|
{
|
|
2134
2322
|
"description": "Update base Docker image to use OpenSSL 3.0.x",
|
|
@@ -2161,7 +2349,7 @@
|
|
|
2161
2349
|
"description": "Automated POA&M creation from vulnerability scan"
|
|
2162
2350
|
},
|
|
2163
2351
|
"appliedAt": "2025-11-28T14:00:00Z",
|
|
2164
|
-
"expiresAt": "
|
|
2352
|
+
"expiresAt": "2099-12-31T00:00:00Z",
|
|
2165
2353
|
"milestones": [
|
|
2166
2354
|
{
|
|
2167
2355
|
"description": "Configure firewall rules to restrict database access to management VLAN",
|
|
@@ -2196,7 +2384,7 @@
|
|
|
2196
2384
|
"type": "email"
|
|
2197
2385
|
},
|
|
2198
2386
|
"appliedAt": "2025-12-05T10:00:00Z",
|
|
2199
|
-
"expiresAt": "
|
|
2387
|
+
"expiresAt": "2099-12-31T00:00:00Z",
|
|
2200
2388
|
"milestones": [
|
|
2201
2389
|
{
|
|
2202
2390
|
"description": "Complete migration to replacement system",
|
|
@@ -2248,7 +2436,8 @@
|
|
|
2248
2436
|
},
|
|
2249
2437
|
"format": {
|
|
2250
2438
|
"type": "string",
|
|
2251
|
-
"description": "The
|
|
2439
|
+
"description": "The named format of the source data, when it follows a recognized format specification with its own identity: an interchange format emitted by many tools ('SARIF', 'XCCDF', 'OSCAL') or one of several named output formats a single tool produces ('FVDL', 'exec-json', 'FPF'). Never a serialization structure — 'JSON', 'XML', and 'CSV' are encodings, not formats. Omit for a tool's native output: an absent format means the tool's own shape, and data arriving as a named format is converted by that format's converter, which sets this field alongside the producing tool's name.",
|
|
2440
|
+
"$comment": "Format-not-serialization rule decided 2026-08-01; bare JSON/XML/CSV labels were swept from the converters at the same time."
|
|
2252
2441
|
}
|
|
2253
2442
|
},
|
|
2254
2443
|
"description": "The security tool that produced the assessment data represented in this HDF file. Aligns with SARIF, OSCAL, and CycloneDX terminology.",
|
|
@@ -2267,7 +2456,7 @@
|
|
|
2267
2456
|
},
|
|
2268
2457
|
"properties": {
|
|
2269
2458
|
"algorithm": {
|
|
2270
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2459
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Hash_Algorithm",
|
|
2271
2460
|
"description": "The hash algorithm used for the checksum."
|
|
2272
2461
|
},
|
|
2273
2462
|
"checksum": {
|
|
@@ -2300,9 +2489,9 @@
|
|
|
2300
2489
|
}
|
|
2301
2490
|
}
|
|
2302
2491
|
},
|
|
2303
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2492
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0": {
|
|
2304
2493
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2305
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2494
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0",
|
|
2306
2495
|
"title": "HDF Amendment Primitives",
|
|
2307
2496
|
"description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
|
|
2308
2497
|
"$defs": {
|
|
@@ -2410,6 +2599,13 @@
|
|
|
2410
2599
|
]
|
|
2411
2600
|
},
|
|
2412
2601
|
"properties": {
|
|
2602
|
+
"externalReferences": {
|
|
2603
|
+
"type": "array",
|
|
2604
|
+
"items": {
|
|
2605
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
|
|
2606
|
+
},
|
|
2607
|
+
"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
|
+
},
|
|
2413
2609
|
"type": {
|
|
2414
2610
|
"$ref": "#/$defs/Override_Type",
|
|
2415
2611
|
"description": "The type of amendment."
|
|
@@ -2423,7 +2619,7 @@
|
|
|
2423
2619
|
"description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
|
|
2424
2620
|
},
|
|
2425
2621
|
"status": {
|
|
2426
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2622
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
|
|
2427
2623
|
"description": "The new status this amendment sets. Optional when only impact is being overridden."
|
|
2428
2624
|
},
|
|
2429
2625
|
"impact": {
|
|
@@ -2435,7 +2631,7 @@
|
|
|
2435
2631
|
"description": "Justification for this amendment."
|
|
2436
2632
|
},
|
|
2437
2633
|
"appliedBy": {
|
|
2438
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2634
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
|
|
2439
2635
|
"description": "Identity of who applied this amendment."
|
|
2440
2636
|
},
|
|
2441
2637
|
"appliedAt": {
|
|
@@ -2451,20 +2647,20 @@
|
|
|
2451
2647
|
"evidence": {
|
|
2452
2648
|
"type": "array",
|
|
2453
2649
|
"items": {
|
|
2454
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2650
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
|
|
2455
2651
|
},
|
|
2456
2652
|
"description": "Supporting evidence (screenshots, logs, URLs, documents)."
|
|
2457
2653
|
},
|
|
2458
2654
|
"signature": {
|
|
2459
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2655
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Signature",
|
|
2460
2656
|
"description": "Digital signature for non-repudiation."
|
|
2461
2657
|
},
|
|
2462
2658
|
"previousChecksum": {
|
|
2463
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2659
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
|
|
2464
2660
|
"description": "Checksum of the prior amendment in the chain. Creates a tamper-evident linked list. Null for the first amendment."
|
|
2465
2661
|
},
|
|
2466
2662
|
"cvss": {
|
|
2467
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2663
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0#/$defs/Cvss",
|
|
2468
2664
|
"$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.",
|
|
2469
2665
|
"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."
|
|
2470
2666
|
},
|
|
@@ -2475,7 +2671,7 @@
|
|
|
2475
2671
|
"milestones": {
|
|
2476
2672
|
"type": "array",
|
|
2477
2673
|
"items": {
|
|
2478
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2674
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Milestone"
|
|
2479
2675
|
},
|
|
2480
2676
|
"description": "Remediation milestones (primarily for POA&M type amendments)."
|
|
2481
2677
|
},
|
|
@@ -2492,7 +2688,7 @@
|
|
|
2492
2688
|
"affectedPackages": {
|
|
2493
2689
|
"type": "array",
|
|
2494
2690
|
"items": {
|
|
2495
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
2691
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0#/$defs/Affected_Package"
|
|
2496
2692
|
},
|
|
2497
2693
|
"description": "Software packages this amendment is scoped to, distinct from componentRef (which scopes to an HDF-internal Component by UUID). Use when the source amendment format references packages by purl/cpe/name+version — e.g., VEX `affects[]` / `products[]`, OSCAL POA&M `subjects[]`, FedRAMP component-aware amendments. Symmetric with Evaluated_Requirement.affectedPackages, which scopes findings to the same package vocabulary. When omitted, the amendment applies system-wide (or only to componentRef when that is set)."
|
|
2498
2694
|
}
|
|
@@ -2625,9 +2821,9 @@
|
|
|
2625
2821
|
}
|
|
2626
2822
|
}
|
|
2627
2823
|
},
|
|
2628
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2824
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0": {
|
|
2629
2825
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2630
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2826
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0",
|
|
2631
2827
|
"title": "HDF Result Primitives",
|
|
2632
2828
|
"description": "Types for representing assessment results and statuses.",
|
|
2633
2829
|
"$defs": {
|
|
@@ -2758,9 +2954,9 @@
|
|
|
2758
2954
|
}
|
|
2759
2955
|
}
|
|
2760
2956
|
},
|
|
2761
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2957
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0": {
|
|
2762
2958
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2763
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2959
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0",
|
|
2764
2960
|
"title": "HDF CVSS Primitives",
|
|
2765
2961
|
"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).",
|
|
2766
2962
|
"$defs": {
|
|
@@ -2962,9 +3158,9 @@
|
|
|
2962
3158
|
}
|
|
2963
3159
|
}
|
|
2964
3160
|
},
|
|
2965
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
3161
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0": {
|
|
2966
3162
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2967
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
3163
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0",
|
|
2968
3164
|
"title": "HDF Affected Package Primitives",
|
|
2969
3165
|
"description": "Types for representing the software package(s) affected by a vulnerability finding.",
|
|
2970
3166
|
"$defs": {
|
|
@@ -3077,9 +3273,9 @@
|
|
|
3077
3273
|
}
|
|
3078
3274
|
}
|
|
3079
3275
|
},
|
|
3080
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
3276
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0": {
|
|
3081
3277
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3082
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
3278
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0",
|
|
3083
3279
|
"title": "HDF Component Primitives",
|
|
3084
3280
|
"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).",
|
|
3085
3281
|
"$defs": {
|
|
@@ -3125,7 +3321,7 @@
|
|
|
3125
3321
|
"description": "Description of this component's role or purpose."
|
|
3126
3322
|
},
|
|
3127
3323
|
"owner": {
|
|
3128
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3324
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
|
|
3129
3325
|
"description": "Team or individual responsible for this component. Enables per-component ownership when different teams manage different parts of a system."
|
|
3130
3326
|
},
|
|
3131
3327
|
"externalIds": {
|
|
@@ -3145,14 +3341,14 @@
|
|
|
3145
3341
|
"boms": {
|
|
3146
3342
|
"type": "array",
|
|
3147
3343
|
"items": {
|
|
3148
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
3344
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.5.0#/$defs/Bom"
|
|
3149
3345
|
},
|
|
3150
3346
|
"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."
|
|
3151
3347
|
},
|
|
3152
3348
|
"integrity": {
|
|
3153
3349
|
"type": "array",
|
|
3154
3350
|
"items": {
|
|
3155
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3351
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum"
|
|
3156
3352
|
},
|
|
3157
3353
|
"description": "Cryptographic integrity of this component's underlying artifact — model weights or shards, dataset archive, container image, or package bytes. An array supports multi-file/sharded artifacts. This 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). Distinct from BOM-document integrity (Bom.hashes[]) and from the document tamper-evidence Integrity type."
|
|
3158
3354
|
},
|
|
@@ -3166,12 +3362,12 @@
|
|
|
3166
3362
|
"inputOverrides": {
|
|
3167
3363
|
"type": "array",
|
|
3168
3364
|
"items": {
|
|
3169
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
3365
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0#/$defs/Input_Override"
|
|
3170
3366
|
},
|
|
3171
3367
|
"description": "System-specific overrides for baseline input values."
|
|
3172
3368
|
},
|
|
3173
3369
|
"targetSelector": {
|
|
3174
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
3370
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0#/$defs/Target_Selector",
|
|
3175
3371
|
"description": "Label selector to match targets belonging to this component during migration. Targets with matching labels are automatically included."
|
|
3176
3372
|
}
|
|
3177
3373
|
},
|
|
@@ -3455,7 +3651,7 @@
|
|
|
3455
3651
|
"const": "cloudAccount"
|
|
3456
3652
|
},
|
|
3457
3653
|
"provider": {
|
|
3458
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3654
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Cloud_Provider",
|
|
3459
3655
|
"description": "Cloud provider."
|
|
3460
3656
|
},
|
|
3461
3657
|
"accountId": {
|
|
@@ -3494,7 +3690,7 @@
|
|
|
3494
3690
|
"const": "cloudResource"
|
|
3495
3691
|
},
|
|
3496
3692
|
"provider": {
|
|
3497
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3693
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Cloud_Provider",
|
|
3498
3694
|
"description": "Cloud provider."
|
|
3499
3695
|
},
|
|
3500
3696
|
"resourceType": {
|
|
@@ -3793,9 +3989,9 @@
|
|
|
3793
3989
|
}
|
|
3794
3990
|
}
|
|
3795
3991
|
},
|
|
3796
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
3992
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.5.0": {
|
|
3797
3993
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3798
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
3994
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.5.0",
|
|
3799
3995
|
"title": "HDF BOM Primitives",
|
|
3800
3996
|
"description": "Generalized Bill-of-Materials / manifest representation. One 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). Subject identity (name, version, componentId) is inherited from the host component or system — the BOM never re-owns it. See ADR-0001.",
|
|
3801
3997
|
"$defs": {
|
|
@@ -3851,7 +4047,7 @@
|
|
|
3851
4047
|
"hashes": {
|
|
3852
4048
|
"type": "array",
|
|
3853
4049
|
"items": {
|
|
3854
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4050
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum"
|
|
3855
4051
|
},
|
|
3856
4052
|
"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."
|
|
3857
4053
|
},
|
|
@@ -4266,9 +4462,9 @@
|
|
|
4266
4462
|
}
|
|
4267
4463
|
}
|
|
4268
4464
|
},
|
|
4269
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
4465
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0": {
|
|
4270
4466
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4271
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
4467
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0",
|
|
4272
4468
|
"title": "HDF System Primitives",
|
|
4273
4469
|
"description": "Types for describing system architecture, authorization boundaries, and components.",
|
|
4274
4470
|
"$defs": {
|
|
@@ -4319,7 +4515,7 @@
|
|
|
4319
4515
|
"description": "Rationale for why this override is needed."
|
|
4320
4516
|
},
|
|
4321
4517
|
"approvedBy": {
|
|
4322
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4518
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
|
|
4323
4519
|
"description": "Identity of the person or system that approved this override."
|
|
4324
4520
|
}
|
|
4325
4521
|
},
|
|
@@ -4401,15 +4597,22 @@
|
|
|
4401
4597
|
}
|
|
4402
4598
|
}
|
|
4403
4599
|
},
|
|
4404
|
-
"https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.
|
|
4600
|
+
"https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.5.0": {
|
|
4405
4601
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4406
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.
|
|
4602
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.5.0",
|
|
4407
4603
|
"type": "object",
|
|
4408
4604
|
"unevaluatedProperties": false,
|
|
4409
4605
|
"required": [
|
|
4410
4606
|
"baselines"
|
|
4411
4607
|
],
|
|
4412
4608
|
"properties": {
|
|
4609
|
+
"externalReferences": {
|
|
4610
|
+
"type": "array",
|
|
4611
|
+
"items": {
|
|
4612
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
|
|
4613
|
+
},
|
|
4614
|
+
"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
|
+
},
|
|
4413
4616
|
"id": {
|
|
4414
4617
|
"type": "string",
|
|
4415
4618
|
"format": "uuid",
|
|
@@ -4423,7 +4626,7 @@
|
|
|
4423
4626
|
"components": {
|
|
4424
4627
|
"type": "array",
|
|
4425
4628
|
"items": {
|
|
4426
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
4629
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.5.0#/$defs/Component"
|
|
4427
4630
|
},
|
|
4428
4631
|
"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."
|
|
4429
4632
|
},
|
|
@@ -4435,27 +4638,27 @@
|
|
|
4435
4638
|
"description": "Information on the baselines that were evaluated, including findings."
|
|
4436
4639
|
},
|
|
4437
4640
|
"statistics": {
|
|
4438
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
4641
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.5.0#/$defs/Statistics",
|
|
4439
4642
|
"description": "Statistics for the assessment run, including duration and result counts."
|
|
4440
4643
|
},
|
|
4441
4644
|
"generator": {
|
|
4442
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
4645
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Generator",
|
|
4443
4646
|
"description": "Information about the tool that generated this file."
|
|
4444
4647
|
},
|
|
4445
4648
|
"tool": {
|
|
4446
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
4649
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Tool",
|
|
4447
4650
|
"description": "The security tool that produced the assessment data in this file."
|
|
4448
4651
|
},
|
|
4449
4652
|
"integrity": {
|
|
4450
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
4653
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Integrity",
|
|
4451
4654
|
"description": "Cryptographic integrity information for verifying this file."
|
|
4452
4655
|
},
|
|
4453
4656
|
"runner": {
|
|
4454
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
4657
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.5.0#/$defs/Runner",
|
|
4455
4658
|
"description": "Information about the test execution environment where the security tool was run. Distinct from targets (what is being tested)."
|
|
4456
4659
|
},
|
|
4457
4660
|
"remediation": {
|
|
4458
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4661
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Remediation",
|
|
4459
4662
|
"description": "Optional reference to automated remediation resources (Ansible playbooks, Terraform scripts, etc.) for fixing failing requirements found in this assessment."
|
|
4460
4663
|
},
|
|
4461
4664
|
"systemRef": {
|
|
@@ -4468,6 +4671,10 @@
|
|
|
4468
4671
|
"format": "uri-reference",
|
|
4469
4672
|
"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."
|
|
4470
4673
|
},
|
|
4674
|
+
"derivation": {
|
|
4675
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.5.0#/$defs/Derivation",
|
|
4676
|
+
"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
|
+
},
|
|
4471
4678
|
"extensions": {
|
|
4472
4679
|
"type": "object",
|
|
4473
4680
|
"additionalProperties": true,
|
|
@@ -4563,14 +4770,14 @@
|
|
|
4563
4770
|
],
|
|
4564
4771
|
"allOf": [
|
|
4565
4772
|
{
|
|
4566
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4773
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Baseline_Metadata"
|
|
4567
4774
|
}
|
|
4568
4775
|
],
|
|
4569
4776
|
"properties": {
|
|
4570
4777
|
"depends": {
|
|
4571
4778
|
"type": "array",
|
|
4572
4779
|
"items": {
|
|
4573
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4780
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Dependency"
|
|
4574
4781
|
},
|
|
4575
4782
|
"description": "The set of dependencies this baseline depends on."
|
|
4576
4783
|
},
|
|
@@ -4583,15 +4790,15 @@
|
|
|
4583
4790
|
"description": "The description - should be more detailed than the summary."
|
|
4584
4791
|
},
|
|
4585
4792
|
"integrity": {
|
|
4586
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
4793
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Integrity",
|
|
4587
4794
|
"description": "Cryptographic integrity information for verifying this baseline has not been tampered with."
|
|
4588
4795
|
},
|
|
4589
4796
|
"originalChecksum": {
|
|
4590
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4797
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
|
|
4591
4798
|
"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."
|
|
4592
4799
|
},
|
|
4593
4800
|
"resultsChecksum": {
|
|
4594
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4801
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
|
|
4595
4802
|
"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."
|
|
4596
4803
|
},
|
|
4597
4804
|
"statusMessage": {
|
|
@@ -4609,14 +4816,14 @@
|
|
|
4609
4816
|
"groups": {
|
|
4610
4817
|
"type": "array",
|
|
4611
4818
|
"items": {
|
|
4612
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4819
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Requirement_Group"
|
|
4613
4820
|
},
|
|
4614
4821
|
"description": "A set of descriptions for the requirement groups."
|
|
4615
4822
|
},
|
|
4616
4823
|
"inputs": {
|
|
4617
4824
|
"type": "array",
|
|
4618
4825
|
"items": {
|
|
4619
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
4826
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.5.0#/$defs/Input"
|
|
4620
4827
|
},
|
|
4621
4828
|
"description": "Typed inputs used to parameterize this baseline at execution time. See the Input primitive for the full schema."
|
|
4622
4829
|
},
|
|
@@ -4641,7 +4848,7 @@
|
|
|
4641
4848
|
],
|
|
4642
4849
|
"allOf": [
|
|
4643
4850
|
{
|
|
4644
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4851
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Requirement_Core"
|
|
4645
4852
|
}
|
|
4646
4853
|
],
|
|
4647
4854
|
"properties": {
|
|
@@ -4649,7 +4856,7 @@
|
|
|
4649
4856
|
"type": "array",
|
|
4650
4857
|
"minItems": 1,
|
|
4651
4858
|
"items": {
|
|
4652
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4859
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Requirement_Description"
|
|
4653
4860
|
},
|
|
4654
4861
|
"contains": {
|
|
4655
4862
|
"type": "object",
|
|
@@ -4665,37 +4872,37 @@
|
|
|
4665
4872
|
"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'."
|
|
4666
4873
|
},
|
|
4667
4874
|
"severity": {
|
|
4668
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4875
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Severity",
|
|
4669
4876
|
"description": "Explicit severity rating. Typically derived from impact score but provided explicitly for clarity."
|
|
4670
4877
|
},
|
|
4671
4878
|
"sourceLocation": {
|
|
4672
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4879
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Source_Location",
|
|
4673
4880
|
"description": "The explicit location of the requirement within the source code."
|
|
4674
4881
|
},
|
|
4675
4882
|
"results": {
|
|
4676
4883
|
"type": "array",
|
|
4677
4884
|
"minItems": 1,
|
|
4678
4885
|
"items": {
|
|
4679
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4886
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Requirement_Result"
|
|
4680
4887
|
},
|
|
4681
4888
|
"description": "The set of all tests within the requirement and their results."
|
|
4682
4889
|
},
|
|
4683
4890
|
"statusOverrides": {
|
|
4684
4891
|
"type": "array",
|
|
4685
4892
|
"items": {
|
|
4686
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
4893
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Status_Override"
|
|
4687
4894
|
},
|
|
4688
4895
|
"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."
|
|
4689
4896
|
},
|
|
4690
4897
|
"poams": {
|
|
4691
4898
|
"type": "array",
|
|
4692
4899
|
"items": {
|
|
4693
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
4900
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/POAM"
|
|
4694
4901
|
},
|
|
4695
4902
|
"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."
|
|
4696
4903
|
},
|
|
4697
4904
|
"effectiveStatus": {
|
|
4698
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4905
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
|
|
4699
4906
|
"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."
|
|
4700
4907
|
},
|
|
4701
4908
|
"effectiveImpact": {
|
|
@@ -4705,29 +4912,33 @@
|
|
|
4705
4912
|
"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."
|
|
4706
4913
|
},
|
|
4707
4914
|
"disposition": {
|
|
4708
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
4915
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Override_Type",
|
|
4709
4916
|
"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."
|
|
4710
4917
|
},
|
|
4918
|
+
"effectiveChecksum": {
|
|
4919
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
|
|
4920
|
+
"description": "Checksum of this requirement's resolved effective posture, for per-control change detection in continuous monitoring. sha256 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. Flips exactly when the operative status, impact, or disposition changes; stable under all other churn (result details, timestamps, tags). Optional; stamped by tooling (hdf convert, hdf amend apply)."
|
|
4921
|
+
},
|
|
4711
4922
|
"evidence": {
|
|
4712
4923
|
"type": "array",
|
|
4713
4924
|
"items": {
|
|
4714
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4925
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
|
|
4715
4926
|
},
|
|
4716
4927
|
"description": "Supporting evidence for this requirement's findings, such as screenshots, code samples, or log excerpts."
|
|
4717
4928
|
},
|
|
4718
4929
|
"cvss": {
|
|
4719
4930
|
"type": "array",
|
|
4720
4931
|
"items": {
|
|
4721
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
4932
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0#/$defs/Cvss"
|
|
4722
4933
|
},
|
|
4723
4934
|
"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."
|
|
4724
4935
|
},
|
|
4725
4936
|
"epss": {
|
|
4726
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.
|
|
4937
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.5.0#/$defs/Epss",
|
|
4727
4938
|
"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."
|
|
4728
4939
|
},
|
|
4729
4940
|
"kev": {
|
|
4730
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.
|
|
4941
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.5.0#/$defs/Kev",
|
|
4731
4942
|
"description": "CISA Known Exploited Vulnerabilities (KEV) catalog status. When inKev=true, dateAdded and dueDate carry the federal patching deadline."
|
|
4732
4943
|
},
|
|
4733
4944
|
"cwe": {
|
|
@@ -4741,7 +4952,7 @@
|
|
|
4741
4952
|
"affectedPackages": {
|
|
4742
4953
|
"type": "array",
|
|
4743
4954
|
"items": {
|
|
4744
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
4955
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0#/$defs/Affected_Package"
|
|
4745
4956
|
},
|
|
4746
4957
|
"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)."
|
|
4747
4958
|
}
|
|
@@ -4806,11 +5017,15 @@
|
|
|
4806
5017
|
"identifier": "ao@agency.gov"
|
|
4807
5018
|
},
|
|
4808
5019
|
"appliedAt": "2026-01-20T10:00:00Z",
|
|
4809
|
-
"expiresAt": "
|
|
5020
|
+
"expiresAt": "2099-12-31T00:00:00Z"
|
|
4810
5021
|
}
|
|
4811
5022
|
],
|
|
4812
5023
|
"effectiveStatus": "passed",
|
|
4813
|
-
"disposition": "waiver"
|
|
5024
|
+
"disposition": "waiver",
|
|
5025
|
+
"effectiveChecksum": {
|
|
5026
|
+
"algorithm": "sha256",
|
|
5027
|
+
"value": "d11c074ab9131807816013a71d986f1ceb2e5871a8a01dee4043391b7a6bf37b"
|
|
5028
|
+
}
|
|
4814
5029
|
},
|
|
4815
5030
|
{
|
|
4816
5031
|
"$comment": "False positive (compliance scan) — STIG check was wrong, requirement actually passes",
|
|
@@ -5008,6 +5223,7 @@
|
|
|
5008
5223
|
"identifier": "ops@agency.gov"
|
|
5009
5224
|
},
|
|
5010
5225
|
"appliedAt": "2026-01-20T10:00:00Z",
|
|
5226
|
+
"expiresAt": "2099-12-31T00:00:00Z",
|
|
5011
5227
|
"milestones": [
|
|
5012
5228
|
{
|
|
5013
5229
|
"description": "Vendor releases compatible patch",
|
|
@@ -5031,9 +5247,9 @@
|
|
|
5031
5247
|
}
|
|
5032
5248
|
}
|
|
5033
5249
|
},
|
|
5034
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
5250
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.5.0": {
|
|
5035
5251
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5036
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
5252
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.5.0",
|
|
5037
5253
|
"title": "HDF Statistics Primitives",
|
|
5038
5254
|
"description": "Statistics types for tracking assessment run metrics.",
|
|
5039
5255
|
"$defs": {
|
|
@@ -5102,9 +5318,9 @@
|
|
|
5102
5318
|
}
|
|
5103
5319
|
}
|
|
5104
5320
|
},
|
|
5105
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
5321
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.5.0": {
|
|
5106
5322
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5107
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
5323
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.5.0",
|
|
5108
5324
|
"title": "HDF Runner Primitive",
|
|
5109
5325
|
"description": "Information about the test execution environment where the security tool/scanner was executed.",
|
|
5110
5326
|
"$defs": {
|
|
@@ -5148,7 +5364,7 @@
|
|
|
5148
5364
|
"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."
|
|
5149
5365
|
},
|
|
5150
5366
|
"operator": {
|
|
5151
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
5367
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
|
|
5152
5368
|
"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."
|
|
5153
5369
|
}
|
|
5154
5370
|
},
|
|
@@ -5197,9 +5413,237 @@
|
|
|
5197
5413
|
}
|
|
5198
5414
|
}
|
|
5199
5415
|
},
|
|
5200
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/
|
|
5416
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.5.0": {
|
|
5417
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5418
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.5.0",
|
|
5419
|
+
"title": "HDF Change Event Primitives",
|
|
5420
|
+
"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
|
+
"$defs": {
|
|
5422
|
+
"Change_Event_Envelope": {
|
|
5423
|
+
"type": "object",
|
|
5424
|
+
"required": [
|
|
5425
|
+
"eventId",
|
|
5426
|
+
"source",
|
|
5427
|
+
"sequence",
|
|
5428
|
+
"systemRef",
|
|
5429
|
+
"componentId",
|
|
5430
|
+
"timestamp",
|
|
5431
|
+
"priorChecksum"
|
|
5432
|
+
],
|
|
5433
|
+
"properties": {
|
|
5434
|
+
"eventId": {
|
|
5435
|
+
"type": "string",
|
|
5436
|
+
"format": "uuid",
|
|
5437
|
+
"description": "Identity of this event occurrence, unique per source. (source, eventId) is the deduplication key: consumers may treat events with identical source and eventId as duplicates. UUIDv7 (time-ordered) is recommended but not required."
|
|
5438
|
+
},
|
|
5439
|
+
"source": {
|
|
5440
|
+
"type": "string",
|
|
5441
|
+
"format": "uri-reference",
|
|
5442
|
+
"description": "URI identifying the producer context that emitted this event (for example, a scanner instance and profile). eventId uniqueness and sequence numbering are scoped per source."
|
|
5443
|
+
},
|
|
5444
|
+
"sequence": {
|
|
5445
|
+
"type": "integer",
|
|
5446
|
+
"minimum": 0,
|
|
5447
|
+
"description": "Monotonically increasing sequence number per entity key. The ONLY ordering authority for folding: consumers keep the greatest sequence per key regardless of arrival order or timestamp. Deliberately per-entity-key (event-sourcing aggregate-version practice) rather than per-source."
|
|
5448
|
+
},
|
|
5449
|
+
"systemRef": {
|
|
5450
|
+
"type": "string",
|
|
5451
|
+
"format": "uri-reference",
|
|
5452
|
+
"description": "URI to the hdf-system document (authorization boundary) this event applies to. Resolves to the latest version of the evolving system document."
|
|
5453
|
+
},
|
|
5454
|
+
"componentId": {
|
|
5455
|
+
"type": "string",
|
|
5456
|
+
"format": "uuid",
|
|
5457
|
+
"description": "componentId of the system component this event concerns."
|
|
5458
|
+
},
|
|
5459
|
+
"timestamp": {
|
|
5460
|
+
"type": "string",
|
|
5461
|
+
"format": "date-time",
|
|
5462
|
+
"description": "Occurrence time of the observed change (RFC 3339, trimmed UTC). Display and audit metadata only — NEVER an ordering key; ordering is sequence's job."
|
|
5463
|
+
},
|
|
5464
|
+
"schemaRef": {
|
|
5465
|
+
"type": "string",
|
|
5466
|
+
"format": "uri",
|
|
5467
|
+
"description": "The versioned schema $id this event validates against, so events self-describe on heterogeneous streams. Recommended on every wire event."
|
|
5468
|
+
},
|
|
5469
|
+
"priorChecksum": {
|
|
5470
|
+
"oneOf": [
|
|
5471
|
+
{
|
|
5472
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum"
|
|
5473
|
+
},
|
|
5474
|
+
{
|
|
5475
|
+
"type": "null"
|
|
5476
|
+
}
|
|
5477
|
+
],
|
|
5478
|
+
"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. Null at chain start (no prior state, e.g. a new entity or the first event after a seed). The chain provides tamper/gap evidence given a trusted head; completeness is anchored out-of-band by periodic re-centering rescans."
|
|
5479
|
+
}
|
|
5480
|
+
},
|
|
5481
|
+
"examples": [
|
|
5482
|
+
{
|
|
5483
|
+
"$comment": "Steady-state envelope: mid-chain event from an InSpec producer. priorChecksum links to the previous effectiveChecksum for this key.",
|
|
5484
|
+
"eventId": "0190f6f2-1c4e-7c3a-9f2a-3b1d5e7a9c01",
|
|
5485
|
+
"source": "inspec://web01/rhel9-stig",
|
|
5486
|
+
"sequence": 412,
|
|
5487
|
+
"systemRef": "apptier.hdf-system.json",
|
|
5488
|
+
"componentId": "6e0f2a3b-9c01-4d5e-8f7a-1b2c3d4e5f60",
|
|
5489
|
+
"timestamp": "2026-07-22T14:03:11Z",
|
|
5490
|
+
"schemaRef": "https://mitre.github.io/hdf-libs/schemas/hdf-requirement-change-event/v3.5.0",
|
|
5491
|
+
"priorChecksum": {
|
|
5492
|
+
"algorithm": "sha256",
|
|
5493
|
+
"value": "704f62b2d0803438ad6b7b9bab45e2c4f350b7344135a2a7f8ef986d98669021"
|
|
5494
|
+
}
|
|
5495
|
+
},
|
|
5496
|
+
{
|
|
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
|
+
"eventId": "0190f6f2-2a5b-7e4d-b1c8-4f2e6a8b0d12",
|
|
5499
|
+
"source": "inspec://web01/rhel9-stig",
|
|
5500
|
+
"sequence": 1,
|
|
5501
|
+
"systemRef": "apptier.hdf-system.json",
|
|
5502
|
+
"componentId": "6e0f2a3b-9c01-4d5e-8f7a-1b2c3d4e5f60",
|
|
5503
|
+
"timestamp": "2026-07-22T09:00:00Z",
|
|
5504
|
+
"priorChecksum": null
|
|
5505
|
+
}
|
|
5506
|
+
],
|
|
5507
|
+
"description": "Entity-agnostic transport identity for a change event: dedup ((source, eventId)), ordering (per-key sequence), system anchor (systemRef + componentId), occurrence time, schema self-description, and the prior-state hash-chain link. Composed into each concrete event type via allOf; entity-specific keys and payload live on the event type.",
|
|
5508
|
+
"title": "Change Event Envelope"
|
|
5509
|
+
},
|
|
5510
|
+
"Event_Requirement_State": {
|
|
5511
|
+
"type": "string",
|
|
5512
|
+
"enum": [
|
|
5513
|
+
"new",
|
|
5514
|
+
"absent",
|
|
5515
|
+
"updated",
|
|
5516
|
+
"fixed",
|
|
5517
|
+
"regressed"
|
|
5518
|
+
],
|
|
5519
|
+
"description": "The producer-computable subset of the comparison vocabulary's Requirement_State. Kept value-identical with the parent enum (test-enforced): the batch-only states (moved, split, merged) are outputs of cross-document identity resolution a per-key producer cannot compute. Declared as a distinct named type (rather than a $ref intersection) so generated Go/TS types keep stable, distinct enum names.",
|
|
5520
|
+
"title": "Event Requirement State"
|
|
5521
|
+
},
|
|
5522
|
+
"Event_Change_Reason": {
|
|
5523
|
+
"type": "string",
|
|
5524
|
+
"enum": [
|
|
5525
|
+
"resultChanged",
|
|
5526
|
+
"overrideAdded",
|
|
5527
|
+
"overrideExpired",
|
|
5528
|
+
"overrideRemoved",
|
|
5529
|
+
"overrideModified",
|
|
5530
|
+
"impactChanged",
|
|
5531
|
+
"configChanged"
|
|
5532
|
+
],
|
|
5533
|
+
"description": "The producer-computable subset of the comparison vocabulary's Change_Reason, value-identical with the parent enum (test-enforced). Batch-only reasons (baselineUpgraded, controlMapped, scannerChanged, targetChanged, metadataChanged) require cross-corpus context and are excluded.",
|
|
5534
|
+
"title": "Event Change Reason"
|
|
5535
|
+
},
|
|
5536
|
+
"Effective_Projection": {
|
|
5537
|
+
"type": "object",
|
|
5538
|
+
"unevaluatedProperties": false,
|
|
5539
|
+
"required": [
|
|
5540
|
+
"effectiveStatus",
|
|
5541
|
+
"effectiveImpact"
|
|
5542
|
+
],
|
|
5543
|
+
"properties": {
|
|
5544
|
+
"effectiveStatus": {
|
|
5545
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
|
|
5546
|
+
"description": "The resolved effective compliance status at this point in the chain."
|
|
5547
|
+
},
|
|
5548
|
+
"effectiveImpact": {
|
|
5549
|
+
"type": "number",
|
|
5550
|
+
"minimum": 0,
|
|
5551
|
+
"maximum": 1,
|
|
5552
|
+
"description": "The resolved effective impact score (0.0–1.0) at this point in the chain."
|
|
5553
|
+
}
|
|
5554
|
+
},
|
|
5555
|
+
"examples": [
|
|
5556
|
+
{
|
|
5557
|
+
"$comment": "Prior posture of a failing SSH-cipher control before remediation.",
|
|
5558
|
+
"effectiveStatus": "failed",
|
|
5559
|
+
"effectiveImpact": 0.5
|
|
5560
|
+
},
|
|
5561
|
+
{
|
|
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
|
+
"effectiveStatus": "passed",
|
|
5564
|
+
"effectiveImpact": 0.5
|
|
5565
|
+
}
|
|
5566
|
+
],
|
|
5567
|
+
"description": "The minimal resolved-posture projection — the same field set the per-requirement effectiveChecksum hashes (status and impact; the governing disposition is carried by the full requirement payload).",
|
|
5568
|
+
"title": "Effective Projection"
|
|
5569
|
+
},
|
|
5570
|
+
"Derivation": {
|
|
5571
|
+
"type": "object",
|
|
5572
|
+
"unevaluatedProperties": false,
|
|
5573
|
+
"required": [
|
|
5574
|
+
"seed",
|
|
5575
|
+
"source",
|
|
5576
|
+
"throughSequence",
|
|
5577
|
+
"eventsApplied",
|
|
5578
|
+
"asOf"
|
|
5579
|
+
],
|
|
5580
|
+
"properties": {
|
|
5581
|
+
"seed": {
|
|
5582
|
+
"type": "object",
|
|
5583
|
+
"unevaluatedProperties": false,
|
|
5584
|
+
"required": [
|
|
5585
|
+
"uri",
|
|
5586
|
+
"checksum"
|
|
5587
|
+
],
|
|
5588
|
+
"properties": {
|
|
5589
|
+
"uri": {
|
|
5590
|
+
"type": "string",
|
|
5591
|
+
"format": "uri-reference",
|
|
5592
|
+
"description": "URI to the seed snapshot document (relative path or absolute URL)."
|
|
5593
|
+
},
|
|
5594
|
+
"checksum": {
|
|
5595
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
|
|
5596
|
+
"description": "Checksum of the seed snapshot, REQUIRED: the derivation pins an immutable snapshot by content, not just location."
|
|
5597
|
+
}
|
|
5598
|
+
},
|
|
5599
|
+
"$comment": "Location + expected-hash reference (the SRI/OCI/SPDX pattern). Shares its core shape with hdf-evidence-package's Content_Reference and ADR-0006's proposed External_Reference; consolidation onto one reference primitive is tracked by bead hdf-libs-avp2.",
|
|
5600
|
+
"description": "The authoritative snapshot this document was reassembled from, pinned by content."
|
|
5601
|
+
},
|
|
5602
|
+
"source": {
|
|
5603
|
+
"type": "string",
|
|
5604
|
+
"format": "uri-reference",
|
|
5605
|
+
"description": "URI of the event-stream producer context whose events were applied (matches the events' envelope source)."
|
|
5606
|
+
},
|
|
5607
|
+
"throughSequence": {
|
|
5608
|
+
"type": "integer",
|
|
5609
|
+
"minimum": 0,
|
|
5610
|
+
"description": "The event watermark: the highest per-key sequence number applied. Downstream precedence rule: a full-scan document supersedes the reconciled view as of its scan time; between scans, the reconciled document with the highest throughSequence is the current posture."
|
|
5611
|
+
},
|
|
5612
|
+
"eventsApplied": {
|
|
5613
|
+
"type": "integer",
|
|
5614
|
+
"minimum": 0,
|
|
5615
|
+
"description": "Number of change events applied to the seed to produce this document."
|
|
5616
|
+
},
|
|
5617
|
+
"asOf": {
|
|
5618
|
+
"type": "string",
|
|
5619
|
+
"format": "date-time",
|
|
5620
|
+
"description": "The posture-as-of time of this reconciled view (RFC 3339, trimmed UTC) — the analog of PROV's generatedAtTime."
|
|
5621
|
+
}
|
|
5622
|
+
},
|
|
5623
|
+
"examples": [
|
|
5624
|
+
{
|
|
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
|
+
"seed": {
|
|
5627
|
+
"uri": "apptier-seed-scan.hdf.json",
|
|
5628
|
+
"checksum": {
|
|
5629
|
+
"algorithm": "sha256",
|
|
5630
|
+
"value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
5631
|
+
}
|
|
5632
|
+
},
|
|
5633
|
+
"source": "inspec://web01/rhel9-stig",
|
|
5634
|
+
"throughSequence": 414,
|
|
5635
|
+
"eventsApplied": 3,
|
|
5636
|
+
"asOf": "2026-07-24T10:15:00Z"
|
|
5637
|
+
}
|
|
5638
|
+
],
|
|
5639
|
+
"description": "Derived-document lineage for a reconciled result set (an hdf-results produced by applyChangeEvents rather than a scanner). Records exactly which seed and event horizon the document represents so it can never masquerade as primary scan evidence. Conceptually PROV qualified derivation: derived entity, used entity (seed), activity (event application), generation time (asOf).",
|
|
5640
|
+
"title": "Derivation"
|
|
5641
|
+
}
|
|
5642
|
+
}
|
|
5643
|
+
},
|
|
5644
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.5.0": {
|
|
5201
5645
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5202
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
5646
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.5.0",
|
|
5203
5647
|
"title": "HDF Parameter Primitives",
|
|
5204
5648
|
"description": "Input/parameter type definitions for typed, traceable configuration values that bridge governance prose and scanner automation.",
|
|
5205
5649
|
"$defs": {
|
|
@@ -5330,9 +5774,9 @@
|
|
|
5330
5774
|
}
|
|
5331
5775
|
}
|
|
5332
5776
|
},
|
|
5333
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.
|
|
5777
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.5.0": {
|
|
5334
5778
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5335
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.
|
|
5779
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.5.0",
|
|
5336
5780
|
"title": "HDF EPSS Primitive",
|
|
5337
5781
|
"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.",
|
|
5338
5782
|
"$defs": {
|
|
@@ -5389,9 +5833,9 @@
|
|
|
5389
5833
|
}
|
|
5390
5834
|
}
|
|
5391
5835
|
},
|
|
5392
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.
|
|
5836
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.5.0": {
|
|
5393
5837
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5394
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.
|
|
5838
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.5.0",
|
|
5395
5839
|
"title": "HDF Kev Primitives",
|
|
5396
5840
|
"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.",
|
|
5397
5841
|
"$defs": {
|