@mitre/hdf-schema 3.7.2 → 3.8.0-next.42532249979.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.
- package/README.md +9 -0
- package/dist/go/hdf.go +348 -181
- package/dist/helpers.d.ts +7 -5
- package/dist/helpers.js +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +28 -28
- package/dist/schemas/hdf-amendments.schema.json +414 -62
- package/dist/schemas/hdf-baseline.schema.json +419 -67
- package/dist/schemas/hdf-comparison.schema.json +730 -153
- package/dist/schemas/hdf-evidence-package.schema.json +418 -65
- package/dist/schemas/hdf-plan.schema.json +420 -68
- package/dist/schemas/hdf-requirement-change-event.schema.json +486 -140
- package/dist/schemas/hdf-results.schema.json +472 -126
- package/dist/schemas/hdf-system.schema.json +435 -83
- package/dist/ts/hdf.d.ts +218 -26
- package/dist/ts/hdf.js +18 -2
- package/dist/ts/hdf.ts +219 -20
- package/package.json +3 -3
|
@@ -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-results/v3.
|
|
3
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.8.0",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"unevaluatedProperties": false,
|
|
6
6
|
"required": [
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"externalReferences": {
|
|
11
11
|
"type": "array",
|
|
12
12
|
"items": {
|
|
13
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
13
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/External_Reference"
|
|
14
14
|
},
|
|
15
15
|
"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."
|
|
16
16
|
},
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"components": {
|
|
28
28
|
"type": "array",
|
|
29
29
|
"items": {
|
|
30
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
30
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.8.0#/$defs/Component"
|
|
31
31
|
},
|
|
32
32
|
"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."
|
|
33
33
|
},
|
|
@@ -39,23 +39,23 @@
|
|
|
39
39
|
"description": "Information on the baselines that were evaluated, including findings."
|
|
40
40
|
},
|
|
41
41
|
"statistics": {
|
|
42
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
42
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.8.0#/$defs/Statistics",
|
|
43
43
|
"description": "Statistics for the assessment run, including duration and result counts."
|
|
44
44
|
},
|
|
45
45
|
"generator": {
|
|
46
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
46
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0#/$defs/Generator",
|
|
47
47
|
"description": "Information about the tool that generated this file."
|
|
48
48
|
},
|
|
49
49
|
"tool": {
|
|
50
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
50
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0#/$defs/Tool",
|
|
51
51
|
"description": "The security tool that produced the assessment data in this file."
|
|
52
52
|
},
|
|
53
53
|
"integrity": {
|
|
54
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
54
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0#/$defs/Integrity",
|
|
55
55
|
"description": "Cryptographic integrity information for verifying this file."
|
|
56
56
|
},
|
|
57
57
|
"preAmendmentChecksum": {
|
|
58
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
58
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum",
|
|
59
59
|
"description": "Hash of this results document as it stood immediately before the most recent amendment application. Written by `hdf amend apply` when it applies at least one override; an apply that matches nothing leaves the document untouched. The hash covers the results file's RAW BYTES as read, not a canonical form, so reproducing it requires the byte-identical original — reformatting or re-serializing the source changes the value. Only the most recent pre-application state is recorded: applying amendments to an already-amended document REPLACES this value, so it is a single link back one step, not a growing chain. Distinct from the `previousChecksum` inside an override, which chains amendments to each other and is computed over a canonical JSON form.",
|
|
60
60
|
"$comment": "Example 1: the real SHA-256 of hdf-converters/converters/nessus-to-hdf/fixtures/expected/sample.nessus.hdf.json, reproducible with `shasum -a 256` on that file — chosen over a synthetic digest so a reader can verify the hash basis is the raw file bytes.",
|
|
61
61
|
"examples": [
|
|
@@ -66,11 +66,11 @@
|
|
|
66
66
|
]
|
|
67
67
|
},
|
|
68
68
|
"runner": {
|
|
69
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
69
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.8.0#/$defs/Runner",
|
|
70
70
|
"description": "Information about the test execution environment where the security tool was run. Distinct from targets (what is being tested)."
|
|
71
71
|
},
|
|
72
72
|
"remediation": {
|
|
73
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
73
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Remediation",
|
|
74
74
|
"description": "Optional reference to automated remediation resources (Ansible playbooks, Terraform scripts, etc.) for fixing failing requirements found in this assessment."
|
|
75
75
|
},
|
|
76
76
|
"systemRef": {
|
|
@@ -84,13 +84,12 @@
|
|
|
84
84
|
"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."
|
|
85
85
|
},
|
|
86
86
|
"derivation": {
|
|
87
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.
|
|
87
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.8.0#/$defs/Derivation",
|
|
88
88
|
"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."
|
|
89
89
|
},
|
|
90
90
|
"extensions": {
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"description": "Reserved for tool-specific data not defined in the HDF standard. Use this to preserve original tool output, auxiliary data, or custom metadata."
|
|
91
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0#/$defs/Extensions",
|
|
92
|
+
"description": "Producer data outside the HDF model, and the pre-converted source artifact(s) these results were converted from."
|
|
94
93
|
}
|
|
95
94
|
},
|
|
96
95
|
"examples": [
|
|
@@ -182,14 +181,14 @@
|
|
|
182
181
|
],
|
|
183
182
|
"allOf": [
|
|
184
183
|
{
|
|
185
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
184
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Baseline_Metadata"
|
|
186
185
|
}
|
|
187
186
|
],
|
|
188
187
|
"properties": {
|
|
189
188
|
"depends": {
|
|
190
189
|
"type": "array",
|
|
191
190
|
"items": {
|
|
192
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
191
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Dependency"
|
|
193
192
|
},
|
|
194
193
|
"description": "The set of dependencies this baseline depends on."
|
|
195
194
|
},
|
|
@@ -202,15 +201,15 @@
|
|
|
202
201
|
"description": "The description - should be more detailed than the summary."
|
|
203
202
|
},
|
|
204
203
|
"integrity": {
|
|
205
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
204
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0#/$defs/Integrity",
|
|
206
205
|
"description": "Cryptographic integrity information for verifying this baseline has not been tampered with."
|
|
207
206
|
},
|
|
208
207
|
"originalChecksum": {
|
|
209
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
208
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum",
|
|
210
209
|
"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."
|
|
211
210
|
},
|
|
212
211
|
"resultsChecksum": {
|
|
213
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
212
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum",
|
|
214
213
|
"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."
|
|
215
214
|
},
|
|
216
215
|
"statusMessage": {
|
|
@@ -228,21 +227,20 @@
|
|
|
228
227
|
"groups": {
|
|
229
228
|
"type": "array",
|
|
230
229
|
"items": {
|
|
231
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
230
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Requirement_Group"
|
|
232
231
|
},
|
|
233
232
|
"description": "A set of descriptions for the requirement groups."
|
|
234
233
|
},
|
|
235
234
|
"inputs": {
|
|
236
235
|
"type": "array",
|
|
237
236
|
"items": {
|
|
238
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
237
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.8.0#/$defs/Input"
|
|
239
238
|
},
|
|
240
239
|
"description": "Typed inputs used to parameterize this baseline at execution time. See the Input primitive for the full schema."
|
|
241
240
|
},
|
|
242
241
|
"extensions": {
|
|
243
|
-
"
|
|
244
|
-
"
|
|
245
|
-
"description": "Reserved for tool-specific baseline metadata not defined in the HDF standard."
|
|
242
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0#/$defs/Extensions",
|
|
243
|
+
"description": "Producer data outside the HDF model that belongs to this baseline rather than to the document, and the pre-converted source artifact(s) this baseline was built from."
|
|
246
244
|
}
|
|
247
245
|
},
|
|
248
246
|
"description": "Information on a baseline that was evaluated, including any findings.",
|
|
@@ -260,7 +258,7 @@
|
|
|
260
258
|
],
|
|
261
259
|
"allOf": [
|
|
262
260
|
{
|
|
263
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
261
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Requirement_Core"
|
|
264
262
|
}
|
|
265
263
|
],
|
|
266
264
|
"properties": {
|
|
@@ -268,7 +266,7 @@
|
|
|
268
266
|
"type": "array",
|
|
269
267
|
"minItems": 1,
|
|
270
268
|
"items": {
|
|
271
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
269
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.8.0#/$defs/Requirement_Description"
|
|
272
270
|
},
|
|
273
271
|
"contains": {
|
|
274
272
|
"type": "object",
|
|
@@ -284,37 +282,37 @@
|
|
|
284
282
|
"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'."
|
|
285
283
|
},
|
|
286
284
|
"severity": {
|
|
287
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
285
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Severity",
|
|
288
286
|
"description": "Explicit severity rating. Typically derived from impact score but provided explicitly for clarity."
|
|
289
287
|
},
|
|
290
288
|
"sourceLocation": {
|
|
291
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
289
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Source_Location",
|
|
292
290
|
"description": "The explicit location of the requirement within the source code."
|
|
293
291
|
},
|
|
294
292
|
"results": {
|
|
295
293
|
"type": "array",
|
|
296
294
|
"minItems": 1,
|
|
297
295
|
"items": {
|
|
298
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
296
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.8.0#/$defs/Requirement_Result"
|
|
299
297
|
},
|
|
300
298
|
"description": "The set of all tests within the requirement and their results."
|
|
301
299
|
},
|
|
302
300
|
"statusOverrides": {
|
|
303
301
|
"type": "array",
|
|
304
302
|
"items": {
|
|
305
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
303
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0#/$defs/Status_Override"
|
|
306
304
|
},
|
|
307
305
|
"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). Array order is NOT significant: consumers resolve the governing override by appliedAt (the most recently applied non-expired one), never by position. Earlier revisions of this description asked for most-recent-first, but nothing enforces it and producers commonly append, so position is frequently the opposite of recency. Preserves full audit trail."
|
|
308
306
|
},
|
|
309
307
|
"poams": {
|
|
310
308
|
"type": "array",
|
|
311
309
|
"items": {
|
|
312
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
310
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0#/$defs/POAM"
|
|
313
311
|
},
|
|
314
312
|
"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."
|
|
315
313
|
},
|
|
316
314
|
"effectiveStatus": {
|
|
317
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
315
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.8.0#/$defs/Result_Status",
|
|
318
316
|
"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."
|
|
319
317
|
},
|
|
320
318
|
"effectiveImpact": {
|
|
@@ -324,33 +322,33 @@
|
|
|
324
322
|
"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."
|
|
325
323
|
},
|
|
326
324
|
"disposition": {
|
|
327
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
325
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.8.0#/$defs/Override_Type",
|
|
328
326
|
"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."
|
|
329
327
|
},
|
|
330
328
|
"effectiveChecksum": {
|
|
331
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
329
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum",
|
|
332
330
|
"description": "Checksum of this requirement's resolved effective posture, for per-control change detection in continuous monitoring.\n\nsha256 over the canonical JSON object with keys status, impact, disposition (in that order), holding the resolved effective status, resolved effective impact, and governing override type (null when nothing governs), with override expiry anchored to the document timestamp.\n\nFlips exactly when the operative status, impact, or disposition changes; stable under all other churn (result details, timestamps, tags).\n\nOptional; stamped by tooling (hdf convert, hdf amend apply)."
|
|
333
331
|
},
|
|
334
332
|
"evidence": {
|
|
335
333
|
"type": "array",
|
|
336
334
|
"items": {
|
|
337
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
335
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Evidence"
|
|
338
336
|
},
|
|
339
337
|
"description": "Supporting evidence for this requirement's findings, such as screenshots, code samples, or log excerpts."
|
|
340
338
|
},
|
|
341
339
|
"cvss": {
|
|
342
340
|
"type": "array",
|
|
343
341
|
"items": {
|
|
344
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
342
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.8.0#/$defs/Cvss"
|
|
345
343
|
},
|
|
346
344
|
"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."
|
|
347
345
|
},
|
|
348
346
|
"epss": {
|
|
349
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.
|
|
347
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.8.0#/$defs/Epss",
|
|
350
348
|
"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."
|
|
351
349
|
},
|
|
352
350
|
"kev": {
|
|
353
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.
|
|
351
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.8.0#/$defs/Kev",
|
|
354
352
|
"description": "CISA Known Exploited Vulnerabilities (KEV) catalog status. When inKev=true, dateAdded and dueDate carry the federal patching deadline."
|
|
355
353
|
},
|
|
356
354
|
"cwe": {
|
|
@@ -364,7 +362,7 @@
|
|
|
364
362
|
"affectedPackages": {
|
|
365
363
|
"type": "array",
|
|
366
364
|
"items": {
|
|
367
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
365
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.8.0#/$defs/Affected_Package"
|
|
368
366
|
},
|
|
369
367
|
"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)."
|
|
370
368
|
}
|
|
@@ -651,16 +649,16 @@
|
|
|
651
649
|
"description": "A requirement that has been evaluated, including any findings.",
|
|
652
650
|
"title": "Evaluated Requirement"
|
|
653
651
|
},
|
|
654
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
652
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0": {
|
|
655
653
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
656
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
654
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0",
|
|
657
655
|
"title": "HDF Common Primitives",
|
|
658
656
|
"description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
|
|
659
657
|
"$defs": {
|
|
660
658
|
"External_Reference": {
|
|
661
659
|
"type": "object",
|
|
662
660
|
"title": "External Reference",
|
|
663
|
-
"description": "A generalized reference to any external artifact by identity and/or location, modeled on the STIX 2.1 `external_references` common property.\n\nPurpose-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.\n\n`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.\n\nA reference is inert context: it overrides nothing, so it carries only lightweight optional `addedBy`/`addedAt` attribution, never override machinery.",
|
|
661
|
+
"description": "A generalized reference to any external artifact by identity and/or location, modeled on the STIX 2.1 `external_references` common property.\n\nPurpose-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.\n\n`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.\n\nAn entry may also carry the artifact itself rather than point at it: `document` for a JSON object, `content` + `encoding` for anything else. Embedding satisfies the at-least-one rule on its own, so an artifact with no meaningful public location needs no synthetic `href`.\n\nA reference is inert context: it overrides nothing, so it carries only lightweight optional `addedBy`/`addedAt` attribution, never override machinery.",
|
|
664
662
|
"required": [
|
|
665
663
|
"sourceName"
|
|
666
664
|
],
|
|
@@ -679,6 +677,42 @@
|
|
|
679
677
|
"required": [
|
|
680
678
|
"description"
|
|
681
679
|
]
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
"required": [
|
|
683
|
+
"content"
|
|
684
|
+
]
|
|
685
|
+
},
|
|
686
|
+
{
|
|
687
|
+
"required": [
|
|
688
|
+
"document"
|
|
689
|
+
]
|
|
690
|
+
}
|
|
691
|
+
],
|
|
692
|
+
"allOf": [
|
|
693
|
+
{
|
|
694
|
+
"if": {
|
|
695
|
+
"required": [
|
|
696
|
+
"content"
|
|
697
|
+
]
|
|
698
|
+
},
|
|
699
|
+
"then": {
|
|
700
|
+
"required": [
|
|
701
|
+
"encoding"
|
|
702
|
+
]
|
|
703
|
+
}
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
"if": {
|
|
707
|
+
"required": [
|
|
708
|
+
"encoding"
|
|
709
|
+
]
|
|
710
|
+
},
|
|
711
|
+
"then": {
|
|
712
|
+
"required": [
|
|
713
|
+
"content"
|
|
714
|
+
]
|
|
715
|
+
}
|
|
682
716
|
}
|
|
683
717
|
],
|
|
684
718
|
"properties": {
|
|
@@ -694,7 +728,7 @@
|
|
|
694
728
|
"href": {
|
|
695
729
|
"type": "string",
|
|
696
730
|
"format": "uri-reference",
|
|
697
|
-
"description": "Location of the artifact. `uri-reference` (not `uri`) so a bare internal `#fragment`/`#uuid` reference is expressible alongside absolute URLs.
|
|
731
|
+
"description": "Location of the artifact. `uri-reference` (not `uri`) so a bare internal `#fragment`/`#uuid` reference is expressible alongside absolute URLs. Set it only when the location is meaningful to a reader — never a producer's local filesystem path."
|
|
698
732
|
},
|
|
699
733
|
"description": {
|
|
700
734
|
"type": "string",
|
|
@@ -706,11 +740,11 @@
|
|
|
706
740
|
},
|
|
707
741
|
"mediaType": {
|
|
708
742
|
"type": "string",
|
|
709
|
-
"description": "IANA media type of the
|
|
743
|
+
"description": "IANA media type of the artifact (RFC 6838), e.g., 'application/json', 'application/xml', 'text/csv'. Applies both to an artifact retrievable at `href` and to one embedded here in `content` or `document`."
|
|
710
744
|
},
|
|
711
745
|
"checksum": {
|
|
712
746
|
"$ref": "#/$defs/Checksum",
|
|
713
|
-
"description": "Integrity hash of the
|
|
747
|
+
"description": "Integrity hash of the artifact. Reuses the HDF `Checksum` primitive (not STIX `hashes`). Applies both to an artifact retrievable at `href` and to one embedded here in `content` or `document` — beside embedded bytes it is what makes the copy verifiable rather than merely present."
|
|
714
748
|
},
|
|
715
749
|
"addedBy": {
|
|
716
750
|
"$ref": "#/$defs/Identity",
|
|
@@ -729,11 +763,24 @@
|
|
|
729
763
|
"document": {
|
|
730
764
|
"type": "object",
|
|
731
765
|
"additionalProperties": true,
|
|
732
|
-
"description": "Optional lossless embedded copy of the referenced artifact — the raw STIX object, EPSS record, advisory, or annotation payload — preserved verbatim.\n\nComposes 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.\n\nHDF 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)."
|
|
766
|
+
"description": "Optional lossless embedded copy of the referenced artifact as a JSON object — the raw STIX object, EPSS record, advisory, or annotation payload — preserved verbatim.\n\nJSON objects only. An artifact that is not a JSON object (XML, CSV, NDJSON, plain text, a JSON array, or bytes that are not text at all) embeds through `content` + `encoding` instead.\n\nComposes 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.\n\nHDF 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)."
|
|
767
|
+
},
|
|
768
|
+
"content": {
|
|
769
|
+
"type": "string",
|
|
770
|
+
"description": "Optional lossless embedded copy of the artifact's bytes as a string, for artifacts `document` cannot hold: XML, CSV, NDJSON, plain text, a JSON array, or bytes that are not valid UTF-8 text at all.\n\n`encoding` states how to read it back and is required alongside it. Set `mediaType` so a consumer knows what the bytes are, and `checksum` so the copy can be verified against the source.\n\nCarried verbatim — never reformatted, re-indented, or re-serialized."
|
|
771
|
+
},
|
|
772
|
+
"encoding": {
|
|
773
|
+
"type": "string",
|
|
774
|
+
"title": "External Reference Encoding",
|
|
775
|
+
"enum": [
|
|
776
|
+
"utf-8",
|
|
777
|
+
"base64"
|
|
778
|
+
],
|
|
779
|
+
"description": "How to read `content` back into the artifact's bytes. 'utf-8' for text (XML, CSV, NDJSON, plain text, JavaScript-wrapped JSON); 'base64' for anything that is not valid UTF-8 text.\n\nRequired whenever `content` is present, and meaningless without it — an embedded copy whose encoding a consumer has to guess is not lossless."
|
|
733
780
|
}
|
|
734
781
|
},
|
|
735
782
|
"unevaluatedProperties": false,
|
|
736
|
-
"$comment": "Examples, in order: 1) By-identity: cite a CVE by its id in the 'cve' system without a URL — equivalently urn:cve:CVE-2021-44228; 2) By-identity AND by-locator together (anyOf, not oneOf) — an ATT&CK technique cited by id with its canonical URL; 3) By-locator to a retrievable STIX bundle, with integrity hash, media type, and attribution; 4) Enrichment envelope: a STIX threat-intel object embedded losslessly in `document` and classified via `kind`, cited by id and pointed at by href — the pointer and the embedded copy compose. The payload rides verbatim; HDF does not normalize STIX fields.",
|
|
783
|
+
"$comment": "Examples, in order: 1) By-identity: cite a CVE by its id in the 'cve' system without a URL — equivalently urn:cve:CVE-2021-44228; 2) By-identity AND by-locator together (anyOf, not oneOf) — an ATT&CK technique cited by id with its canonical URL; 3) By-locator to a retrievable STIX bundle, with integrity hash, media type, and attribution; 4) Enrichment envelope: a STIX threat-intel object embedded losslessly in `document` and classified via `kind`, cited by id and pointed at by href — the pointer and the embedded copy compose. The payload rides verbatim; HDF does not normalize STIX fields; 5) Embed-only, text: an XCCDF results file carried in `content` as utf-8 with its media type and checksum, and no `href` at all — the artifact was read from a local file whose path means nothing to a reader; 6) Embed-only, non-text: a Fortify FPR (a zip) carried in `content` as base64, the case `document` and utf-8 both fail.",
|
|
737
784
|
"examples": [
|
|
738
785
|
{
|
|
739
786
|
"sourceName": "cve",
|
|
@@ -779,6 +826,28 @@
|
|
|
779
826
|
}
|
|
780
827
|
]
|
|
781
828
|
}
|
|
829
|
+
},
|
|
830
|
+
{
|
|
831
|
+
"sourceName": "openscap",
|
|
832
|
+
"rel": "raw-source",
|
|
833
|
+
"mediaType": "application/xml",
|
|
834
|
+
"encoding": "utf-8",
|
|
835
|
+
"content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Benchmark xmlns=\"http://checklists.nist.gov/xccdf/1.2\" id=\"xccdf_org.ssgproject.content_benchmark_RHEL-9\">\n <TestResult id=\"xccdf_org.open-scap_testresult_default-profile\" start-time=\"2026-09-27T12:00:00+00:00\" end-time=\"2026-09-27T12:04:11+00:00\">\n <rule-result idref=\"xccdf_org.ssgproject.content_rule_sshd_disable_root_login\" severity=\"medium\">\n <result>fail</result>\n </rule-result>\n </TestResult>\n</Benchmark>",
|
|
836
|
+
"checksum": {
|
|
837
|
+
"algorithm": "sha256",
|
|
838
|
+
"value": "713b3ee32af5c14ac93e519b5025d760983607143dba3a0438f68667923beda1"
|
|
839
|
+
}
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
"sourceName": "fortify",
|
|
843
|
+
"rel": "raw-source",
|
|
844
|
+
"mediaType": "application/zip",
|
|
845
|
+
"encoding": "base64",
|
|
846
|
+
"content": "UEsDBBQAAAAIAEVnPF20b/JoHgAAABwAAAAKAAAAYXVkaXQuZnZkbLOxr8jNUShLLSrOzM+zVTLUM1Cyt7NxC3Px0bcDAFBLAQIUAxQAAAAIAEVnPF20b/JoHgAAABwAAAAKAAAAAAAAAAAAAACAAQAAAABhdWRpdC5mdmRsUEsFBgAAAAABAAEAOAAAAEYAAAAAAA==",
|
|
847
|
+
"checksum": {
|
|
848
|
+
"algorithm": "sha256",
|
|
849
|
+
"value": "c7e4cefceecb83511ae6174c7d22584061671dee6dc5f27243503b47532a66b1"
|
|
850
|
+
}
|
|
782
851
|
}
|
|
783
852
|
]
|
|
784
853
|
},
|
|
@@ -790,7 +859,7 @@
|
|
|
790
859
|
"sha512",
|
|
791
860
|
"blake3"
|
|
792
861
|
],
|
|
793
|
-
"description": "
|
|
862
|
+
"description": "Cryptographic hash algorithms a checksum or integrity record may name. blake3 covers container-image and other artifact digests that use it. HDF tooling verifies every algorithm in this enum, so any of them may be recorded where the checksum needs to be verifiable.",
|
|
794
863
|
"title": "Hash Algorithm"
|
|
795
864
|
},
|
|
796
865
|
"Requirement_Group": {
|
|
@@ -948,7 +1017,33 @@
|
|
|
948
1017
|
}
|
|
949
1018
|
],
|
|
950
1019
|
"description": "A reference to an external document.",
|
|
951
|
-
"title": "Reference"
|
|
1020
|
+
"title": "Reference",
|
|
1021
|
+
"unevaluatedProperties": false,
|
|
1022
|
+
"$comment": "Examples, in order: 1) By-locator: a plain URL, the commonest form by far in practice; 2) By-name: a human-meaningful citation with no locator, as InSpec's `ref 'title'` emits; 3) Both together, since this is an anyOf rather than a oneOf; 4) The ref-as-array form, whose items are deliberately open so a source format's own reference record can be carried verbatim — XCCDF's DPMS target identifiers reach HDF this way; 5) uri, accepted as a synonym of url for documents that spell it that way. The object itself is CLOSED: a member none of the three branches declares is rejected. The openness that matters here is one level down, on the items of the ref array, and it is declared there explicitly. This primitive predates External_Reference, which is the STIX-aligned type a new converter should reach for; refs survives because it is InSpec-inherited and HDF consumes InSpec output.",
|
|
1023
|
+
"examples": [
|
|
1024
|
+
{
|
|
1025
|
+
"url": "https://nvd.nist.gov/vuln/detail/CVE-2021-44228"
|
|
1026
|
+
},
|
|
1027
|
+
{
|
|
1028
|
+
"ref": "NIST SP 800-53 Rev 5, AC-6"
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
"ref": "CIS Benchmark for RHEL 9, 1.1.1",
|
|
1032
|
+
"url": "https://www.cisecurity.org/benchmark/red_hat_linux"
|
|
1033
|
+
},
|
|
1034
|
+
{
|
|
1035
|
+
"ref": [
|
|
1036
|
+
{
|
|
1037
|
+
"identifier": "2921",
|
|
1038
|
+
"publisher": "DISA",
|
|
1039
|
+
"type": "DPMS Target"
|
|
1040
|
+
}
|
|
1041
|
+
]
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
"uri": "https://attack.mitre.org/techniques/T1059/"
|
|
1045
|
+
}
|
|
1046
|
+
]
|
|
952
1047
|
},
|
|
953
1048
|
"Source_Location": {
|
|
954
1049
|
"type": "object",
|
|
@@ -1762,9 +1857,9 @@
|
|
|
1762
1857
|
}
|
|
1763
1858
|
}
|
|
1764
1859
|
},
|
|
1765
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
1860
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.8.0": {
|
|
1766
1861
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1767
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
1862
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.8.0",
|
|
1768
1863
|
"title": "HDF Component Primitives",
|
|
1769
1864
|
"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).",
|
|
1770
1865
|
"$defs": {
|
|
@@ -1810,7 +1905,7 @@
|
|
|
1810
1905
|
"description": "Description of this component's role or purpose."
|
|
1811
1906
|
},
|
|
1812
1907
|
"owner": {
|
|
1813
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1908
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Identity",
|
|
1814
1909
|
"description": "Team or individual responsible for this component. Enables per-component ownership when different teams manage different parts of a system."
|
|
1815
1910
|
},
|
|
1816
1911
|
"externalIds": {
|
|
@@ -1830,14 +1925,14 @@
|
|
|
1830
1925
|
"boms": {
|
|
1831
1926
|
"type": "array",
|
|
1832
1927
|
"items": {
|
|
1833
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
1928
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.8.0#/$defs/Bom"
|
|
1834
1929
|
},
|
|
1835
1930
|
"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."
|
|
1836
1931
|
},
|
|
1837
1932
|
"integrity": {
|
|
1838
1933
|
"type": "array",
|
|
1839
1934
|
"items": {
|
|
1840
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1935
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum"
|
|
1841
1936
|
},
|
|
1842
1937
|
"description": "Cryptographic integrity of this component's underlying artifact — model weights or shards, dataset archive, container image, or package bytes.\n\nAn array supports multi-file/sharded artifacts.\n\nThis is the single, generic home for artifact/subject integrity across all component types (it replaced the former per-type Container_Image digest and Artifact checksum fields).\n\nDistinct from BOM-document integrity (Bom.hashes[]) and from the document tamper-evidence Integrity type."
|
|
1843
1938
|
},
|
|
@@ -1851,12 +1946,12 @@
|
|
|
1851
1946
|
"inputOverrides": {
|
|
1852
1947
|
"type": "array",
|
|
1853
1948
|
"items": {
|
|
1854
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
1949
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.8.0#/$defs/Input_Override"
|
|
1855
1950
|
},
|
|
1856
1951
|
"description": "System-specific overrides for baseline input values."
|
|
1857
1952
|
},
|
|
1858
1953
|
"targetSelector": {
|
|
1859
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
1954
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.8.0#/$defs/Target_Selector",
|
|
1860
1955
|
"description": "Label selector to match targets belonging to this component during migration. Targets with matching labels are automatically included."
|
|
1861
1956
|
}
|
|
1862
1957
|
},
|
|
@@ -2139,7 +2234,7 @@
|
|
|
2139
2234
|
"const": "cloudAccount"
|
|
2140
2235
|
},
|
|
2141
2236
|
"provider": {
|
|
2142
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2237
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Cloud_Provider",
|
|
2143
2238
|
"description": "Cloud provider."
|
|
2144
2239
|
},
|
|
2145
2240
|
"accountId": {
|
|
@@ -2178,7 +2273,7 @@
|
|
|
2178
2273
|
"const": "cloudResource"
|
|
2179
2274
|
},
|
|
2180
2275
|
"provider": {
|
|
2181
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2276
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Cloud_Provider",
|
|
2182
2277
|
"description": "Cloud provider."
|
|
2183
2278
|
},
|
|
2184
2279
|
"resourceType": {
|
|
@@ -2477,9 +2572,9 @@
|
|
|
2477
2572
|
}
|
|
2478
2573
|
}
|
|
2479
2574
|
},
|
|
2480
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
2575
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.8.0": {
|
|
2481
2576
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2482
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
2577
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.8.0",
|
|
2483
2578
|
"title": "HDF BOM Primitives",
|
|
2484
2579
|
"description": "Generalized Bill-of-Materials / manifest representation.\n\nOne extensible Bom shape, discriminated by bomType, carries any manifest kind (SBOM, AI model/dataset, and reserved future kinds) either by passthrough (opaque ref/embed of the native document) or normalized (converted into HDF's queryable shape).\n\nSubject identity (name, version, componentId) is inherited from the host component or system — the BOM never re-owns it.\n\nSee ADR-0001.",
|
|
2485
2580
|
"$defs": {
|
|
@@ -2535,7 +2630,7 @@
|
|
|
2535
2630
|
"hashes": {
|
|
2536
2631
|
"type": "array",
|
|
2537
2632
|
"items": {
|
|
2538
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2633
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum"
|
|
2539
2634
|
},
|
|
2540
2635
|
"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."
|
|
2541
2636
|
},
|
|
@@ -2947,9 +3042,9 @@
|
|
|
2947
3042
|
}
|
|
2948
3043
|
}
|
|
2949
3044
|
},
|
|
2950
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
3045
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.8.0": {
|
|
2951
3046
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2952
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
3047
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.8.0",
|
|
2953
3048
|
"title": "HDF System Primitives",
|
|
2954
3049
|
"description": "Types for describing system architecture, authorization boundaries, and components.",
|
|
2955
3050
|
"$defs": {
|
|
@@ -3000,7 +3095,7 @@
|
|
|
3000
3095
|
"description": "Rationale for why this override is needed."
|
|
3001
3096
|
},
|
|
3002
3097
|
"approvedBy": {
|
|
3003
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3098
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Identity",
|
|
3004
3099
|
"description": "Identity of the person or system that approved this override."
|
|
3005
3100
|
}
|
|
3006
3101
|
},
|
|
@@ -3082,9 +3177,9 @@
|
|
|
3082
3177
|
}
|
|
3083
3178
|
}
|
|
3084
3179
|
},
|
|
3085
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
3180
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.8.0": {
|
|
3086
3181
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3087
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
3182
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.8.0",
|
|
3088
3183
|
"title": "HDF Statistics Primitives",
|
|
3089
3184
|
"description": "Statistics types for tracking assessment run metrics.",
|
|
3090
3185
|
"$defs": {
|
|
@@ -3153,12 +3248,183 @@
|
|
|
3153
3248
|
}
|
|
3154
3249
|
}
|
|
3155
3250
|
},
|
|
3156
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
3251
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0": {
|
|
3157
3252
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3158
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
3253
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.8.0",
|
|
3159
3254
|
"title": "HDF Extension Primitives",
|
|
3160
|
-
"description": "Extension types for waivers, attestations, generators, and
|
|
3255
|
+
"description": "Extension types for waivers, attestations, generators, integrity, and the document-level extensions carrier.",
|
|
3161
3256
|
"$defs": {
|
|
3257
|
+
"Raw_Source_Artifact": {
|
|
3258
|
+
"allOf": [
|
|
3259
|
+
{
|
|
3260
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/External_Reference"
|
|
3261
|
+
},
|
|
3262
|
+
{
|
|
3263
|
+
"not": {
|
|
3264
|
+
"required": [
|
|
3265
|
+
"document"
|
|
3266
|
+
]
|
|
3267
|
+
}
|
|
3268
|
+
},
|
|
3269
|
+
{
|
|
3270
|
+
"if": {
|
|
3271
|
+
"required": [
|
|
3272
|
+
"content"
|
|
3273
|
+
]
|
|
3274
|
+
},
|
|
3275
|
+
"then": {
|
|
3276
|
+
"required": [
|
|
3277
|
+
"encoding",
|
|
3278
|
+
"mediaType"
|
|
3279
|
+
]
|
|
3280
|
+
}
|
|
3281
|
+
}
|
|
3282
|
+
],
|
|
3283
|
+
"description": "One artifact exactly as a converter received it, before conversion.\n\nAn External_Reference used for a single purpose, so the same primitive both points and embeds: `sourceName` names the producing tool; `content` + `encoding` carry the bytes; `checksum` is of the exact bytes the converter read; `rel` is 'raw-source'; `href` appears only when the caller supplied a location that means something to a reader, never a producer's local filesystem path.\n\nBYTES, NOT A PARSED COPY. `document` is forbidden here, enforced by the schema rather than described: it holds a parsed JSON object, so embedding through it discards the original whitespace, key order, duplicate keys and trailing bytes — which makes the artifact unreconstructable and the checksum unverifiable against what is stored. A JSON input carries as a `content` string like every other input. This is deliberately stricter than HDF v2, whose `passthrough.raw` held a parsed structure in every converter but one, and which for XML inputs stored a reshaped object whose keys could collide.\n\n`mediaType` is REQUIRED on an entry that embeds — bytes whose type a consumer has to infer are not carriage. It is derived from the converter's declared input family (json → application/json, xml → application/xml, text → text/plain) and overridden by converters that know their bytes more precisely (CSV, NDJSON, JavaScript-wrapped JSON).\n\nAn entry that only points at a location may omit `mediaType`, `content` and `encoding`.",
|
|
3284
|
+
"$comment": "Examples, in order: 1) JSON input embedded as a utf-8 `content` string — the common case, and note it is NOT a parsed object; 2) XML input, which `document` never could have held; 3) CSV input, where `mediaType` overrides the 'text' input family's derived text/plain; 4) non-text input (a Fortify FPR zip) embedded as base64; 5) by-reference only: a scan retrievable at a meaningful URL, with no embedded copy and therefore no required mediaType, encoding or content.",
|
|
3285
|
+
"examples": [
|
|
3286
|
+
{
|
|
3287
|
+
"sourceName": "grype",
|
|
3288
|
+
"rel": "raw-source",
|
|
3289
|
+
"mediaType": "application/json",
|
|
3290
|
+
"encoding": "utf-8",
|
|
3291
|
+
"content": "{\"matches\":[{\"vulnerability\":{\"id\":\"CVE-2021-36159\",\"severity\":\"Critical\"}}]}",
|
|
3292
|
+
"checksum": {
|
|
3293
|
+
"algorithm": "sha256",
|
|
3294
|
+
"value": "4b33be77f104d6ee323ff2c945d1c3f9a151606b2d263ea7932716844c75920c"
|
|
3295
|
+
}
|
|
3296
|
+
},
|
|
3297
|
+
{
|
|
3298
|
+
"sourceName": "openscap",
|
|
3299
|
+
"rel": "raw-source",
|
|
3300
|
+
"mediaType": "application/xml",
|
|
3301
|
+
"encoding": "utf-8",
|
|
3302
|
+
"content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Benchmark xmlns=\"http://checklists.nist.gov/xccdf/1.2\" id=\"xccdf_org.ssgproject.content_benchmark_RHEL-9\">\n <TestResult id=\"xccdf_org.open-scap_testresult_default-profile\" start-time=\"2026-09-27T12:00:00+00:00\" end-time=\"2026-09-27T12:04:11+00:00\">\n <rule-result idref=\"xccdf_org.ssgproject.content_rule_sshd_disable_root_login\" severity=\"medium\">\n <result>fail</result>\n </rule-result>\n </TestResult>\n</Benchmark>",
|
|
3303
|
+
"checksum": {
|
|
3304
|
+
"algorithm": "sha256",
|
|
3305
|
+
"value": "713b3ee32af5c14ac93e519b5025d760983607143dba3a0438f68667923beda1"
|
|
3306
|
+
}
|
|
3307
|
+
},
|
|
3308
|
+
{
|
|
3309
|
+
"sourceName": "prisma",
|
|
3310
|
+
"rel": "raw-source",
|
|
3311
|
+
"mediaType": "text/csv",
|
|
3312
|
+
"encoding": "utf-8",
|
|
3313
|
+
"content": "Hostname,Distro,CVE ID,Compliance ID,Type,Severity,Packages,Source Package,Package Version\nhost-01,Ubuntu 22.04,CVE-2021-36159,,image,critical,apk-tools,apk-tools,2.12.5-r1\n",
|
|
3314
|
+
"checksum": {
|
|
3315
|
+
"algorithm": "sha256",
|
|
3316
|
+
"value": "c5a8077ee069e18fd6687c6b1c4f72fdbc95b7af77d954b6fb5e522cd783aa83"
|
|
3317
|
+
}
|
|
3318
|
+
},
|
|
3319
|
+
{
|
|
3320
|
+
"sourceName": "fortify",
|
|
3321
|
+
"rel": "raw-source",
|
|
3322
|
+
"mediaType": "application/zip",
|
|
3323
|
+
"encoding": "base64",
|
|
3324
|
+
"content": "UEsDBBQAAAAIAEVnPF20b/JoHgAAABwAAAAKAAAAYXVkaXQuZnZkbLOxr8jNUShLLSrOzM+zVTLUM1Cyt7NxC3Px0bcDAFBLAQIUAxQAAAAIAEVnPF20b/JoHgAAABwAAAAKAAAAAAAAAAAAAACAAQAAAABhdWRpdC5mdmRsUEsFBgAAAAABAAEAOAAAAEYAAAAAAA==",
|
|
3325
|
+
"checksum": {
|
|
3326
|
+
"algorithm": "sha256",
|
|
3327
|
+
"value": "c7e4cefceecb83511ae6174c7d22584061671dee6dc5f27243503b47532a66b1"
|
|
3328
|
+
}
|
|
3329
|
+
},
|
|
3330
|
+
{
|
|
3331
|
+
"sourceName": "nessus",
|
|
3332
|
+
"rel": "raw-source",
|
|
3333
|
+
"href": "https://scans.example.gov/exports/2026-09-27-prod-web.nessus",
|
|
3334
|
+
"mediaType": "application/xml",
|
|
3335
|
+
"checksum": {
|
|
3336
|
+
"algorithm": "sha256",
|
|
3337
|
+
"value": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2"
|
|
3338
|
+
}
|
|
3339
|
+
}
|
|
3340
|
+
]
|
|
3341
|
+
},
|
|
3342
|
+
"Extensions": {
|
|
3343
|
+
"type": "object",
|
|
3344
|
+
"additionalProperties": false,
|
|
3345
|
+
"properties": {
|
|
3346
|
+
"passthrough": {
|
|
3347
|
+
"type": "object",
|
|
3348
|
+
"additionalProperties": true,
|
|
3349
|
+
"description": "Catch-all for producer data that HDF does not model — the role heimdall2's `passthrough.auxiliary_data` played: fields a converter deliberately carried but had no home for.\n\nDeliberately permissive: unenumerated properties are accepted by design, with no shape imposed on them. HDF neither reads nor interprets what is here. It is the ONLY permissive surface in `extensions` — everything HDF does not define belongs here rather than beside it.\n\nThis is NOT where the pre-converted source artifact goes. v2 put it here only because nothing else had room; `rawSourceArtifacts` is its home now, and it gives the bytes a checksum, a media type and a reference contract that an untyped object cannot.\n\nFor data that belongs to one requirement rather than to the document, use that object's own fields — a document-level bag cannot say which requirement it describes.",
|
|
3350
|
+
"examples": [
|
|
3351
|
+
{
|
|
3352
|
+
"auxiliary_data": [
|
|
3353
|
+
{
|
|
3354
|
+
"name": "Scoutsuite",
|
|
3355
|
+
"data": {
|
|
3356
|
+
"last_run": {
|
|
3357
|
+
"ruleset_about": "This ruleset consists of numerous rules that are considered standard by NCC Group"
|
|
3358
|
+
}
|
|
3359
|
+
}
|
|
3360
|
+
}
|
|
3361
|
+
]
|
|
3362
|
+
},
|
|
3363
|
+
{
|
|
3364
|
+
"audit": {
|
|
3365
|
+
"runId": "r-123"
|
|
3366
|
+
}
|
|
3367
|
+
}
|
|
3368
|
+
],
|
|
3369
|
+
"$comment": "Examples, in order: 1) heimdall2's auxiliary_data shape, the data a v2 mapper carried with nowhere else to put it; 2) the legacy top-level `passthrough` an HDF document arrived with, relocated here verbatim by the SAF-supplement normalizer."
|
|
3370
|
+
},
|
|
3371
|
+
"rawSourceArtifacts": {
|
|
3372
|
+
"type": "array",
|
|
3373
|
+
"items": {
|
|
3374
|
+
"$ref": "#/$defs/Raw_Source_Artifact"
|
|
3375
|
+
},
|
|
3376
|
+
"description": "The input(s) this document was converted from, verbatim.\n\nAn array because a conversion can consume more than one artifact — the OSCAL profile path takes a profile and a catalog. Every other converter takes one input, and an array of one costs nothing.\n\nPopulating this is required of ingest converters by policy, enforced by the converter contract and test harness rather than by a schema `required`: a tool that emits HDF natively has no source artifact, and requiring the field would make valid native HDF invalid."
|
|
3377
|
+
}
|
|
3378
|
+
},
|
|
3379
|
+
"title": "Extensions",
|
|
3380
|
+
"description": "Carrier for data outside the HDF model: `passthrough` for producer data HDF does not model, `rawSourceArtifacts` for the pre-converted input(s).\n\nCLOSED: these two members are the whole of it. A key HDF does not define goes inside `passthrough` — that is what `passthrough` is for — so `extensions` never becomes a second, unnamed schema that consumers must reverse-engineer from the producers that happen to write it.\n\nClosed with `additionalProperties` rather than the house `unevaluatedProperties` because this definition composes nothing, and the shipped Go validator is a draft-07 engine that does not implement `unevaluatedProperties` — a closure only one of the two validators enforces is not a closure.\n\nDeclared on every HDF document type that carries a producer envelope (`generator` / `integrity`), and on `Evaluated_Baseline`, so one rule governs both sites.",
|
|
3381
|
+
"$comment": "Examples, in order: 1) the whole contract in one object — a converter's input embedded beside the producer data it could not map; 2) carriage alone, the shape a converter emits when it has nothing homeless to record.",
|
|
3382
|
+
"examples": [
|
|
3383
|
+
{
|
|
3384
|
+
"passthrough": {
|
|
3385
|
+
"auxiliary_data": [
|
|
3386
|
+
{
|
|
3387
|
+
"name": "Grype",
|
|
3388
|
+
"data": {
|
|
3389
|
+
"descriptor": {
|
|
3390
|
+
"name": "grype",
|
|
3391
|
+
"version": "0.74.0"
|
|
3392
|
+
}
|
|
3393
|
+
}
|
|
3394
|
+
}
|
|
3395
|
+
]
|
|
3396
|
+
},
|
|
3397
|
+
"rawSourceArtifacts": [
|
|
3398
|
+
{
|
|
3399
|
+
"sourceName": "grype",
|
|
3400
|
+
"rel": "raw-source",
|
|
3401
|
+
"mediaType": "application/json",
|
|
3402
|
+
"encoding": "utf-8",
|
|
3403
|
+
"content": "{\"matches\":[{\"vulnerability\":{\"id\":\"CVE-2021-36159\",\"severity\":\"Critical\"}}]}",
|
|
3404
|
+
"checksum": {
|
|
3405
|
+
"algorithm": "sha256",
|
|
3406
|
+
"value": "4b33be77f104d6ee323ff2c945d1c3f9a151606b2d263ea7932716844c75920c"
|
|
3407
|
+
}
|
|
3408
|
+
}
|
|
3409
|
+
]
|
|
3410
|
+
},
|
|
3411
|
+
{
|
|
3412
|
+
"rawSourceArtifacts": [
|
|
3413
|
+
{
|
|
3414
|
+
"sourceName": "fortify",
|
|
3415
|
+
"rel": "raw-source",
|
|
3416
|
+
"mediaType": "application/zip",
|
|
3417
|
+
"encoding": "base64",
|
|
3418
|
+
"content": "UEsDBBQAAAAIAEVnPF20b/JoHgAAABwAAAAKAAAAYXVkaXQuZnZkbLOxr8jNUShLLSrOzM+zVTLUM1Cyt7NxC3Px0bcDAFBLAQIUAxQAAAAIAEVnPF20b/JoHgAAABwAAAAKAAAAAAAAAAAAAACAAQAAAABhdWRpdC5mdmRsUEsFBgAAAAABAAEAOAAAAEYAAAAAAA==",
|
|
3419
|
+
"checksum": {
|
|
3420
|
+
"algorithm": "sha256",
|
|
3421
|
+
"value": "c7e4cefceecb83511ae6174c7d22584061671dee6dc5f27243503b47532a66b1"
|
|
3422
|
+
}
|
|
3423
|
+
}
|
|
3424
|
+
]
|
|
3425
|
+
}
|
|
3426
|
+
]
|
|
3427
|
+
},
|
|
3162
3428
|
"Status_Override": {
|
|
3163
3429
|
"type": "object",
|
|
3164
3430
|
"unevaluatedProperties": false,
|
|
@@ -3185,20 +3451,20 @@
|
|
|
3185
3451
|
"externalReferences": {
|
|
3186
3452
|
"type": "array",
|
|
3187
3453
|
"items": {
|
|
3188
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3454
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/External_Reference"
|
|
3189
3455
|
},
|
|
3190
3456
|
"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."
|
|
3191
3457
|
},
|
|
3192
3458
|
"type": {
|
|
3193
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3459
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.8.0#/$defs/Override_Type",
|
|
3194
3460
|
"description": "The type of override applied to this requirement."
|
|
3195
3461
|
},
|
|
3196
3462
|
"status": {
|
|
3197
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
3463
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.8.0#/$defs/Result_Status",
|
|
3198
3464
|
"description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
|
|
3199
3465
|
},
|
|
3200
3466
|
"impact": {
|
|
3201
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3467
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.8.0#/$defs/Impact_Override",
|
|
3202
3468
|
"description": "Override to the requirement's impact score. At least one of status or impact must be set."
|
|
3203
3469
|
},
|
|
3204
3470
|
"reason": {
|
|
@@ -3206,7 +3472,7 @@
|
|
|
3206
3472
|
"description": "Explanation for why this override was applied."
|
|
3207
3473
|
},
|
|
3208
3474
|
"appliedBy": {
|
|
3209
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3475
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Identity",
|
|
3210
3476
|
"description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
|
|
3211
3477
|
},
|
|
3212
3478
|
"appliedAt": {
|
|
@@ -3220,27 +3486,27 @@
|
|
|
3220
3486
|
"description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
|
|
3221
3487
|
},
|
|
3222
3488
|
"signature": {
|
|
3223
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3489
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Signature",
|
|
3224
3490
|
"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."
|
|
3225
3491
|
},
|
|
3226
3492
|
"evidence": {
|
|
3227
3493
|
"type": "array",
|
|
3228
3494
|
"items": {
|
|
3229
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3495
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Evidence"
|
|
3230
3496
|
},
|
|
3231
3497
|
"description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
|
|
3232
3498
|
},
|
|
3233
3499
|
"previousChecksum": {
|
|
3234
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3500
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum",
|
|
3235
3501
|
"description": "SHA-256 checksum of the previous amendment in chronological order. Each amendment's checksum is recorded by the NEXT one, so editing an amendment in place is detectable — provided a later amendment is chained to it. It is NOT tamper-proof: the final amendment, the document envelope, deleted trailing amendments, and a chain that has been stripped or recomputed wholesale are all outside what it can detect. Use signature for non-repudiation. Omitted on the first amendment on a requirement."
|
|
3236
3502
|
},
|
|
3237
3503
|
"cvss": {
|
|
3238
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
3504
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.8.0#/$defs/Cvss",
|
|
3239
3505
|
"$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.",
|
|
3240
3506
|
"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."
|
|
3241
3507
|
},
|
|
3242
3508
|
"justification": {
|
|
3243
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3509
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.8.0#/$defs/Justification",
|
|
3244
3510
|
"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."
|
|
3245
3511
|
}
|
|
3246
3512
|
},
|
|
@@ -3376,7 +3642,7 @@
|
|
|
3376
3642
|
"description": "Detailed explanation of the plan, including what actions will be taken."
|
|
3377
3643
|
},
|
|
3378
3644
|
"appliedBy": {
|
|
3379
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3645
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Identity",
|
|
3380
3646
|
"description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
|
|
3381
3647
|
},
|
|
3382
3648
|
"appliedAt": {
|
|
@@ -3392,23 +3658,23 @@
|
|
|
3392
3658
|
"milestones": {
|
|
3393
3659
|
"type": "array",
|
|
3394
3660
|
"items": {
|
|
3395
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3661
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Milestone"
|
|
3396
3662
|
},
|
|
3397
3663
|
"description": "Optional array of milestones tracking progress toward completion."
|
|
3398
3664
|
},
|
|
3399
3665
|
"signature": {
|
|
3400
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3666
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Signature",
|
|
3401
3667
|
"description": "Optional digital signature for enhanced trust and non-repudiation."
|
|
3402
3668
|
},
|
|
3403
3669
|
"evidence": {
|
|
3404
3670
|
"type": "array",
|
|
3405
3671
|
"items": {
|
|
3406
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3672
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Evidence"
|
|
3407
3673
|
},
|
|
3408
3674
|
"description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
|
|
3409
3675
|
},
|
|
3410
3676
|
"previousChecksum": {
|
|
3411
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3677
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum",
|
|
3412
3678
|
"description": "SHA-256 checksum of the previous amendment in chronological order. Each amendment's checksum is recorded by the NEXT one, so editing an amendment in place is detectable — provided a later amendment is chained to it. It is NOT tamper-proof: the final amendment, the document envelope, deleted trailing amendments, and a chain that has been stripped or recomputed wholesale are all outside what it can detect. Use signature for non-repudiation. Omitted on the first amendment on a requirement."
|
|
3413
3679
|
}
|
|
3414
3680
|
},
|
|
@@ -3551,17 +3817,9 @@
|
|
|
3551
3817
|
"Integrity": {
|
|
3552
3818
|
"type": "object",
|
|
3553
3819
|
"unevaluatedProperties": false,
|
|
3554
|
-
"dependentRequired": {
|
|
3555
|
-
"algorithm": [
|
|
3556
|
-
"checksum"
|
|
3557
|
-
],
|
|
3558
|
-
"checksum": [
|
|
3559
|
-
"algorithm"
|
|
3560
|
-
]
|
|
3561
|
-
},
|
|
3562
3820
|
"properties": {
|
|
3563
3821
|
"algorithm": {
|
|
3564
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3822
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Hash_Algorithm",
|
|
3565
3823
|
"description": "The hash algorithm used for the checksum."
|
|
3566
3824
|
},
|
|
3567
3825
|
"checksum": {
|
|
@@ -3590,13 +3848,39 @@
|
|
|
3590
3848
|
}
|
|
3591
3849
|
],
|
|
3592
3850
|
"description": "Cryptographic integrity information for verifying the HDF file has not been tampered with. If algorithm is provided, checksum must also be provided, and vice versa.",
|
|
3593
|
-
"title": "Integrity"
|
|
3851
|
+
"title": "Integrity",
|
|
3852
|
+
"allOf": [
|
|
3853
|
+
{
|
|
3854
|
+
"if": {
|
|
3855
|
+
"required": [
|
|
3856
|
+
"algorithm"
|
|
3857
|
+
]
|
|
3858
|
+
},
|
|
3859
|
+
"then": {
|
|
3860
|
+
"required": [
|
|
3861
|
+
"checksum"
|
|
3862
|
+
]
|
|
3863
|
+
}
|
|
3864
|
+
},
|
|
3865
|
+
{
|
|
3866
|
+
"if": {
|
|
3867
|
+
"required": [
|
|
3868
|
+
"checksum"
|
|
3869
|
+
]
|
|
3870
|
+
},
|
|
3871
|
+
"then": {
|
|
3872
|
+
"required": [
|
|
3873
|
+
"algorithm"
|
|
3874
|
+
]
|
|
3875
|
+
}
|
|
3876
|
+
}
|
|
3877
|
+
]
|
|
3594
3878
|
}
|
|
3595
3879
|
}
|
|
3596
3880
|
},
|
|
3597
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3881
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.8.0": {
|
|
3598
3882
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3599
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3883
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.8.0",
|
|
3600
3884
|
"title": "HDF Amendment Primitives",
|
|
3601
3885
|
"description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
|
|
3602
3886
|
"$defs": {
|
|
@@ -3707,7 +3991,7 @@
|
|
|
3707
3991
|
"externalReferences": {
|
|
3708
3992
|
"type": "array",
|
|
3709
3993
|
"items": {
|
|
3710
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3994
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/External_Reference"
|
|
3711
3995
|
},
|
|
3712
3996
|
"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."
|
|
3713
3997
|
},
|
|
@@ -3725,7 +4009,7 @@
|
|
|
3725
4009
|
"description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
|
|
3726
4010
|
},
|
|
3727
4011
|
"status": {
|
|
3728
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4012
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.8.0#/$defs/Result_Status",
|
|
3729
4013
|
"description": "The new status this amendment sets. Optional when only impact is being overridden."
|
|
3730
4014
|
},
|
|
3731
4015
|
"impact": {
|
|
@@ -3737,7 +4021,7 @@
|
|
|
3737
4021
|
"description": "Justification for this amendment."
|
|
3738
4022
|
},
|
|
3739
4023
|
"appliedBy": {
|
|
3740
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4024
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Identity",
|
|
3741
4025
|
"description": "Identity of who applied this amendment."
|
|
3742
4026
|
},
|
|
3743
4027
|
"appliedAt": {
|
|
@@ -3753,20 +4037,20 @@
|
|
|
3753
4037
|
"evidence": {
|
|
3754
4038
|
"type": "array",
|
|
3755
4039
|
"items": {
|
|
3756
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4040
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Evidence"
|
|
3757
4041
|
},
|
|
3758
4042
|
"description": "Supporting evidence (screenshots, logs, URLs, documents)."
|
|
3759
4043
|
},
|
|
3760
4044
|
"signature": {
|
|
3761
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4045
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Signature",
|
|
3762
4046
|
"description": "Digital signature for non-repudiation."
|
|
3763
4047
|
},
|
|
3764
4048
|
"previousChecksum": {
|
|
3765
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4049
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum",
|
|
3766
4050
|
"description": "SHA-256 checksum of the prior amendment in chronological order. Each amendment's checksum is recorded by the NEXT one, so editing an amendment in place is detectable — provided a later amendment is chained to it. It is NOT tamper-proof: the final amendment, the document envelope, deleted trailing amendments, and a chain that has been stripped or recomputed wholesale are all outside what it can detect. Use signature for non-repudiation. Omitted on the first amendment."
|
|
3767
4051
|
},
|
|
3768
4052
|
"cvss": {
|
|
3769
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
4053
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.8.0#/$defs/Cvss",
|
|
3770
4054
|
"$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.",
|
|
3771
4055
|
"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."
|
|
3772
4056
|
},
|
|
@@ -3777,7 +4061,7 @@
|
|
|
3777
4061
|
"milestones": {
|
|
3778
4062
|
"type": "array",
|
|
3779
4063
|
"items": {
|
|
3780
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4064
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Milestone"
|
|
3781
4065
|
},
|
|
3782
4066
|
"description": "Remediation milestones (primarily for POA&M type amendments)."
|
|
3783
4067
|
},
|
|
@@ -3794,7 +4078,7 @@
|
|
|
3794
4078
|
"affectedPackages": {
|
|
3795
4079
|
"type": "array",
|
|
3796
4080
|
"items": {
|
|
3797
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
4081
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.8.0#/$defs/Affected_Package"
|
|
3798
4082
|
},
|
|
3799
4083
|
"description": "Software packages this amendment is scoped to, distinct from componentRef (which scopes to an HDF-internal Component by UUID).\n\nUse when the source amendment format references packages by purl/cpe/name+version — e.g., VEX `affects[]` / `products[]`, OSCAL POA&M `subjects[]`, FedRAMP component-aware amendments.\n\nSymmetric with Evaluated_Requirement.affectedPackages, which scopes findings to the same package vocabulary.\n\nWhen omitted, the amendment applies system-wide (or only to componentRef when that is set)."
|
|
3800
4084
|
}
|
|
@@ -3927,9 +4211,9 @@
|
|
|
3927
4211
|
}
|
|
3928
4212
|
}
|
|
3929
4213
|
},
|
|
3930
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4214
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.8.0": {
|
|
3931
4215
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3932
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4216
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.8.0",
|
|
3933
4217
|
"title": "HDF Result Primitives",
|
|
3934
4218
|
"description": "Types for representing assessment results and statuses.",
|
|
3935
4219
|
"$defs": {
|
|
@@ -3994,6 +4278,10 @@
|
|
|
3994
4278
|
"type": "string"
|
|
3995
4279
|
},
|
|
3996
4280
|
"description": "The stacktrace/backtrace of the exception if one occurred."
|
|
4281
|
+
},
|
|
4282
|
+
"rawSourceRecord": {
|
|
4283
|
+
"$ref": "#/$defs/Raw_Source_Record",
|
|
4284
|
+
"description": "The source tool's own record for this result, carrying every field the record had. Complete, not necessarily byte-exact: see Raw_Source_Record.content for the producer and consumer obligations, and extensions.rawSourceArtifacts[] when byte-exact carriage is required."
|
|
3997
4285
|
}
|
|
3998
4286
|
},
|
|
3999
4287
|
"examples": [
|
|
@@ -4024,6 +4312,64 @@
|
|
|
4024
4312
|
"description": "A test within a requirement and its results and findings such as how long it took to run.",
|
|
4025
4313
|
"title": "Requirement Result"
|
|
4026
4314
|
},
|
|
4315
|
+
"Raw_Source_Record": {
|
|
4316
|
+
"type": "object",
|
|
4317
|
+
"additionalProperties": false,
|
|
4318
|
+
"required": [
|
|
4319
|
+
"content",
|
|
4320
|
+
"encoding",
|
|
4321
|
+
"mediaType"
|
|
4322
|
+
],
|
|
4323
|
+
"properties": {
|
|
4324
|
+
"content": {
|
|
4325
|
+
"type": "string",
|
|
4326
|
+
"description": "The source tool's own record for this result, carrying every field the record had.\n\nCOMPLETE, NOT NECESSARILY BYTE-EXACT. A producer SHOULD write the record's bytes unchanged where it can. A producer that cannot — notably one implemented in two languages whose JSON serializers disagree on key order, HTML escaping and number rendering, and which therefore MUST canonicalize to stay byte-identical with its twin — MAY write a canonically serialized form instead. Such a form preserves every field and value but not the original key order, insignificant whitespace, or duplicate keys. A consumer MUST therefore compare records by parsing them, not by comparing bytes, and MUST NOT checksum this field and expect the result to match a checksum of the input.\n\nFor carriage that IS byte-exact, use `extensions.rawSourceArtifacts[]`, which forbids a parsed `document` precisely so the bytes and their checksum survive; `pointer` ties this record to its position within that artifact."
|
|
4327
|
+
},
|
|
4328
|
+
"encoding": {
|
|
4329
|
+
"type": "string",
|
|
4330
|
+
"enum": [
|
|
4331
|
+
"utf-8",
|
|
4332
|
+
"base64"
|
|
4333
|
+
],
|
|
4334
|
+
"description": "How to read `content`: 'utf-8' for text, 'base64' for bytes that are not valid UTF-8 text."
|
|
4335
|
+
},
|
|
4336
|
+
"mediaType": {
|
|
4337
|
+
"type": "string",
|
|
4338
|
+
"description": "The record's IANA media type — the type of this record, which for a fragment of a larger artifact may be narrower than the artifact's own. Example: 'application/json' for one match object out of a JSON report."
|
|
4339
|
+
},
|
|
4340
|
+
"pointer": {
|
|
4341
|
+
"type": "string",
|
|
4342
|
+
"description": "Where this record sits inside the artifact it came from, as a JSON Pointer (RFC 6901) for JSON sources or an XPath for XML ones. Example: '/matches/3'.\n\nOptional, and the link that makes carriage verifiable rather than merely present: with it a consumer can confirm the record really is the subtree of `extensions.rawSourceArtifacts[]` it claims to be. Omit it when the source's shape gives a record no addressable location."
|
|
4343
|
+
}
|
|
4344
|
+
},
|
|
4345
|
+
"description": "The source tool's own record for this result — the one entry in the converter's input that produced it, complete though not necessarily byte-for-byte (see `content`).\n\nSCOPED TO THE RESULT DELIBERATELY. For a vulnerability scanner the native record is one (vulnerability, package) pair, which is exactly one result: a CVE reported against two packages yields two entries whose records differ only in the package they matched. Held on the requirement instead, those two records would collide, and merging entries that share an id would have to discard one — so the result is not merely an available home but the correct one.\n\nDistinct from `extensions.rawSourceArtifacts[]`, which carries whole input artifacts: this carries the one record inside one of them, and `pointer` ties the two together. A consumer that wants the whole input reads the artifact; one that wants provenance for a single finding reads this.\n\nDistinct from `code`, which means the code that ran to evaluate the requirement — an InSpec control's source, or a check reference. A serialized finding is not code, and putting one there overloaded a field whose meaning came from InSpec.\n\nCLOSED, and deliberately not a passthrough bag: three required members and an optional pointer are the whole of it. Producer data that HDF does not model belongs in `extensions.passthrough`, which is document-scoped and permissive by design; this field is neither.\n\nClosed with `additionalProperties` rather than the house `unevaluatedProperties` because this definition composes nothing, and the shipped Go validator is a draft-07 engine that does not implement `unevaluatedProperties` — a closure only one of the two validators enforces is not a closure.",
|
|
4346
|
+
"$comment": "Examples, in order: 1) one grype match — the shape that moves out of `code` — located in the carried artifact by pointer; 2) an XCCDF rule-result, where the record is XML although the document embedding it is JSON, so mediaType is per record and not per document; 3) a record whose bytes are not text, carried as base64; 4) the minimum: a record whose source shape gives it no addressable location, so pointer is omitted.",
|
|
4347
|
+
"examples": [
|
|
4348
|
+
{
|
|
4349
|
+
"content": "{\"vulnerability\":{\"id\":\"CVE-2022-48174\",\"severity\":\"Critical\"},\"artifact\":{\"name\":\"ssl_client\",\"version\":\"1.31.1-r9\",\"type\":\"apk\"}}",
|
|
4350
|
+
"encoding": "utf-8",
|
|
4351
|
+
"mediaType": "application/json",
|
|
4352
|
+
"pointer": "/matches/3"
|
|
4353
|
+
},
|
|
4354
|
+
{
|
|
4355
|
+
"content": "<rule-result idref=\"xccdf_org.ssgproject.content_rule_sshd_disable_root_login\" severity=\"medium\">\n <result>fail</result>\n</rule-result>",
|
|
4356
|
+
"encoding": "utf-8",
|
|
4357
|
+
"mediaType": "application/xml",
|
|
4358
|
+
"pointer": "/Benchmark/TestResult/rule-result[4]"
|
|
4359
|
+
},
|
|
4360
|
+
{
|
|
4361
|
+
"content": "UEsDBBQAAAAIAEVnPF20b/JoHgAAABwAAAAKAAAAYXVkaXQuZnZkbA==",
|
|
4362
|
+
"encoding": "base64",
|
|
4363
|
+
"mediaType": "application/octet-stream"
|
|
4364
|
+
},
|
|
4365
|
+
{
|
|
4366
|
+
"content": "host-01,Ubuntu 22.04,CVE-2021-36159,,image,critical,apk-tools,apk-tools,2.12.5-r1",
|
|
4367
|
+
"encoding": "utf-8",
|
|
4368
|
+
"mediaType": "text/csv"
|
|
4369
|
+
}
|
|
4370
|
+
],
|
|
4371
|
+
"title": "Raw Source Record"
|
|
4372
|
+
},
|
|
4027
4373
|
"Requirement_Description": {
|
|
4028
4374
|
"type": "object",
|
|
4029
4375
|
"unevaluatedProperties": false,
|
|
@@ -4060,9 +4406,9 @@
|
|
|
4060
4406
|
}
|
|
4061
4407
|
}
|
|
4062
4408
|
},
|
|
4063
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
4409
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.8.0": {
|
|
4064
4410
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4065
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
4411
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.8.0",
|
|
4066
4412
|
"title": "HDF CVSS Primitives",
|
|
4067
4413
|
"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).",
|
|
4068
4414
|
"$defs": {
|
|
@@ -4259,9 +4605,9 @@
|
|
|
4259
4605
|
}
|
|
4260
4606
|
}
|
|
4261
4607
|
},
|
|
4262
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
4608
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.8.0": {
|
|
4263
4609
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4264
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
4610
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.8.0",
|
|
4265
4611
|
"title": "HDF Affected Package Primitives",
|
|
4266
4612
|
"description": "Types for representing the software package(s) affected by a vulnerability finding.",
|
|
4267
4613
|
"$defs": {
|
|
@@ -4369,9 +4715,9 @@
|
|
|
4369
4715
|
}
|
|
4370
4716
|
}
|
|
4371
4717
|
},
|
|
4372
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
4718
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.8.0": {
|
|
4373
4719
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4374
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
4720
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.8.0",
|
|
4375
4721
|
"title": "HDF Runner Primitive",
|
|
4376
4722
|
"description": "Information about the test execution environment where the security tool/scanner was executed.",
|
|
4377
4723
|
"$defs": {
|
|
@@ -4415,7 +4761,7 @@
|
|
|
4415
4761
|
"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."
|
|
4416
4762
|
},
|
|
4417
4763
|
"operator": {
|
|
4418
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4764
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Identity",
|
|
4419
4765
|
"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."
|
|
4420
4766
|
}
|
|
4421
4767
|
},
|
|
@@ -4464,9 +4810,9 @@
|
|
|
4464
4810
|
}
|
|
4465
4811
|
}
|
|
4466
4812
|
},
|
|
4467
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.
|
|
4813
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.8.0": {
|
|
4468
4814
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4469
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.
|
|
4815
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/events/v3.8.0",
|
|
4470
4816
|
"title": "HDF Change Event Primitives",
|
|
4471
4817
|
"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.",
|
|
4472
4818
|
"$defs": {
|
|
@@ -4520,7 +4866,7 @@
|
|
|
4520
4866
|
"priorChecksum": {
|
|
4521
4867
|
"oneOf": [
|
|
4522
4868
|
{
|
|
4523
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4869
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum"
|
|
4524
4870
|
},
|
|
4525
4871
|
{
|
|
4526
4872
|
"type": "null"
|
|
@@ -4538,7 +4884,7 @@
|
|
|
4538
4884
|
"systemRef": "apptier.hdf-system.json",
|
|
4539
4885
|
"componentId": "6e0f2a3b-9c01-4d5e-8f7a-1b2c3d4e5f60",
|
|
4540
4886
|
"timestamp": "2026-07-22T14:03:11Z",
|
|
4541
|
-
"schemaRef": "https://mitre.github.io/hdf-libs/schemas/hdf-requirement-change-event/v3.
|
|
4887
|
+
"schemaRef": "https://mitre.github.io/hdf-libs/schemas/hdf-requirement-change-event/v3.8.0",
|
|
4542
4888
|
"priorChecksum": {
|
|
4543
4889
|
"algorithm": "sha256",
|
|
4544
4890
|
"value": "704f62b2d0803438ad6b7b9bab45e2c4f350b7344135a2a7f8ef986d98669021"
|
|
@@ -4592,7 +4938,7 @@
|
|
|
4592
4938
|
],
|
|
4593
4939
|
"properties": {
|
|
4594
4940
|
"effectiveStatus": {
|
|
4595
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
4941
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.8.0#/$defs/Result_Status",
|
|
4596
4942
|
"description": "The resolved effective compliance status at this point in the chain."
|
|
4597
4943
|
},
|
|
4598
4944
|
"effectiveImpact": {
|
|
@@ -4641,7 +4987,7 @@
|
|
|
4641
4987
|
"description": "URI to the seed snapshot document (relative path or absolute URL)."
|
|
4642
4988
|
},
|
|
4643
4989
|
"checksum": {
|
|
4644
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4990
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.8.0#/$defs/Checksum",
|
|
4645
4991
|
"description": "Checksum of the seed snapshot, REQUIRED: the derivation pins an immutable snapshot by content, not just location."
|
|
4646
4992
|
}
|
|
4647
4993
|
},
|
|
@@ -4690,9 +5036,9 @@
|
|
|
4690
5036
|
}
|
|
4691
5037
|
}
|
|
4692
5038
|
},
|
|
4693
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
5039
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.8.0": {
|
|
4694
5040
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4695
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
5041
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.8.0",
|
|
4696
5042
|
"title": "HDF Parameter Primitives",
|
|
4697
5043
|
"description": "Input/parameter type definitions for typed, traceable configuration values that bridge governance prose and scanner automation.",
|
|
4698
5044
|
"$defs": {
|
|
@@ -4823,9 +5169,9 @@
|
|
|
4823
5169
|
}
|
|
4824
5170
|
}
|
|
4825
5171
|
},
|
|
4826
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.
|
|
5172
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.8.0": {
|
|
4827
5173
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4828
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.
|
|
5174
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.8.0",
|
|
4829
5175
|
"title": "HDF EPSS Primitive",
|
|
4830
5176
|
"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.",
|
|
4831
5177
|
"$defs": {
|
|
@@ -4880,9 +5226,9 @@
|
|
|
4880
5226
|
}
|
|
4881
5227
|
}
|
|
4882
5228
|
},
|
|
4883
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.
|
|
5229
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.8.0": {
|
|
4884
5230
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4885
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.
|
|
5231
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.8.0",
|
|
4886
5232
|
"title": "HDF Kev Primitives",
|
|
4887
5233
|
"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.",
|
|
4888
5234
|
"$defs": {
|