@mitre/hdf-schema 3.4.4 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-plan/v3.4.0",
3
+ "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-plan/v3.5.0",
4
4
  "title": "HDF Plan",
5
5
  "description": "Defines an assessment plan — what baselines to run against which targets, with resolved inputs and scheduling. Maps to OSCAL Assessment Plan.",
6
6
  "type": "object",
@@ -10,6 +10,13 @@
10
10
  "assessments"
11
11
  ],
12
12
  "properties": {
13
+ "externalReferences": {
14
+ "type": "array",
15
+ "items": {
16
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
17
+ },
18
+ "description": "Optional references to external artifacts relevant to this assessment plan (CTI/STIX, advisories, methodology docs, or any URI-addressable artifact). Inert context; see External_Reference."
19
+ },
13
20
  "planId": {
14
21
  "type": "string",
15
22
  "format": "uuid",
@@ -20,7 +27,7 @@
20
27
  "description": "Human-readable plan name. Example: 'Portal Monthly Assessment'."
21
28
  },
22
29
  "type": {
23
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.4.0#/$defs/Plan_Type",
30
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.5.0#/$defs/Plan_Type",
24
31
  "description": "The type of assessment plan."
25
32
  },
26
33
  "description": {
@@ -36,12 +43,12 @@
36
43
  "type": "array",
37
44
  "minItems": 1,
38
45
  "items": {
39
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.4.0#/$defs/Assessment"
46
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.5.0#/$defs/Assessment"
40
47
  },
41
48
  "description": "The assessments to perform. Each assessment pairs a baseline with targets and resolved inputs."
42
49
  },
43
50
  "schedule": {
44
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.4.0#/$defs/Schedule",
51
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.5.0#/$defs/Schedule",
45
52
  "description": "Optional scheduling configuration for recurring assessments."
46
53
  },
47
54
  "labels": {
@@ -52,7 +59,7 @@
52
59
  "description": "Optional key-value labels for grouping and querying plans."
53
60
  },
54
61
  "integrity": {
55
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Integrity",
62
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Integrity",
56
63
  "description": "Cryptographic integrity information for verifying this plan document has not been tampered with."
57
64
  },
58
65
  "version": {
@@ -60,7 +67,7 @@
60
67
  "description": "Version of this plan document."
61
68
  },
62
69
  "generator": {
63
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Generator",
70
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0#/$defs/Generator",
64
71
  "description": "Information about the tool that generated this plan."
65
72
  }
66
73
  },
@@ -94,353 +101,214 @@
94
101
  }
95
102
  ],
96
103
  "$defs": {
97
- "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.4.0": {
104
+ "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0": {
98
105
  "$schema": "https://json-schema.org/draft/2020-12/schema",
99
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.4.0",
100
- "title": "HDF Plan Primitives",
101
- "description": "Types for defining assessment plans — what to scan, how to configure it, and when to run.",
106
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0",
107
+ "title": "HDF Common Primitives",
108
+ "description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
102
109
  "$defs": {
103
- "Plan_Type": {
104
- "type": "string",
105
- "enum": [
106
- "automated",
107
- "manual",
108
- "hybrid"
109
- ],
110
- "description": "The type of assessment. 'automated' for scanner-driven, 'manual' for human-performed, 'hybrid' for both.",
111
- "title": "Plan Type"
112
- },
113
- "Runner_Config": {
110
+ "External_Reference": {
114
111
  "type": "object",
115
- "unevaluatedProperties": false,
116
- "properties": {
117
- "name": {
118
- "type": "string",
119
- "description": "Name of the assessment runner. Example: 'cinc-auditor', 'inspec', 'openscap'."
112
+ "title": "External Reference",
113
+ "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.",
114
+ "required": [
115
+ "sourceName"
116
+ ],
117
+ "anyOf": [
118
+ {
119
+ "required": [
120
+ "externalId"
121
+ ]
120
122
  },
121
- "version": {
122
- "type": "string",
123
- "description": "Version of the runner."
123
+ {
124
+ "required": [
125
+ "href"
126
+ ]
127
+ },
128
+ {
129
+ "required": [
130
+ "description"
131
+ ]
124
132
  }
125
- },
126
- "description": "Configuration for the assessment runner/scanner.",
127
- "title": "Runner Config"
128
- },
129
- "Assessment": {
130
- "type": "object",
131
- "unevaluatedProperties": false,
132
- "required": [
133
- "baselineRef"
134
133
  ],
135
134
  "properties": {
136
- "baselineRef": {
135
+ "sourceName": {
136
+ "type": "string",
137
+ "minLength": 1,
138
+ "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`."
139
+ },
140
+ "externalId": {
141
+ "type": "string",
142
+ "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."
143
+ },
144
+ "href": {
137
145
  "type": "string",
138
146
  "format": "uri-reference",
139
- "description": "Reference to the baseline to evaluate. May be a baseline name (e.g. 'RHEL9-STIG'), a relative path to an HDF Baseline document (e.g. 'rhel9-stig.hdf-baseline.json'), or an absolute URI."
147
+ "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`."
140
148
  },
141
- "componentRef": {
149
+ "description": {
142
150
  "type": "string",
143
- "format": "uuid",
144
- "description": "componentId of the system component this assessment targets. Use for direct component binding. Alternative to targetSelector."
151
+ "description": "Human-readable description of what is referenced. Satisfies the at-least-one rule on its own when neither id nor href is available."
145
152
  },
146
- "targetSelector": {
147
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0#/$defs/Target_Selector",
148
- "description": "Label selector to match targets for this assessment. Overrides the system component's targetSelector if provided."
153
+ "rel": {
154
+ "type": "string",
155
+ "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)."
149
156
  },
150
- "inputs": {
151
- "type": "object",
152
- "additionalProperties": true,
153
- "description": "Resolved input values for this assessment. Keys are input names, values are the final resolved values (after baseline defaults + system overrides)."
157
+ "mediaType": {
158
+ "type": "string",
159
+ "description": "IANA media type of the referenced artifact when retrievable (RFC 6838), e.g., 'application/json'. Meaningful only with `href`."
154
160
  },
155
- "runner": {
156
- "$ref": "#/$defs/Runner_Config",
157
- "description": "Runner/scanner configuration for this assessment."
161
+ "checksum": {
162
+ "$ref": "#/$defs/Checksum",
163
+ "description": "Integrity hash of the referenced artifact. Reuses the HDF `Checksum` primitive (not STIX `hashes`). Meaningful only with a retrievable `href`."
158
164
  },
159
- "description": {
165
+ "addedBy": {
166
+ "$ref": "#/$defs/Identity",
167
+ "description": "Who attached this reference. Lightweight, flat attribution — a reference overrides nothing, so it has no chaining/superseding/disposition."
168
+ },
169
+ "addedAt": {
160
170
  "type": "string",
161
- "description": "Description of this assessment's purpose."
171
+ "format": "date-time",
172
+ "description": "When this reference was attached (RFC 3339 / trimmed-UTC per HDF timestamp convention)."
173
+ },
174
+ "kind": {
175
+ "type": "string",
176
+ "minLength": 1,
177
+ "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."
178
+ },
179
+ "document": {
180
+ "type": "object",
181
+ "additionalProperties": true,
182
+ "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)."
162
183
  }
163
184
  },
185
+ "unevaluatedProperties": false,
164
186
  "examples": [
165
187
  {
166
- "baselineRef": "RHEL9-STIG",
167
- "targetSelector": {
168
- "labels.component": "WebTier"
188
+ "$comment": "By-identity: cite a CVE by its id in the 'cve' system without a URL — equivalently urn:cve:CVE-2021-44228.",
189
+ "sourceName": "cve",
190
+ "externalId": "CVE-2021-44228",
191
+ "rel": "definition"
192
+ },
193
+ {
194
+ "$comment": "By-identity AND by-locator together (anyOf, not oneOf) — an ATT&CK technique cited by id with its canonical URL.",
195
+ "sourceName": "mitre-att&ck",
196
+ "externalId": "T1059",
197
+ "href": "https://attack.mitre.org/techniques/T1059/",
198
+ "rel": "canonical"
199
+ },
200
+ {
201
+ "$comment": "By-locator to a retrievable STIX bundle, with integrity hash, media type, and attribution.",
202
+ "sourceName": "stix",
203
+ "href": "https://cti.example.org/bundles/log4shell.json",
204
+ "rel": "investigate",
205
+ "mediaType": "application/json",
206
+ "checksum": {
207
+ "algorithm": "sha256",
208
+ "value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
169
209
  },
170
- "inputs": {
171
- "max_concurrent_sessions": 5,
172
- "password_min_length": 15
210
+ "addedBy": {
211
+ "type": "email",
212
+ "identifier": "analyst@agency.gov"
173
213
  },
174
- "runner": {
175
- "name": "cinc-auditor",
176
- "version": "6.8.1"
214
+ "addedAt": "2026-07-26T00:00:00Z"
215
+ },
216
+ {
217
+ "$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.",
218
+ "sourceName": "stix",
219
+ "externalId": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
220
+ "href": "https://cti.example.org/bundles/log4shell.json#vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
221
+ "rel": "investigate",
222
+ "kind": "threat-intel",
223
+ "document": {
224
+ "type": "vulnerability",
225
+ "spec_version": "2.1",
226
+ "id": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
227
+ "name": "CVE-2021-44228",
228
+ "external_references": [
229
+ {
230
+ "source_name": "cve",
231
+ "external_id": "CVE-2021-44228"
232
+ }
233
+ ]
177
234
  }
178
235
  }
236
+ ]
237
+ },
238
+ "Hash_Algorithm": {
239
+ "type": "string",
240
+ "enum": [
241
+ "sha256",
242
+ "sha384",
243
+ "sha512",
244
+ "blake3"
179
245
  ],
180
- "description": "A single assessment within a plan — defines which baseline to run against which targets with what configuration.",
181
- "title": "Assessment"
246
+ "description": "Supported cryptographic hash algorithms for checksums and integrity verification. blake3 covers container-image and other artifact digests that use it.",
247
+ "title": "Hash Algorithm"
182
248
  },
183
- "Schedule": {
249
+ "Requirement_Group": {
184
250
  "type": "object",
185
251
  "unevaluatedProperties": false,
252
+ "required": [
253
+ "id",
254
+ "requirements"
255
+ ],
186
256
  "properties": {
187
- "cron": {
188
- "type": "string",
189
- "description": "Cron expression for recurring assessments. Example: '0 2 1 * *' (2 AM on the 1st of each month)."
190
- },
191
- "startDate": {
257
+ "id": {
192
258
  "type": "string",
193
- "format": "date-time",
194
- "description": "Earliest date to begin assessments. ISO 8601 format."
259
+ "description": "The unique identifier for the group. Example: the relative path to the file specifying the requirements."
195
260
  },
196
- "endDate": {
261
+ "title": {
197
262
  "type": "string",
198
- "format": "date-time",
199
- "description": "Date after which assessments should no longer run. ISO 8601 format."
200
- },
201
- "notifyOnRegression": {
202
- "type": "array",
203
- "items": {
204
- "type": "string"
205
- },
206
- "description": "Email addresses or notification endpoints to alert when regressions are detected."
263
+ "description": "The title of the group - should be human readable."
207
264
  },
208
- "notifyOnCompletion": {
265
+ "requirements": {
209
266
  "type": "array",
210
267
  "items": {
211
268
  "type": "string"
212
269
  },
213
- "description": "Email addresses or notification endpoints to alert when assessments complete."
270
+ "description": "The set of requirements as specified by their ids in this group. Example: 'SV-238196'."
214
271
  }
215
272
  },
216
- "examples": [
217
- {
218
- "cron": "0 2 1 * *",
219
- "notifyOnRegression": [
220
- "security-team@agency.gov"
221
- ]
222
- }
223
- ],
224
- "description": "Scheduling configuration for recurring assessments.",
225
- "title": "Schedule"
226
- }
227
- }
228
- },
229
- "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0": {
230
- "$schema": "https://json-schema.org/draft/2020-12/schema",
231
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0",
232
- "title": "HDF System Primitives",
233
- "description": "Types for describing system architecture, authorization boundaries, and components.",
234
- "$defs": {
235
- "Authorization_Status": {
236
- "type": "string",
237
- "enum": [
238
- "authorized",
239
- "denied",
240
- "pendingAuthorization",
241
- "conditionallyAuthorized",
242
- "notYetRequested",
243
- "revoked"
244
- ],
245
- "description": "Authorization to Operate (ATO) status for the system.",
246
- "title": "Authorization Status"
247
- },
248
- "Categorization_Level": {
249
- "type": "string",
250
- "enum": [
251
- "low",
252
- "moderate",
253
- "high"
254
- ],
255
- "description": "FIPS 199 security categorization level (impact level).",
256
- "title": "Categorization Level"
273
+ "description": "Describes a group of requirements, such as those defined in a single file.",
274
+ "title": "Requirement Group"
257
275
  },
258
- "Input_Override": {
276
+ "Dependency": {
259
277
  "type": "object",
260
278
  "unevaluatedProperties": false,
261
- "required": [
262
- "inputName",
263
- "value"
264
- ],
279
+ "required": [],
265
280
  "properties": {
266
- "baselineRef": {
281
+ "name": {
267
282
  "type": "string",
268
- "description": "Name of the baseline this override applies to. If omitted, applies to all baselines that define this input."
283
+ "description": "The name or assigned alias."
269
284
  },
270
- "inputName": {
285
+ "url": {
271
286
  "type": "string",
272
- "description": "Name of the input being overridden. Must match an Input.name in the referenced baseline."
287
+ "format": "uri-reference",
288
+ "description": "The address of the dependency."
273
289
  },
274
- "value": {
275
- "description": "The overridden value. Should match the type of the original input."
290
+ "branch": {
291
+ "type": "string",
292
+ "description": "The branch name for a git repo."
276
293
  },
277
- "justification": {
294
+ "path": {
278
295
  "type": "string",
279
- "description": "Rationale for why this override is needed."
296
+ "description": "The relative path if the dependency is locally available."
280
297
  },
281
- "approvedBy": {
282
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
283
- "description": "Identity of the person or system that approved this override."
284
- }
285
- },
286
- "description": "An override of a baseline input value for a specific component. Enables system-specific tailoring of baseline parameters.",
287
- "title": "Input Override"
288
- },
289
- "Target_Selector": {
290
- "type": "object",
291
- "additionalProperties": {
292
- "type": "string"
293
- },
294
- "description": "A label selector that matches targets by label key-value pairs. All specified labels must match (AND logic). Example: { \"labels.component\": \"WebTier\" } matches targets with labels.component = \"WebTier\".",
295
- "title": "Target Selector"
296
- },
297
- "Control_Designation": {
298
- "type": "object",
299
- "unevaluatedProperties": false,
300
- "required": [
301
- "controlId",
302
- "designation",
303
- "description"
304
- ],
305
- "properties": {
306
- "controlId": {
298
+ "statusMessage": {
307
299
  "type": "string",
308
- "description": "The control identifier (e.g., 'SC-7', 'AC-2 (1)'). Must match a NIST tag in a baseline requirement's tags."
300
+ "description": "The reason for the status if it is 'failed' or 'skipped'."
309
301
  },
310
- "designation": {
302
+ "status": {
311
303
  "type": "string",
312
- "title": "Designation",
313
- "enum": [
314
- "common",
315
- "system-specific",
316
- "hybrid"
317
- ],
318
- "description": "NIST SP 800-53 control designation. 'common': fully provided by another component or system. 'system-specific': implemented by the inheriting component(s) only. 'hybrid': shared responsibility between provider and inheritor."
304
+ "description": "The status. Should be: 'loaded', 'failed', or 'skipped'."
319
305
  },
320
- "providedBy": {
306
+ "git": {
321
307
  "type": "string",
322
- "format": "uuid",
323
- "description": "componentId of a local component that provides this control. Omit when the provider is an external system."
308
+ "format": "uri",
309
+ "description": "The location of the git repo. Example: 'https://github.com/my-org/ubuntu-22.04-stig-baseline.git'."
324
310
  },
325
- "systemRef": {
326
- "type": "string",
327
- "format": "uri-reference",
328
- "description": "Reference to another hdf-system document whose component provides this control. Use when the provider is in a different system. Omit when the provider is local."
329
- },
330
- "inheritedBy": {
331
- "type": "array",
332
- "items": {
333
- "type": "string",
334
- "format": "uuid"
335
- },
336
- "description": "componentIds that inherit this control. If omitted, all components in the system inherit it."
337
- },
338
- "description": {
339
- "type": "string",
340
- "description": "Justification for this designation — who provides the control, why it's inherited, and any relevant authorization references."
341
- }
342
- },
343
- "examples": [
344
- {
345
- "controlId": "IA-2",
346
- "designation": "common",
347
- "providedBy": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
348
- "inheritedBy": [
349
- "11111111-2222-3333-4444-555555555555"
350
- ],
351
- "description": "User identification and authentication provided by Keycloak SSO via SAML 2.0."
352
- },
353
- {
354
- "controlId": "PE-2",
355
- "designation": "common",
356
- "description": "Physical access authorizations provided by AWS GovCloud per FedRAMP High authorization."
357
- }
358
- ],
359
- "description": "Declares a control's designation within a system — whether it is common (provided by another component or system), system-specific (implemented locally), or hybrid (shared responsibility). Maps to NIST SP 800-53 Appendix C control designations and OSCAL SSP by-component provided/inherited semantics.",
360
- "title": "Control Designation"
361
- }
362
- }
363
- },
364
- "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0": {
365
- "$schema": "https://json-schema.org/draft/2020-12/schema",
366
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0",
367
- "title": "HDF Common Primitives",
368
- "description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
369
- "$defs": {
370
- "Hash_Algorithm": {
371
- "type": "string",
372
- "enum": [
373
- "sha256",
374
- "sha384",
375
- "sha512",
376
- "blake3"
377
- ],
378
- "description": "Supported cryptographic hash algorithms for checksums and integrity verification. blake3 covers container-image and other artifact digests that use it.",
379
- "title": "Hash Algorithm"
380
- },
381
- "Requirement_Group": {
382
- "type": "object",
383
- "unevaluatedProperties": false,
384
- "required": [
385
- "id",
386
- "requirements"
387
- ],
388
- "properties": {
389
- "id": {
390
- "type": "string",
391
- "description": "The unique identifier for the group. Example: the relative path to the file specifying the requirements."
392
- },
393
- "title": {
394
- "type": "string",
395
- "description": "The title of the group - should be human readable."
396
- },
397
- "requirements": {
398
- "type": "array",
399
- "items": {
400
- "type": "string"
401
- },
402
- "description": "The set of requirements as specified by their ids in this group. Example: 'SV-238196'."
403
- }
404
- },
405
- "description": "Describes a group of requirements, such as those defined in a single file.",
406
- "title": "Requirement Group"
407
- },
408
- "Dependency": {
409
- "type": "object",
410
- "unevaluatedProperties": false,
411
- "required": [],
412
- "properties": {
413
- "name": {
414
- "type": "string",
415
- "description": "The name or assigned alias."
416
- },
417
- "url": {
418
- "type": "string",
419
- "format": "uri-reference",
420
- "description": "The address of the dependency."
421
- },
422
- "branch": {
423
- "type": "string",
424
- "description": "The branch name for a git repo."
425
- },
426
- "path": {
427
- "type": "string",
428
- "description": "The relative path if the dependency is locally available."
429
- },
430
- "statusMessage": {
431
- "type": "string",
432
- "description": "The reason for the status if it is 'failed' or 'skipped'."
433
- },
434
- "status": {
435
- "type": "string",
436
- "description": "The status. Should be: 'loaded', 'failed', or 'skipped'."
437
- },
438
- "git": {
439
- "type": "string",
440
- "format": "uri",
441
- "description": "The location of the git repo. Example: 'https://github.com/my-org/ubuntu-22.04-stig-baseline.git'."
442
- },
443
- "supermarket": {
311
+ "supermarket": {
444
312
  "type": "string",
445
313
  "description": "The 'user/profilename' attribute for a Supermarket server."
446
314
  },
@@ -990,6 +858,13 @@
990
858
  "Baseline_Metadata": {
991
859
  "type": "object",
992
860
  "properties": {
861
+ "externalReferences": {
862
+ "type": "array",
863
+ "items": {
864
+ "$ref": "#/$defs/External_Reference"
865
+ },
866
+ "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."
867
+ },
993
868
  "name": {
994
869
  "type": "string",
995
870
  "description": "The name - must be unique."
@@ -1067,6 +942,13 @@
1067
942
  "Requirement_Core": {
1068
943
  "type": "object",
1069
944
  "properties": {
945
+ "externalReferences": {
946
+ "type": "array",
947
+ "items": {
948
+ "$ref": "#/$defs/External_Reference"
949
+ },
950
+ "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."
951
+ },
1070
952
  "id": {
1071
953
  "type": "string",
1072
954
  "description": "The requirement identifier. Example: 'SV-238196'."
@@ -1104,195 +986,462 @@
1104
986
  "maximum": 1,
1105
987
  "description": "The impactfulness or severity (0.0 to 1.0)."
1106
988
  },
1107
- "refs": {
1108
- "type": "array",
1109
- "items": {
1110
- "$ref": "#/$defs/Reference"
1111
- },
1112
- "description": "The set of references to external documents."
989
+ "refs": {
990
+ "type": "array",
991
+ "items": {
992
+ "$ref": "#/$defs/Reference"
993
+ },
994
+ "description": "The set of references to external documents."
995
+ },
996
+ "tags": {
997
+ "type": "object",
998
+ "additionalProperties": true,
999
+ "description": "A set of tags - usually metadata like CCI, STIG ID, severity."
1000
+ },
1001
+ "code": {
1002
+ "type": "string",
1003
+ "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."
1004
+ },
1005
+ "sourceLocation": {
1006
+ "$ref": "#/$defs/Source_Location",
1007
+ "description": "The explicit location of the requirement within the source code."
1008
+ },
1009
+ "controlType": {
1010
+ "type": "string",
1011
+ "title": "Control Type",
1012
+ "enum": [
1013
+ "policy",
1014
+ "procedure",
1015
+ "technical",
1016
+ "management",
1017
+ "operational"
1018
+ ],
1019
+ "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."
1020
+ },
1021
+ "verificationMethod": {
1022
+ "$ref": "#/$defs/Verification_Method_Enum",
1023
+ "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."
1024
+ },
1025
+ "applicability": {
1026
+ "type": "string",
1027
+ "title": "Applicability",
1028
+ "enum": [
1029
+ "required",
1030
+ "optional",
1031
+ "advisory"
1032
+ ],
1033
+ "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."
1034
+ }
1035
+ },
1036
+ "examples": [
1037
+ {
1038
+ "$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.5.0 (backward compatibility).",
1039
+ "id": "SV-238196",
1040
+ "title": "The Ubuntu operating system must enforce password complexity",
1041
+ "impact": 0.5,
1042
+ "tags": {
1043
+ "nist": [
1044
+ "IA-5"
1045
+ ],
1046
+ "severity": "medium",
1047
+ "cci": [
1048
+ "CCI-000192"
1049
+ ]
1050
+ },
1051
+ "refs": [
1052
+ {
1053
+ "url": "https://public.cyber.mil/stigs/"
1054
+ }
1055
+ ],
1056
+ "descriptions": [
1057
+ {
1058
+ "label": "default",
1059
+ "data": "Use of a complex password helps to increase the time and resources required to compromise the password."
1060
+ },
1061
+ {
1062
+ "label": "check",
1063
+ "data": "Verify the value of 'minlen' in /etc/security/pwquality.conf."
1064
+ }
1065
+ ]
1066
+ },
1067
+ {
1068
+ "$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.",
1069
+ "id": "AC-3",
1070
+ "title": "Access Enforcement",
1071
+ "impact": 0.7,
1072
+ "tags": {
1073
+ "nist": [
1074
+ "AC-3"
1075
+ ],
1076
+ "severity": "high"
1077
+ },
1078
+ "descriptions": [
1079
+ {
1080
+ "label": "default",
1081
+ "data": "The information system enforces approved authorizations for logical access to information and system resources."
1082
+ }
1083
+ ],
1084
+ "code": "control 'AC-3' do; impact 0.7; end",
1085
+ "controlType": "technical",
1086
+ "verificationMethod": "automated",
1087
+ "applicability": "required"
1088
+ },
1089
+ {
1090
+ "$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.",
1091
+ "id": "KSI-CNA-01",
1092
+ "title": "Cyber Security Plan documents the system",
1093
+ "impact": 0.5,
1094
+ "tags": {
1095
+ "ksi": [
1096
+ "KSI-CNA"
1097
+ ]
1098
+ },
1099
+ "descriptions": [
1100
+ {
1101
+ "label": "default",
1102
+ "data": "The Cyber Security Plan documents the system, its boundary, and its components."
1103
+ }
1104
+ ],
1105
+ "controlType": "policy",
1106
+ "verificationMethod": "manual-by-design",
1107
+ "applicability": "required"
1108
+ },
1109
+ {
1110
+ "$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.",
1111
+ "id": "SV-999999",
1112
+ "title": "Example STIG rule pending automation",
1113
+ "impact": 0.3,
1114
+ "tags": {
1115
+ "stig_id": "SV-999999"
1116
+ },
1117
+ "descriptions": [
1118
+ {
1119
+ "label": "default",
1120
+ "data": "Example requirement that is intended to be automated but currently lacks a fix block."
1121
+ },
1122
+ {
1123
+ "label": "check",
1124
+ "data": "Manual review of system configuration is required."
1125
+ }
1126
+ ],
1127
+ "verificationMethod": "manual-pending-automation",
1128
+ "applicability": "advisory"
1129
+ }
1130
+ ],
1131
+ "description": "Core requirement fields shared between baseline requirements and evaluated requirements. Contains the fundamental requirement definition without assessment results.",
1132
+ "title": "Requirement Core"
1133
+ },
1134
+ "Verification_Method_Enum": {
1135
+ "type": "string",
1136
+ "enum": [
1137
+ "automated",
1138
+ "manual-by-design",
1139
+ "manual-pending-automation",
1140
+ "hybrid"
1141
+ ],
1142
+ "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.",
1143
+ "title": "Verification Method Enum"
1144
+ },
1145
+ "Severity": {
1146
+ "type": "string",
1147
+ "enum": [
1148
+ "critical",
1149
+ "high",
1150
+ "medium",
1151
+ "low",
1152
+ "informational"
1153
+ ],
1154
+ "description": "Severity rating for a requirement. Typically derived from the numeric impact score.",
1155
+ "title": "Severity"
1156
+ },
1157
+ "Cloud_Provider": {
1158
+ "type": [
1159
+ "string",
1160
+ "null"
1161
+ ],
1162
+ "enum": [
1163
+ "aws",
1164
+ "azure",
1165
+ "gcp",
1166
+ "oci",
1167
+ "other",
1168
+ null
1169
+ ],
1170
+ "description": "Cloud service provider identifier.",
1171
+ "title": "Cloud Provider"
1172
+ }
1173
+ }
1174
+ },
1175
+ "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.5.0": {
1176
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1177
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.5.0",
1178
+ "title": "HDF Plan Primitives",
1179
+ "description": "Types for defining assessment plans — what to scan, how to configure it, and when to run.",
1180
+ "$defs": {
1181
+ "Plan_Type": {
1182
+ "type": "string",
1183
+ "enum": [
1184
+ "automated",
1185
+ "manual",
1186
+ "hybrid"
1187
+ ],
1188
+ "description": "The type of assessment. 'automated' for scanner-driven, 'manual' for human-performed, 'hybrid' for both.",
1189
+ "title": "Plan Type"
1190
+ },
1191
+ "Runner_Config": {
1192
+ "type": "object",
1193
+ "unevaluatedProperties": false,
1194
+ "properties": {
1195
+ "name": {
1196
+ "type": "string",
1197
+ "description": "Name of the assessment runner. Example: 'cinc-auditor', 'inspec', 'openscap'."
1198
+ },
1199
+ "version": {
1200
+ "type": "string",
1201
+ "description": "Version of the runner."
1202
+ }
1203
+ },
1204
+ "description": "Configuration for the assessment runner/scanner.",
1205
+ "title": "Runner Config"
1206
+ },
1207
+ "Assessment": {
1208
+ "type": "object",
1209
+ "unevaluatedProperties": false,
1210
+ "required": [
1211
+ "baselineRef"
1212
+ ],
1213
+ "properties": {
1214
+ "baselineRef": {
1215
+ "type": "string",
1216
+ "format": "uri-reference",
1217
+ "description": "Reference to the baseline to evaluate. May be a baseline name (e.g. 'RHEL9-STIG'), a relative path to an HDF Baseline document (e.g. 'rhel9-stig.hdf-baseline.json'), or an absolute URI."
1218
+ },
1219
+ "componentRef": {
1220
+ "type": "string",
1221
+ "format": "uuid",
1222
+ "description": "componentId of the system component this assessment targets. Use for direct component binding. Alternative to targetSelector."
1223
+ },
1224
+ "targetSelector": {
1225
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0#/$defs/Target_Selector",
1226
+ "description": "Label selector to match targets for this assessment. Overrides the system component's targetSelector if provided."
1227
+ },
1228
+ "inputs": {
1229
+ "type": "object",
1230
+ "additionalProperties": true,
1231
+ "description": "Resolved input values for this assessment. Keys are input names, values are the final resolved values (after baseline defaults + system overrides)."
1232
+ },
1233
+ "runner": {
1234
+ "$ref": "#/$defs/Runner_Config",
1235
+ "description": "Runner/scanner configuration for this assessment."
1236
+ },
1237
+ "description": {
1238
+ "type": "string",
1239
+ "description": "Description of this assessment's purpose."
1240
+ }
1241
+ },
1242
+ "examples": [
1243
+ {
1244
+ "baselineRef": "RHEL9-STIG",
1245
+ "targetSelector": {
1246
+ "labels.component": "WebTier"
1247
+ },
1248
+ "inputs": {
1249
+ "max_concurrent_sessions": 5,
1250
+ "password_min_length": 15
1251
+ },
1252
+ "runner": {
1253
+ "name": "cinc-auditor",
1254
+ "version": "6.8.1"
1255
+ }
1256
+ }
1257
+ ],
1258
+ "description": "A single assessment within a plan — defines which baseline to run against which targets with what configuration.",
1259
+ "title": "Assessment"
1260
+ },
1261
+ "Schedule": {
1262
+ "type": "object",
1263
+ "unevaluatedProperties": false,
1264
+ "properties": {
1265
+ "cron": {
1266
+ "type": "string",
1267
+ "description": "Cron expression for recurring assessments. Example: '0 2 1 * *' (2 AM on the 1st of each month)."
1268
+ },
1269
+ "startDate": {
1270
+ "type": "string",
1271
+ "format": "date-time",
1272
+ "description": "Earliest date to begin assessments. ISO 8601 format."
1273
+ },
1274
+ "endDate": {
1275
+ "type": "string",
1276
+ "format": "date-time",
1277
+ "description": "Date after which assessments should no longer run. ISO 8601 format."
1278
+ },
1279
+ "notifyOnRegression": {
1280
+ "type": "array",
1281
+ "items": {
1282
+ "type": "string"
1283
+ },
1284
+ "description": "Email addresses or notification endpoints to alert when regressions are detected."
1285
+ },
1286
+ "notifyOnCompletion": {
1287
+ "type": "array",
1288
+ "items": {
1289
+ "type": "string"
1290
+ },
1291
+ "description": "Email addresses or notification endpoints to alert when assessments complete."
1292
+ }
1293
+ },
1294
+ "examples": [
1295
+ {
1296
+ "cron": "0 2 1 * *",
1297
+ "notifyOnRegression": [
1298
+ "security-team@agency.gov"
1299
+ ]
1300
+ }
1301
+ ],
1302
+ "description": "Scheduling configuration for recurring assessments.",
1303
+ "title": "Schedule"
1304
+ }
1305
+ }
1306
+ },
1307
+ "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0": {
1308
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
1309
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.5.0",
1310
+ "title": "HDF System Primitives",
1311
+ "description": "Types for describing system architecture, authorization boundaries, and components.",
1312
+ "$defs": {
1313
+ "Authorization_Status": {
1314
+ "type": "string",
1315
+ "enum": [
1316
+ "authorized",
1317
+ "denied",
1318
+ "pendingAuthorization",
1319
+ "conditionallyAuthorized",
1320
+ "notYetRequested",
1321
+ "revoked"
1322
+ ],
1323
+ "description": "Authorization to Operate (ATO) status for the system.",
1324
+ "title": "Authorization Status"
1325
+ },
1326
+ "Categorization_Level": {
1327
+ "type": "string",
1328
+ "enum": [
1329
+ "low",
1330
+ "moderate",
1331
+ "high"
1332
+ ],
1333
+ "description": "FIPS 199 security categorization level (impact level).",
1334
+ "title": "Categorization Level"
1335
+ },
1336
+ "Input_Override": {
1337
+ "type": "object",
1338
+ "unevaluatedProperties": false,
1339
+ "required": [
1340
+ "inputName",
1341
+ "value"
1342
+ ],
1343
+ "properties": {
1344
+ "baselineRef": {
1345
+ "type": "string",
1346
+ "description": "Name of the baseline this override applies to. If omitted, applies to all baselines that define this input."
1347
+ },
1348
+ "inputName": {
1349
+ "type": "string",
1350
+ "description": "Name of the input being overridden. Must match an Input.name in the referenced baseline."
1113
1351
  },
1114
- "tags": {
1115
- "type": "object",
1116
- "additionalProperties": true,
1117
- "description": "A set of tags - usually metadata like CCI, STIG ID, severity."
1352
+ "value": {
1353
+ "description": "The overridden value. Should match the type of the original input."
1118
1354
  },
1119
- "code": {
1355
+ "justification": {
1120
1356
  "type": "string",
1121
- "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."
1357
+ "description": "Rationale for why this override is needed."
1122
1358
  },
1123
- "sourceLocation": {
1124
- "$ref": "#/$defs/Source_Location",
1125
- "description": "The explicit location of the requirement within the source code."
1359
+ "approvedBy": {
1360
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
1361
+ "description": "Identity of the person or system that approved this override."
1362
+ }
1363
+ },
1364
+ "description": "An override of a baseline input value for a specific component. Enables system-specific tailoring of baseline parameters.",
1365
+ "title": "Input Override"
1366
+ },
1367
+ "Target_Selector": {
1368
+ "type": "object",
1369
+ "additionalProperties": {
1370
+ "type": "string"
1371
+ },
1372
+ "description": "A label selector that matches targets by label key-value pairs. All specified labels must match (AND logic). Example: { \"labels.component\": \"WebTier\" } matches targets with labels.component = \"WebTier\".",
1373
+ "title": "Target Selector"
1374
+ },
1375
+ "Control_Designation": {
1376
+ "type": "object",
1377
+ "unevaluatedProperties": false,
1378
+ "required": [
1379
+ "controlId",
1380
+ "designation",
1381
+ "description"
1382
+ ],
1383
+ "properties": {
1384
+ "controlId": {
1385
+ "type": "string",
1386
+ "description": "The control identifier (e.g., 'SC-7', 'AC-2 (1)'). Must match a NIST tag in a baseline requirement's tags."
1126
1387
  },
1127
- "controlType": {
1388
+ "designation": {
1128
1389
  "type": "string",
1129
- "title": "Control Type",
1390
+ "title": "Designation",
1130
1391
  "enum": [
1131
- "policy",
1132
- "procedure",
1133
- "technical",
1134
- "management",
1135
- "operational"
1392
+ "common",
1393
+ "system-specific",
1394
+ "hybrid"
1136
1395
  ],
1137
- "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."
1396
+ "description": "NIST SP 800-53 control designation. 'common': fully provided by another component or system. 'system-specific': implemented by the inheriting component(s) only. 'hybrid': shared responsibility between provider and inheritor."
1138
1397
  },
1139
- "verificationMethod": {
1140
- "$ref": "#/$defs/Verification_Method_Enum",
1141
- "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."
1398
+ "providedBy": {
1399
+ "type": "string",
1400
+ "format": "uuid",
1401
+ "description": "componentId of a local component that provides this control. Omit when the provider is an external system."
1142
1402
  },
1143
- "applicability": {
1403
+ "systemRef": {
1144
1404
  "type": "string",
1145
- "title": "Applicability",
1146
- "enum": [
1147
- "required",
1148
- "optional",
1149
- "advisory"
1150
- ],
1151
- "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."
1152
- }
1153
- },
1154
- "examples": [
1155
- {
1156
- "$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.4.0 (backward compatibility).",
1157
- "id": "SV-238196",
1158
- "title": "The Ubuntu operating system must enforce password complexity",
1159
- "impact": 0.5,
1160
- "tags": {
1161
- "nist": [
1162
- "IA-5"
1163
- ],
1164
- "severity": "medium",
1165
- "cci": [
1166
- "CCI-000192"
1167
- ]
1168
- },
1169
- "refs": [
1170
- {
1171
- "url": "https://public.cyber.mil/stigs/"
1172
- }
1173
- ],
1174
- "descriptions": [
1175
- {
1176
- "label": "default",
1177
- "data": "Use of a complex password helps to increase the time and resources required to compromise the password."
1178
- },
1179
- {
1180
- "label": "check",
1181
- "data": "Verify the value of 'minlen' in /etc/security/pwquality.conf."
1182
- }
1183
- ]
1405
+ "format": "uri-reference",
1406
+ "description": "Reference to another hdf-system document whose component provides this control. Use when the provider is in a different system. Omit when the provider is local."
1184
1407
  },
1185
- {
1186
- "$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.",
1187
- "id": "AC-3",
1188
- "title": "Access Enforcement",
1189
- "impact": 0.7,
1190
- "tags": {
1191
- "nist": [
1192
- "AC-3"
1193
- ],
1194
- "severity": "high"
1408
+ "inheritedBy": {
1409
+ "type": "array",
1410
+ "items": {
1411
+ "type": "string",
1412
+ "format": "uuid"
1195
1413
  },
1196
- "descriptions": [
1197
- {
1198
- "label": "default",
1199
- "data": "The information system enforces approved authorizations for logical access to information and system resources."
1200
- }
1201
- ],
1202
- "code": "control 'AC-3' do; impact 0.7; end",
1203
- "controlType": "technical",
1204
- "verificationMethod": "automated",
1205
- "applicability": "required"
1414
+ "description": "componentIds that inherit this control. If omitted, all components in the system inherit it."
1206
1415
  },
1416
+ "description": {
1417
+ "type": "string",
1418
+ "description": "Justification for this designation — who provides the control, why it's inherited, and any relevant authorization references."
1419
+ }
1420
+ },
1421
+ "examples": [
1207
1422
  {
1208
- "$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.",
1209
- "id": "KSI-CNA-01",
1210
- "title": "Cyber Security Plan documents the system",
1211
- "impact": 0.5,
1212
- "tags": {
1213
- "ksi": [
1214
- "KSI-CNA"
1215
- ]
1216
- },
1217
- "descriptions": [
1218
- {
1219
- "label": "default",
1220
- "data": "The Cyber Security Plan documents the system, its boundary, and its components."
1221
- }
1423
+ "controlId": "IA-2",
1424
+ "designation": "common",
1425
+ "providedBy": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
1426
+ "inheritedBy": [
1427
+ "11111111-2222-3333-4444-555555555555"
1222
1428
  ],
1223
- "controlType": "policy",
1224
- "verificationMethod": "manual-by-design",
1225
- "applicability": "required"
1429
+ "description": "User identification and authentication provided by Keycloak SSO via SAML 2.0."
1226
1430
  },
1227
1431
  {
1228
- "$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.",
1229
- "id": "SV-999999",
1230
- "title": "Example STIG rule pending automation",
1231
- "impact": 0.3,
1232
- "tags": {
1233
- "stig_id": "SV-999999"
1234
- },
1235
- "descriptions": [
1236
- {
1237
- "label": "default",
1238
- "data": "Example requirement that is intended to be automated but currently lacks a fix block."
1239
- },
1240
- {
1241
- "label": "check",
1242
- "data": "Manual review of system configuration is required."
1243
- }
1244
- ],
1245
- "verificationMethod": "manual-pending-automation",
1246
- "applicability": "advisory"
1432
+ "controlId": "PE-2",
1433
+ "designation": "common",
1434
+ "description": "Physical access authorizations provided by AWS GovCloud per FedRAMP High authorization."
1247
1435
  }
1248
1436
  ],
1249
- "description": "Core requirement fields shared between baseline requirements and evaluated requirements. Contains the fundamental requirement definition without assessment results.",
1250
- "title": "Requirement Core"
1251
- },
1252
- "Verification_Method_Enum": {
1253
- "type": "string",
1254
- "enum": [
1255
- "automated",
1256
- "manual-by-design",
1257
- "manual-pending-automation",
1258
- "hybrid"
1259
- ],
1260
- "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.",
1261
- "title": "Verification Method Enum"
1262
- },
1263
- "Severity": {
1264
- "type": "string",
1265
- "enum": [
1266
- "critical",
1267
- "high",
1268
- "medium",
1269
- "low",
1270
- "informational"
1271
- ],
1272
- "description": "Severity rating for a requirement. Typically derived from the numeric impact score.",
1273
- "title": "Severity"
1274
- },
1275
- "Cloud_Provider": {
1276
- "type": [
1277
- "string",
1278
- "null"
1279
- ],
1280
- "enum": [
1281
- "aws",
1282
- "azure",
1283
- "gcp",
1284
- "oci",
1285
- "other",
1286
- null
1287
- ],
1288
- "description": "Cloud service provider identifier.",
1289
- "title": "Cloud Provider"
1437
+ "description": "Declares a control's designation within a system — whether it is common (provided by another component or system), system-specific (implemented locally), or hybrid (shared responsibility). Maps to NIST SP 800-53 Appendix C control designations and OSCAL SSP by-component provided/inherited semantics.",
1438
+ "title": "Control Designation"
1290
1439
  }
1291
1440
  }
1292
1441
  },
1293
- "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0": {
1442
+ "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0": {
1294
1443
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1295
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0",
1444
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.5.0",
1296
1445
  "title": "HDF Extension Primitives",
1297
1446
  "description": "Extension types for waivers, attestations, generators, and integrity.",
1298
1447
  "$defs": {
@@ -1319,16 +1468,23 @@
1319
1468
  }
1320
1469
  ],
1321
1470
  "properties": {
1471
+ "externalReferences": {
1472
+ "type": "array",
1473
+ "items": {
1474
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
1475
+ },
1476
+ "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."
1477
+ },
1322
1478
  "type": {
1323
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Override_Type",
1479
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Override_Type",
1324
1480
  "description": "The type of override applied to this requirement."
1325
1481
  },
1326
1482
  "status": {
1327
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Result_Status",
1483
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
1328
1484
  "description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
1329
1485
  },
1330
1486
  "impact": {
1331
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Impact_Override",
1487
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Impact_Override",
1332
1488
  "description": "Override to the requirement's impact score. At least one of status or impact must be set."
1333
1489
  },
1334
1490
  "reason": {
@@ -1336,7 +1492,7 @@
1336
1492
  "description": "Explanation for why this override was applied."
1337
1493
  },
1338
1494
  "appliedBy": {
1339
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
1495
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
1340
1496
  "description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
1341
1497
  },
1342
1498
  "appliedAt": {
@@ -1350,27 +1506,27 @@
1350
1506
  "description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
1351
1507
  },
1352
1508
  "signature": {
1353
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Signature",
1509
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Signature",
1354
1510
  "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."
1355
1511
  },
1356
1512
  "evidence": {
1357
1513
  "type": "array",
1358
1514
  "items": {
1359
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
1515
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
1360
1516
  },
1361
1517
  "description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
1362
1518
  },
1363
1519
  "previousChecksum": {
1364
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
1520
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
1365
1521
  "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."
1366
1522
  },
1367
1523
  "cvss": {
1368
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0#/$defs/Cvss",
1524
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0#/$defs/Cvss",
1369
1525
  "$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.",
1370
1526
  "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."
1371
1527
  },
1372
1528
  "justification": {
1373
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Justification",
1529
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0#/$defs/Justification",
1374
1530
  "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."
1375
1531
  }
1376
1532
  },
@@ -1399,6 +1555,34 @@
1399
1555
  "appliedAt": "2026-04-14T10:00:00Z",
1400
1556
  "expiresAt": "2026-10-14T00:00:00Z"
1401
1557
  },
1558
+ {
1559
+ "$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.",
1560
+ "type": "riskAdjustment",
1561
+ "impact": {
1562
+ "value": 0.9
1563
+ },
1564
+ "reason": "CVE-2021-44228 actively exploited in the wild per STIX threat intelligence",
1565
+ "appliedBy": {
1566
+ "identifier": "secops@agency.gov",
1567
+ "type": "email"
1568
+ },
1569
+ "appliedAt": "2026-07-27T00:00:00Z",
1570
+ "expiresAt": "2026-10-25T00:00:00Z",
1571
+ "externalReferences": [
1572
+ {
1573
+ "sourceName": "stix",
1574
+ "externalId": "sighting--a1b2c3d4-0000-4a2b-9c3d-000000000002",
1575
+ "kind": "threat-intel",
1576
+ "rel": "evidence",
1577
+ "document": {
1578
+ "type": "sighting",
1579
+ "spec_version": "2.1",
1580
+ "id": "sighting--a1b2c3d4-0000-4a2b-9c3d-000000000002",
1581
+ "sighting_of_ref": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001"
1582
+ }
1583
+ }
1584
+ ]
1585
+ },
1402
1586
  {
1403
1587
  "type": "falsePositive",
1404
1588
  "status": "passed",
@@ -1458,7 +1642,8 @@
1458
1642
  "type",
1459
1643
  "explanation",
1460
1644
  "appliedBy",
1461
- "appliedAt"
1645
+ "appliedAt",
1646
+ "expiresAt"
1462
1647
  ],
1463
1648
  "properties": {
1464
1649
  "type": {
@@ -1477,7 +1662,7 @@
1477
1662
  "description": "Detailed explanation of the plan, including what actions will be taken."
1478
1663
  },
1479
1664
  "appliedBy": {
1480
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
1665
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
1481
1666
  "description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
1482
1667
  },
1483
1668
  "appliedAt": {
@@ -1488,28 +1673,28 @@
1488
1673
  "expiresAt": {
1489
1674
  "type": "string",
1490
1675
  "format": "date-time",
1491
- "description": "Optional expiration date for this POA&M requiring review/renewal. ISO 8601 format."
1676
+ "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."
1492
1677
  },
1493
1678
  "milestones": {
1494
1679
  "type": "array",
1495
1680
  "items": {
1496
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Milestone"
1681
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Milestone"
1497
1682
  },
1498
1683
  "description": "Optional array of milestones tracking progress toward completion."
1499
1684
  },
1500
1685
  "signature": {
1501
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Signature",
1686
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Signature",
1502
1687
  "description": "Optional digital signature for enhanced trust and non-repudiation."
1503
1688
  },
1504
1689
  "evidence": {
1505
1690
  "type": "array",
1506
1691
  "items": {
1507
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
1692
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
1508
1693
  },
1509
1694
  "description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
1510
1695
  },
1511
1696
  "previousChecksum": {
1512
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
1697
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
1513
1698
  "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."
1514
1699
  }
1515
1700
  },
@@ -1522,6 +1707,7 @@
1522
1707
  "type": "email"
1523
1708
  },
1524
1709
  "appliedAt": "2025-12-01T09:00:00Z",
1710
+ "expiresAt": "2099-12-31T00:00:00Z",
1525
1711
  "milestones": [
1526
1712
  {
1527
1713
  "description": "Update base Docker image to use OpenSSL 3.0.x",
@@ -1554,7 +1740,7 @@
1554
1740
  "description": "Automated POA&M creation from vulnerability scan"
1555
1741
  },
1556
1742
  "appliedAt": "2025-11-28T14:00:00Z",
1557
- "expiresAt": "2026-02-28T00:00:00Z",
1743
+ "expiresAt": "2099-12-31T00:00:00Z",
1558
1744
  "milestones": [
1559
1745
  {
1560
1746
  "description": "Configure firewall rules to restrict database access to management VLAN",
@@ -1589,7 +1775,7 @@
1589
1775
  "type": "email"
1590
1776
  },
1591
1777
  "appliedAt": "2025-12-05T10:00:00Z",
1592
- "expiresAt": "2026-04-01T00:00:00Z",
1778
+ "expiresAt": "2099-12-31T00:00:00Z",
1593
1779
  "milestones": [
1594
1780
  {
1595
1781
  "description": "Complete migration to replacement system",
@@ -1641,7 +1827,8 @@
1641
1827
  },
1642
1828
  "format": {
1643
1829
  "type": "string",
1644
- "description": "The file format, if it is a recognized named format shared by multiple tools. Examples: 'SARIF', 'XCCDF'. Omit for tool-specific formats where the tool name already implies the format (Nessus XML, gosec JSON)."
1830
+ "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.",
1831
+ "$comment": "Format-not-serialization rule decided 2026-08-01; bare JSON/XML/CSV labels were swept from the converters at the same time."
1645
1832
  }
1646
1833
  },
1647
1834
  "description": "The security tool that produced the assessment data represented in this HDF file. Aligns with SARIF, OSCAL, and CycloneDX terminology.",
@@ -1660,7 +1847,7 @@
1660
1847
  },
1661
1848
  "properties": {
1662
1849
  "algorithm": {
1663
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Hash_Algorithm",
1850
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Hash_Algorithm",
1664
1851
  "description": "The hash algorithm used for the checksum."
1665
1852
  },
1666
1853
  "checksum": {
@@ -1693,9 +1880,9 @@
1693
1880
  }
1694
1881
  }
1695
1882
  },
1696
- "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0": {
1883
+ "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0": {
1697
1884
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1698
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0",
1885
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.5.0",
1699
1886
  "title": "HDF Amendment Primitives",
1700
1887
  "description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
1701
1888
  "$defs": {
@@ -1803,6 +1990,13 @@
1803
1990
  ]
1804
1991
  },
1805
1992
  "properties": {
1993
+ "externalReferences": {
1994
+ "type": "array",
1995
+ "items": {
1996
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/External_Reference"
1997
+ },
1998
+ "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."
1999
+ },
1806
2000
  "type": {
1807
2001
  "$ref": "#/$defs/Override_Type",
1808
2002
  "description": "The type of amendment."
@@ -1816,7 +2010,7 @@
1816
2010
  "description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
1817
2011
  },
1818
2012
  "status": {
1819
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Result_Status",
2013
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0#/$defs/Result_Status",
1820
2014
  "description": "The new status this amendment sets. Optional when only impact is being overridden."
1821
2015
  },
1822
2016
  "impact": {
@@ -1828,7 +2022,7 @@
1828
2022
  "description": "Justification for this amendment."
1829
2023
  },
1830
2024
  "appliedBy": {
1831
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
2025
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Identity",
1832
2026
  "description": "Identity of who applied this amendment."
1833
2027
  },
1834
2028
  "appliedAt": {
@@ -1844,20 +2038,20 @@
1844
2038
  "evidence": {
1845
2039
  "type": "array",
1846
2040
  "items": {
1847
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
2041
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Evidence"
1848
2042
  },
1849
2043
  "description": "Supporting evidence (screenshots, logs, URLs, documents)."
1850
2044
  },
1851
2045
  "signature": {
1852
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Signature",
2046
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Signature",
1853
2047
  "description": "Digital signature for non-repudiation."
1854
2048
  },
1855
2049
  "previousChecksum": {
1856
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
2050
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Checksum",
1857
2051
  "description": "Checksum of the prior amendment in the chain. Creates a tamper-evident linked list. Null for the first amendment."
1858
2052
  },
1859
2053
  "cvss": {
1860
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0#/$defs/Cvss",
2054
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0#/$defs/Cvss",
1861
2055
  "$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.",
1862
2056
  "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."
1863
2057
  },
@@ -1868,7 +2062,7 @@
1868
2062
  "milestones": {
1869
2063
  "type": "array",
1870
2064
  "items": {
1871
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Milestone"
2065
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.5.0#/$defs/Milestone"
1872
2066
  },
1873
2067
  "description": "Remediation milestones (primarily for POA&M type amendments)."
1874
2068
  },
@@ -1885,7 +2079,7 @@
1885
2079
  "affectedPackages": {
1886
2080
  "type": "array",
1887
2081
  "items": {
1888
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0#/$defs/Affected_Package"
2082
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0#/$defs/Affected_Package"
1889
2083
  },
1890
2084
  "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)."
1891
2085
  }
@@ -2018,9 +2212,9 @@
2018
2212
  }
2019
2213
  }
2020
2214
  },
2021
- "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0": {
2215
+ "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0": {
2022
2216
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2023
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0",
2217
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.5.0",
2024
2218
  "title": "HDF Result Primitives",
2025
2219
  "description": "Types for representing assessment results and statuses.",
2026
2220
  "$defs": {
@@ -2151,9 +2345,9 @@
2151
2345
  }
2152
2346
  }
2153
2347
  },
2154
- "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0": {
2348
+ "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0": {
2155
2349
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2156
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0",
2350
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.5.0",
2157
2351
  "title": "HDF CVSS Primitives",
2158
2352
  "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).",
2159
2353
  "$defs": {
@@ -2355,9 +2549,9 @@
2355
2549
  }
2356
2550
  }
2357
2551
  },
2358
- "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0": {
2552
+ "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0": {
2359
2553
  "$schema": "https://json-schema.org/draft/2020-12/schema",
2360
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0",
2554
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.5.0",
2361
2555
  "title": "HDF Affected Package Primitives",
2362
2556
  "description": "Types for representing the software package(s) affected by a vulnerability finding.",
2363
2557
  "$defs": {