@mitre/hdf-schema 3.3.2 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/dist/go/hdf.go +473 -117
- package/dist/index.d.ts +1 -0
- package/dist/index.js +26 -25
- package/dist/schemas/hdf-amendments.schema.json +53 -46
- package/dist/schemas/hdf-baseline.schema.json +58 -51
- package/dist/schemas/hdf-comparison.schema.json +846 -243
- package/dist/schemas/hdf-evidence-package.schema.json +204 -51
- package/dist/schemas/hdf-plan.schema.json +58 -51
- package/dist/schemas/hdf-results.schema.json +785 -214
- package/dist/schemas/hdf-system.schema.json +760 -187
- package/dist/ts/hdf.d.ts +517 -52
- package/dist/ts/hdf.js +42 -14
- package/dist/ts/hdf.ts +526 -52
- package/package.json +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.
|
|
3
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-results/v3.4.0",
|
|
4
4
|
"type": "object",
|
|
5
5
|
"unevaluatedProperties": false,
|
|
6
6
|
"required": [
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"components": {
|
|
21
21
|
"type": "array",
|
|
22
22
|
"items": {
|
|
23
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
23
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.4.0#/$defs/Component"
|
|
24
24
|
},
|
|
25
25
|
"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."
|
|
26
26
|
},
|
|
@@ -32,27 +32,27 @@
|
|
|
32
32
|
"description": "Information on the baselines that were evaluated, including findings."
|
|
33
33
|
},
|
|
34
34
|
"statistics": {
|
|
35
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
35
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.4.0#/$defs/Statistics",
|
|
36
36
|
"description": "Statistics for the assessment run, including duration and result counts."
|
|
37
37
|
},
|
|
38
38
|
"generator": {
|
|
39
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
39
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Generator",
|
|
40
40
|
"description": "Information about the tool that generated this file."
|
|
41
41
|
},
|
|
42
42
|
"tool": {
|
|
43
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
43
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Tool",
|
|
44
44
|
"description": "The security tool that produced the assessment data in this file."
|
|
45
45
|
},
|
|
46
46
|
"integrity": {
|
|
47
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
47
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Integrity",
|
|
48
48
|
"description": "Cryptographic integrity information for verifying this file."
|
|
49
49
|
},
|
|
50
50
|
"runner": {
|
|
51
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
51
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.4.0#/$defs/Runner",
|
|
52
52
|
"description": "Information about the test execution environment where the security tool was run. Distinct from targets (what is being tested)."
|
|
53
53
|
},
|
|
54
54
|
"remediation": {
|
|
55
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
55
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Remediation",
|
|
56
56
|
"description": "Optional reference to automated remediation resources (Ansible playbooks, Terraform scripts, etc.) for fixing failing requirements found in this assessment."
|
|
57
57
|
},
|
|
58
58
|
"systemRef": {
|
|
@@ -160,14 +160,14 @@
|
|
|
160
160
|
],
|
|
161
161
|
"allOf": [
|
|
162
162
|
{
|
|
163
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
163
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Baseline_Metadata"
|
|
164
164
|
}
|
|
165
165
|
],
|
|
166
166
|
"properties": {
|
|
167
167
|
"depends": {
|
|
168
168
|
"type": "array",
|
|
169
169
|
"items": {
|
|
170
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
170
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Dependency"
|
|
171
171
|
},
|
|
172
172
|
"description": "The set of dependencies this baseline depends on."
|
|
173
173
|
},
|
|
@@ -180,15 +180,15 @@
|
|
|
180
180
|
"description": "The description - should be more detailed than the summary."
|
|
181
181
|
},
|
|
182
182
|
"integrity": {
|
|
183
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
183
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Integrity",
|
|
184
184
|
"description": "Cryptographic integrity information for verifying this baseline has not been tampered with."
|
|
185
185
|
},
|
|
186
186
|
"originalChecksum": {
|
|
187
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
187
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
|
|
188
188
|
"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."
|
|
189
189
|
},
|
|
190
190
|
"resultsChecksum": {
|
|
191
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
191
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
|
|
192
192
|
"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."
|
|
193
193
|
},
|
|
194
194
|
"statusMessage": {
|
|
@@ -206,14 +206,14 @@
|
|
|
206
206
|
"groups": {
|
|
207
207
|
"type": "array",
|
|
208
208
|
"items": {
|
|
209
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
209
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Requirement_Group"
|
|
210
210
|
},
|
|
211
211
|
"description": "A set of descriptions for the requirement groups."
|
|
212
212
|
},
|
|
213
213
|
"inputs": {
|
|
214
214
|
"type": "array",
|
|
215
215
|
"items": {
|
|
216
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
216
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.4.0#/$defs/Input"
|
|
217
217
|
},
|
|
218
218
|
"description": "Typed inputs used to parameterize this baseline at execution time. See the Input primitive for the full schema."
|
|
219
219
|
},
|
|
@@ -238,7 +238,7 @@
|
|
|
238
238
|
],
|
|
239
239
|
"allOf": [
|
|
240
240
|
{
|
|
241
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
241
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Requirement_Core"
|
|
242
242
|
}
|
|
243
243
|
],
|
|
244
244
|
"properties": {
|
|
@@ -246,7 +246,7 @@
|
|
|
246
246
|
"type": "array",
|
|
247
247
|
"minItems": 1,
|
|
248
248
|
"items": {
|
|
249
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
249
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Requirement_Description"
|
|
250
250
|
},
|
|
251
251
|
"contains": {
|
|
252
252
|
"type": "object",
|
|
@@ -262,37 +262,37 @@
|
|
|
262
262
|
"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'."
|
|
263
263
|
},
|
|
264
264
|
"severity": {
|
|
265
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
265
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Severity",
|
|
266
266
|
"description": "Explicit severity rating. Typically derived from impact score but provided explicitly for clarity."
|
|
267
267
|
},
|
|
268
268
|
"sourceLocation": {
|
|
269
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
269
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Source_Location",
|
|
270
270
|
"description": "The explicit location of the requirement within the source code."
|
|
271
271
|
},
|
|
272
272
|
"results": {
|
|
273
273
|
"type": "array",
|
|
274
274
|
"minItems": 1,
|
|
275
275
|
"items": {
|
|
276
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
276
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Requirement_Result"
|
|
277
277
|
},
|
|
278
278
|
"description": "The set of all tests within the requirement and their results."
|
|
279
279
|
},
|
|
280
280
|
"statusOverrides": {
|
|
281
281
|
"type": "array",
|
|
282
282
|
"items": {
|
|
283
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
283
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/Status_Override"
|
|
284
284
|
},
|
|
285
285
|
"description": "Chronological history of all overrides applied to this requirement. Overrides are intentional changes to the compliance status and/or impact score (waivers, attestations, false positives, risk adjustments). Most recent override should be first in array. Preserves full audit trail."
|
|
286
286
|
},
|
|
287
287
|
"poams": {
|
|
288
288
|
"type": "array",
|
|
289
289
|
"items": {
|
|
290
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
290
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0#/$defs/POAM"
|
|
291
291
|
},
|
|
292
292
|
"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."
|
|
293
293
|
},
|
|
294
294
|
"effectiveStatus": {
|
|
295
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
295
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Result_Status",
|
|
296
296
|
"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."
|
|
297
297
|
},
|
|
298
298
|
"effectiveImpact": {
|
|
@@ -302,29 +302,29 @@
|
|
|
302
302
|
"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."
|
|
303
303
|
},
|
|
304
304
|
"disposition": {
|
|
305
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
305
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Override_Type",
|
|
306
306
|
"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."
|
|
307
307
|
},
|
|
308
308
|
"evidence": {
|
|
309
309
|
"type": "array",
|
|
310
310
|
"items": {
|
|
311
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
311
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
|
|
312
312
|
},
|
|
313
313
|
"description": "Supporting evidence for this requirement's findings, such as screenshots, code samples, or log excerpts."
|
|
314
314
|
},
|
|
315
315
|
"cvss": {
|
|
316
316
|
"type": "array",
|
|
317
317
|
"items": {
|
|
318
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
318
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0#/$defs/Cvss"
|
|
319
319
|
},
|
|
320
320
|
"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."
|
|
321
321
|
},
|
|
322
322
|
"epss": {
|
|
323
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.
|
|
323
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.4.0#/$defs/Epss",
|
|
324
324
|
"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."
|
|
325
325
|
},
|
|
326
326
|
"kev": {
|
|
327
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.
|
|
327
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.4.0#/$defs/Kev",
|
|
328
328
|
"description": "CISA Known Exploited Vulnerabilities (KEV) catalog status. When inKev=true, dateAdded and dueDate carry the federal patching deadline."
|
|
329
329
|
},
|
|
330
330
|
"cwe": {
|
|
@@ -338,7 +338,7 @@
|
|
|
338
338
|
"affectedPackages": {
|
|
339
339
|
"type": "array",
|
|
340
340
|
"items": {
|
|
341
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
341
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0#/$defs/Affected_Package"
|
|
342
342
|
},
|
|
343
343
|
"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)."
|
|
344
344
|
}
|
|
@@ -626,11 +626,11 @@
|
|
|
626
626
|
"description": "A requirement that has been evaluated, including any findings.",
|
|
627
627
|
"title": "Evaluated Requirement"
|
|
628
628
|
},
|
|
629
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
629
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.4.0": {
|
|
630
630
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
631
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
631
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.4.0",
|
|
632
632
|
"title": "HDF Component Primitives",
|
|
633
|
-
"description": "First-class system component with identity, polymorphic type,
|
|
633
|
+
"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).",
|
|
634
634
|
"$defs": {
|
|
635
635
|
"Base_Component": {
|
|
636
636
|
"type": "object",
|
|
@@ -654,9 +654,11 @@
|
|
|
654
654
|
"application",
|
|
655
655
|
"artifact",
|
|
656
656
|
"network",
|
|
657
|
-
"database"
|
|
657
|
+
"database",
|
|
658
|
+
"aiModel",
|
|
659
|
+
"dataset"
|
|
658
660
|
],
|
|
659
|
-
"description": "Component type discriminator. Same values as Target types."
|
|
661
|
+
"description": "Component type discriminator. Same values as Target types, plus aiModel and dataset (thin AI subject components whose detail lives in an attached ai-model / dataset BOM)."
|
|
660
662
|
},
|
|
661
663
|
"name": {
|
|
662
664
|
"type": "string",
|
|
@@ -672,7 +674,7 @@
|
|
|
672
674
|
"description": "Description of this component's role or purpose."
|
|
673
675
|
},
|
|
674
676
|
"owner": {
|
|
675
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
677
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
|
|
676
678
|
"description": "Team or individual responsible for this component. Enables per-component ownership when different teams manage different parts of a system."
|
|
677
679
|
},
|
|
678
680
|
"externalIds": {
|
|
@@ -689,23 +691,19 @@
|
|
|
689
691
|
},
|
|
690
692
|
"description": "Optional key-value labels for flexible grouping. Well-known keys: system, component, environment, region, team. Values must be strings."
|
|
691
693
|
},
|
|
692
|
-
"
|
|
693
|
-
"
|
|
694
|
-
"
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
"
|
|
698
|
-
"format": "uri-reference",
|
|
699
|
-
"description": "URI reference to an external CycloneDX or SPDX SBOM document for this component. May be a relative path, absolute URI, or fragment identifier."
|
|
694
|
+
"boms": {
|
|
695
|
+
"type": "array",
|
|
696
|
+
"items": {
|
|
697
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.4.0#/$defs/Bom"
|
|
698
|
+
},
|
|
699
|
+
"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."
|
|
700
700
|
},
|
|
701
|
-
"
|
|
702
|
-
"type": "
|
|
703
|
-
"
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
],
|
|
708
|
-
"description": "Format of the SBOM (embedded or referenced). Required when sbom or sbomRef is present."
|
|
701
|
+
"integrity": {
|
|
702
|
+
"type": "array",
|
|
703
|
+
"items": {
|
|
704
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum"
|
|
705
|
+
},
|
|
706
|
+
"description": "Cryptographic integrity of this component's underlying artifact — model weights or shards, dataset archive, container image, or package bytes. An array supports multi-file/sharded artifacts. This is the single, generic home for artifact/subject integrity across all component types (it replaced the former per-type Container_Image digest and Artifact checksum fields). Distinct from BOM-document integrity (Bom.hashes[]) and from the document tamper-evidence Integrity type."
|
|
709
707
|
},
|
|
710
708
|
"baselineRefs": {
|
|
711
709
|
"type": "array",
|
|
@@ -717,115 +715,42 @@
|
|
|
717
715
|
"inputOverrides": {
|
|
718
716
|
"type": "array",
|
|
719
717
|
"items": {
|
|
720
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
718
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0#/$defs/Input_Override"
|
|
721
719
|
},
|
|
722
720
|
"description": "System-specific overrides for baseline input values."
|
|
723
721
|
},
|
|
724
722
|
"targetSelector": {
|
|
725
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
723
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0#/$defs/Target_Selector",
|
|
726
724
|
"description": "Label selector to match targets belonging to this component during migration. Targets with matching labels are automatically included."
|
|
727
725
|
}
|
|
728
726
|
},
|
|
729
|
-
"
|
|
727
|
+
"examples": [
|
|
730
728
|
{
|
|
731
|
-
"
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
}
|
|
738
|
-
},
|
|
739
|
-
"required": [
|
|
740
|
-
"sbomFormat"
|
|
741
|
-
]
|
|
742
|
-
},
|
|
743
|
-
{
|
|
744
|
-
"properties": {
|
|
745
|
-
"sbom": {
|
|
746
|
-
"type": "object"
|
|
747
|
-
}
|
|
748
|
-
},
|
|
749
|
-
"required": [
|
|
750
|
-
"sbom"
|
|
751
|
-
]
|
|
752
|
-
}
|
|
753
|
-
]
|
|
729
|
+
"type": "aiModel",
|
|
730
|
+
"name": "Llama-2-7b-chat (finetuned)",
|
|
731
|
+
"componentId": "b7c8d9e0-1a2b-4c3d-8e4f-5a6b7c8d9e0f",
|
|
732
|
+
"owner": {
|
|
733
|
+
"type": "email",
|
|
734
|
+
"identifier": "ml-platform@agency.gov"
|
|
754
735
|
},
|
|
755
|
-
"
|
|
756
|
-
|
|
757
|
-
"
|
|
758
|
-
|
|
759
|
-
"required": [
|
|
760
|
-
"bomFormat",
|
|
761
|
-
"specVersion"
|
|
762
|
-
],
|
|
763
|
-
"properties": {
|
|
764
|
-
"bomFormat": {
|
|
765
|
-
"type": "string",
|
|
766
|
-
"const": "CycloneDX",
|
|
767
|
-
"description": "Must be 'CycloneDX' for CycloneDX SBOM documents."
|
|
768
|
-
},
|
|
769
|
-
"specVersion": {
|
|
770
|
-
"type": "string",
|
|
771
|
-
"description": "CycloneDX specification version (e.g., '1.4', '1.5', '1.6')."
|
|
772
|
-
}
|
|
773
|
-
},
|
|
774
|
-
"additionalProperties": true
|
|
775
|
-
}
|
|
736
|
+
"integrity": [
|
|
737
|
+
{
|
|
738
|
+
"algorithm": "sha256",
|
|
739
|
+
"value": "d1f2e3a4b5c6978869504132a1b2c3d4e5f6071829304152637485960a1b2c3d"
|
|
776
740
|
}
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
{
|
|
783
|
-
"
|
|
784
|
-
"sbomFormat": {
|
|
785
|
-
"const": "spdx"
|
|
786
|
-
}
|
|
787
|
-
},
|
|
788
|
-
"required": [
|
|
789
|
-
"sbomFormat"
|
|
790
|
-
]
|
|
791
|
-
},
|
|
792
|
-
{
|
|
793
|
-
"properties": {
|
|
794
|
-
"sbom": {
|
|
795
|
-
"type": "object"
|
|
796
|
-
}
|
|
797
|
-
},
|
|
798
|
-
"required": [
|
|
799
|
-
"sbom"
|
|
800
|
-
]
|
|
801
|
-
}
|
|
802
|
-
]
|
|
803
|
-
},
|
|
804
|
-
"then": {
|
|
805
|
-
"properties": {
|
|
806
|
-
"sbom": {
|
|
807
|
-
"type": "object",
|
|
808
|
-
"required": [
|
|
809
|
-
"spdxVersion",
|
|
810
|
-
"SPDXID"
|
|
811
|
-
],
|
|
812
|
-
"properties": {
|
|
813
|
-
"spdxVersion": {
|
|
814
|
-
"type": "string",
|
|
815
|
-
"description": "SPDX specification version (e.g., 'SPDX-2.3')."
|
|
816
|
-
},
|
|
817
|
-
"SPDXID": {
|
|
818
|
-
"type": "string",
|
|
819
|
-
"description": "SPDX document identifier (e.g., 'SPDXRef-DOCUMENT')."
|
|
820
|
-
}
|
|
821
|
-
},
|
|
822
|
-
"additionalProperties": true
|
|
741
|
+
],
|
|
742
|
+
"boms": [
|
|
743
|
+
{
|
|
744
|
+
"bomType": "ai-model",
|
|
745
|
+
"format": "cyclonedx-ml",
|
|
746
|
+
"model": {
|
|
747
|
+
"adaptationType": "finetune"
|
|
823
748
|
}
|
|
824
749
|
}
|
|
825
|
-
|
|
750
|
+
]
|
|
826
751
|
}
|
|
827
752
|
],
|
|
828
|
-
"description": "Base properties shared by all component types. Extends the Target concept with stable identity, external references, and
|
|
753
|
+
"description": "Base properties shared by all component types. Extends the Target concept with stable identity, external references, generalized BOM attachment (boms[]), and unified artifact integrity (integrity[]).",
|
|
829
754
|
"title": "Base Component"
|
|
830
755
|
},
|
|
831
756
|
"Component": {
|
|
@@ -864,6 +789,12 @@
|
|
|
864
789
|
},
|
|
865
790
|
{
|
|
866
791
|
"$ref": "#/$defs/Database_Component"
|
|
792
|
+
},
|
|
793
|
+
{
|
|
794
|
+
"$ref": "#/$defs/AI_Model_Component"
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
"$ref": "#/$defs/Dataset_Component"
|
|
867
798
|
}
|
|
868
799
|
]
|
|
869
800
|
},
|
|
@@ -878,10 +809,18 @@
|
|
|
878
809
|
"type": {
|
|
879
810
|
"const": "host"
|
|
880
811
|
},
|
|
812
|
+
"hostname": {
|
|
813
|
+
"type": "string",
|
|
814
|
+
"description": "Short, OS-reported host name (the unqualified machine name, e.g. 'web01'). Kept distinct from 'fqdn' because an FQDN is not reliably decomposable into hostname + domain (standalone/workgroup hosts have no domain; a directory domain is not the FQDN's DNS suffix). Aligns with ECS host.hostname and DISA STIG CKL HOST_NAME. Store the short name the source reports; do not derive it from the FQDN."
|
|
815
|
+
},
|
|
881
816
|
"fqdn": {
|
|
882
817
|
"type": "string",
|
|
883
818
|
"format": "hostname",
|
|
884
|
-
"description": "Fully qualified domain name."
|
|
819
|
+
"description": "Fully qualified domain name (e.g. 'web01.prod.example.com'). Distinct from 'hostname' (short) and 'domain' (directory domain). ECS recommends storing this lowercase; the schema does not enforce case so source fidelity is preserved on round-trip."
|
|
820
|
+
},
|
|
821
|
+
"domain": {
|
|
822
|
+
"type": "string",
|
|
823
|
+
"description": "Directory domain the host is a member of — Active Directory / NetBIOS / LDAP domain (ECS host.domain semantics), NOT necessarily the DNS suffix of the FQDN. A standalone or workgroup host has a hostname but no domain. Not derivable from the FQDN; populate only from a source that carries directory membership."
|
|
885
824
|
},
|
|
886
825
|
"ipAddress": {
|
|
887
826
|
"anyOf": [
|
|
@@ -914,10 +853,13 @@
|
|
|
914
853
|
],
|
|
915
854
|
"examples": [
|
|
916
855
|
{
|
|
856
|
+
"$comment": "Domain-joined host carrying all three identity fields separately: short hostname, FQDN, and the (distinct) directory domain. HOST_NAME and HOST_FQDN from a STIG checklist map here; note the AD domain differs from the FQDN's DNS suffix.",
|
|
917
857
|
"type": "host",
|
|
918
858
|
"name": "web-server-prod-01",
|
|
919
859
|
"componentId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
|
|
860
|
+
"hostname": "web01",
|
|
920
861
|
"fqdn": "web01.prod.example.com",
|
|
862
|
+
"domain": "CORP",
|
|
921
863
|
"ipAddress": "10.0.1.50",
|
|
922
864
|
"osName": "Ubuntu",
|
|
923
865
|
"osVersion": "22.04 LTS",
|
|
@@ -925,6 +867,16 @@
|
|
|
925
867
|
"cmdb": "ASSET-12345",
|
|
926
868
|
"aws": "i-0abc123def456789"
|
|
927
869
|
}
|
|
870
|
+
},
|
|
871
|
+
{
|
|
872
|
+
"$comment": "Standalone/workgroup host: has a short hostname but no directory domain — 'domain' is omitted rather than fabricated from the FQDN suffix.",
|
|
873
|
+
"type": "host",
|
|
874
|
+
"name": "kiosk-lab-07",
|
|
875
|
+
"hostname": "kiosk-lab-07",
|
|
876
|
+
"fqdn": "kiosk-lab-07.lab.example.com",
|
|
877
|
+
"ipAddress": "192.168.4.7",
|
|
878
|
+
"osName": "Windows",
|
|
879
|
+
"osVersion": "11 23H2"
|
|
928
880
|
}
|
|
929
881
|
],
|
|
930
882
|
"description": "A physical or virtual server, workstation, or network device.",
|
|
@@ -956,16 +908,26 @@
|
|
|
956
908
|
"tag": {
|
|
957
909
|
"type": "string",
|
|
958
910
|
"description": "Image tag. Example: '1.25'."
|
|
959
|
-
},
|
|
960
|
-
"digest": {
|
|
961
|
-
"type": "string",
|
|
962
|
-
"pattern": "^(sha256:[a-f0-9]{64}|sha512:[a-f0-9]{128}|blake3:[a-f0-9]{64})$",
|
|
963
|
-
"description": "Image digest for immutable reference."
|
|
964
911
|
}
|
|
965
912
|
}
|
|
966
913
|
}
|
|
967
914
|
],
|
|
968
|
-
"
|
|
915
|
+
"examples": [
|
|
916
|
+
{
|
|
917
|
+
"type": "containerImage",
|
|
918
|
+
"name": "nginx",
|
|
919
|
+
"registry": "docker.io",
|
|
920
|
+
"repository": "library/nginx",
|
|
921
|
+
"tag": "1.25-alpine",
|
|
922
|
+
"integrity": [
|
|
923
|
+
{
|
|
924
|
+
"algorithm": "sha256",
|
|
925
|
+
"value": "a9286defaba7b3a519d585ba0e37d0b2cbee74ebfe590960b0b1d6a5e97d1e1d"
|
|
926
|
+
}
|
|
927
|
+
]
|
|
928
|
+
}
|
|
929
|
+
],
|
|
930
|
+
"description": "A static container image (not running). Image integrity — formerly the 'digest' field — is expressed via the shared Base_Component.integrity array.",
|
|
969
931
|
"title": "Container Image Component"
|
|
970
932
|
},
|
|
971
933
|
"Container_Instance_Component": {
|
|
@@ -1042,7 +1004,7 @@
|
|
|
1042
1004
|
"const": "cloudAccount"
|
|
1043
1005
|
},
|
|
1044
1006
|
"provider": {
|
|
1045
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1007
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Cloud_Provider",
|
|
1046
1008
|
"description": "Cloud provider."
|
|
1047
1009
|
},
|
|
1048
1010
|
"accountId": {
|
|
@@ -1081,7 +1043,7 @@
|
|
|
1081
1043
|
"const": "cloudResource"
|
|
1082
1044
|
},
|
|
1083
1045
|
"provider": {
|
|
1084
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1046
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Cloud_Provider",
|
|
1085
1047
|
"description": "Cloud provider."
|
|
1086
1048
|
},
|
|
1087
1049
|
"resourceType": {
|
|
@@ -1188,15 +1150,26 @@
|
|
|
1188
1150
|
"version": {
|
|
1189
1151
|
"type": "string",
|
|
1190
1152
|
"description": "Package version."
|
|
1191
|
-
},
|
|
1192
|
-
"checksum": {
|
|
1193
|
-
"type": "string",
|
|
1194
|
-
"description": "Package checksum for verification."
|
|
1195
1153
|
}
|
|
1196
1154
|
}
|
|
1197
1155
|
}
|
|
1198
1156
|
],
|
|
1199
|
-
"
|
|
1157
|
+
"examples": [
|
|
1158
|
+
{
|
|
1159
|
+
"type": "artifact",
|
|
1160
|
+
"name": "express",
|
|
1161
|
+
"packageManager": "npm",
|
|
1162
|
+
"packageName": "express",
|
|
1163
|
+
"version": "4.18.2",
|
|
1164
|
+
"integrity": [
|
|
1165
|
+
{
|
|
1166
|
+
"algorithm": "sha512",
|
|
1167
|
+
"value": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"
|
|
1168
|
+
}
|
|
1169
|
+
]
|
|
1170
|
+
}
|
|
1171
|
+
],
|
|
1172
|
+
"description": "A software artifact or dependency (for SCA tools). Package integrity — formerly the 'checksum' field — is expressed via the shared Base_Component.integrity array.",
|
|
1200
1173
|
"title": "Artifact Component"
|
|
1201
1174
|
},
|
|
1202
1175
|
"Network_Component": {
|
|
@@ -1258,12 +1231,120 @@
|
|
|
1258
1231
|
],
|
|
1259
1232
|
"description": "A database instance.",
|
|
1260
1233
|
"title": "Database Component"
|
|
1234
|
+
},
|
|
1235
|
+
"AI_Model_Component": {
|
|
1236
|
+
"allOf": [
|
|
1237
|
+
{
|
|
1238
|
+
"$ref": "#/$defs/Base_Component"
|
|
1239
|
+
},
|
|
1240
|
+
{
|
|
1241
|
+
"type": "object",
|
|
1242
|
+
"properties": {
|
|
1243
|
+
"type": {
|
|
1244
|
+
"const": "aiModel"
|
|
1245
|
+
},
|
|
1246
|
+
"modelId": {
|
|
1247
|
+
"type": "string",
|
|
1248
|
+
"description": "Provider/registry identifier for the model. Examples: a Hugging Face repo id ('meta-llama/Llama-2-7b-hf') or a model purl. Correlates the component to its ai-model BOM(s) and to lineage references from other models."
|
|
1249
|
+
},
|
|
1250
|
+
"version": {
|
|
1251
|
+
"type": "string",
|
|
1252
|
+
"description": "Model version, revision, or checkpoint tag."
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
],
|
|
1257
|
+
"examples": [
|
|
1258
|
+
{
|
|
1259
|
+
"type": "aiModel",
|
|
1260
|
+
"name": "Llama-2-7b-chat (finetuned)",
|
|
1261
|
+
"componentId": "b7c8d9e0-1a2b-4c3d-8e4f-5a6b7c8d9e0f",
|
|
1262
|
+
"modelId": "acme/llama-2-7b-chat-support",
|
|
1263
|
+
"version": "1.2.0",
|
|
1264
|
+
"integrity": [
|
|
1265
|
+
{
|
|
1266
|
+
"algorithm": "sha256",
|
|
1267
|
+
"value": "d1f2e3a4b5c6978869504132a1b2c3d4e5f6071829304152637485960a1b2c3d"
|
|
1268
|
+
}
|
|
1269
|
+
],
|
|
1270
|
+
"boms": [
|
|
1271
|
+
{
|
|
1272
|
+
"bomType": "ai-model",
|
|
1273
|
+
"format": "cyclonedx-ml",
|
|
1274
|
+
"model": {
|
|
1275
|
+
"modelArchitecture": "transformer",
|
|
1276
|
+
"parameterCount": 6738415616,
|
|
1277
|
+
"serializationFormat": "safetensors",
|
|
1278
|
+
"adaptationType": "finetune",
|
|
1279
|
+
"baseModelRef": "meta-llama/Llama-2-7b-hf"
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
]
|
|
1283
|
+
}
|
|
1284
|
+
],
|
|
1285
|
+
"description": "A thin AI-model component: identity and correlation only (parallel to Host_Component's fqdn/ip). All model detail — architecture, parameter count, serialization format, lineage — lives in an attached ai-model BOM (boms[]), never on the component itself.",
|
|
1286
|
+
"title": "AI Model Component"
|
|
1287
|
+
},
|
|
1288
|
+
"Dataset_Component": {
|
|
1289
|
+
"allOf": [
|
|
1290
|
+
{
|
|
1291
|
+
"$ref": "#/$defs/Base_Component"
|
|
1292
|
+
},
|
|
1293
|
+
{
|
|
1294
|
+
"type": "object",
|
|
1295
|
+
"properties": {
|
|
1296
|
+
"type": {
|
|
1297
|
+
"const": "dataset"
|
|
1298
|
+
},
|
|
1299
|
+
"datasetId": {
|
|
1300
|
+
"type": "string",
|
|
1301
|
+
"description": "Provider/registry identifier for the dataset. Examples: a Hugging Face dataset repo id ('HuggingFaceH4/ultrachat_200k'), a DOI, or a dataset purl. Correlates the component to its dataset BOM(s) and to datasetRefs from ai-model components."
|
|
1302
|
+
},
|
|
1303
|
+
"version": {
|
|
1304
|
+
"type": "string",
|
|
1305
|
+
"description": "Dataset version, release identifier, or — for highly dynamic datasets — a timestamped release marker."
|
|
1306
|
+
}
|
|
1307
|
+
}
|
|
1308
|
+
}
|
|
1309
|
+
],
|
|
1310
|
+
"examples": [
|
|
1311
|
+
{
|
|
1312
|
+
"type": "dataset",
|
|
1313
|
+
"name": "UltraChat-200k (filtered)",
|
|
1314
|
+
"componentId": "c1d2e3f4-a5b6-4c7d-8e9f-0a1b2c3d4e5f",
|
|
1315
|
+
"datasetId": "acme/ultrachat-200k-filtered",
|
|
1316
|
+
"version": "2026-06-01",
|
|
1317
|
+
"integrity": [
|
|
1318
|
+
{
|
|
1319
|
+
"algorithm": "sha256",
|
|
1320
|
+
"value": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08"
|
|
1321
|
+
}
|
|
1322
|
+
],
|
|
1323
|
+
"boms": [
|
|
1324
|
+
{
|
|
1325
|
+
"bomType": "dataset",
|
|
1326
|
+
"format": "croissant",
|
|
1327
|
+
"dataset": {
|
|
1328
|
+
"recordCount": 180000,
|
|
1329
|
+
"datasetFormat": "parquet",
|
|
1330
|
+
"dataClassification": "public",
|
|
1331
|
+
"baseDatasetRefs": [
|
|
1332
|
+
"HuggingFaceH4/ultrachat_200k"
|
|
1333
|
+
],
|
|
1334
|
+
"derivation": "filtered"
|
|
1335
|
+
}
|
|
1336
|
+
}
|
|
1337
|
+
]
|
|
1338
|
+
}
|
|
1339
|
+
],
|
|
1340
|
+
"description": "A thin dataset component: identity and correlation only, symmetric with AI_Model_Component. All dataset detail — record count, format, classification, lineage — lives in an attached dataset BOM (boms[]), never on the component itself.",
|
|
1341
|
+
"title": "Dataset Component"
|
|
1261
1342
|
}
|
|
1262
1343
|
}
|
|
1263
1344
|
},
|
|
1264
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1345
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0": {
|
|
1265
1346
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1266
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1347
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0",
|
|
1267
1348
|
"title": "HDF Common Primitives",
|
|
1268
1349
|
"description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
|
|
1269
1350
|
"$defs": {
|
|
@@ -1272,9 +1353,10 @@
|
|
|
1272
1353
|
"enum": [
|
|
1273
1354
|
"sha256",
|
|
1274
1355
|
"sha384",
|
|
1275
|
-
"sha512"
|
|
1356
|
+
"sha512",
|
|
1357
|
+
"blake3"
|
|
1276
1358
|
],
|
|
1277
|
-
"description": "Supported cryptographic hash algorithms for checksums and integrity verification.",
|
|
1359
|
+
"description": "Supported cryptographic hash algorithms for checksums and integrity verification. blake3 covers container-image and other artifact digests that use it.",
|
|
1278
1360
|
"title": "Hash Algorithm"
|
|
1279
1361
|
},
|
|
1280
1362
|
"Requirement_Group": {
|
|
@@ -1535,10 +1617,11 @@
|
|
|
1535
1617
|
"email",
|
|
1536
1618
|
"username",
|
|
1537
1619
|
"system",
|
|
1620
|
+
"agent",
|
|
1538
1621
|
"simple",
|
|
1539
1622
|
"other"
|
|
1540
1623
|
],
|
|
1541
|
-
"description": "The type of identifier. Use 'email' for email addresses, 'username' for user accounts, 'system' for
|
|
1624
|
+
"description": "The type of identifier. Use 'email' for email addresses, 'username' for user accounts, 'system' for deterministic non-interactive automation (CI jobs, cron, scanners), 'agent' for an AI/LLM agent acting with autonomy — kept distinct from 'system' so auditors can apply AI-specific scrutiny (e.g. 'an LLM proposed this' vs a deterministic job) and satisfy AI-source disclosure under frameworks like the EU AI Act and NIST AI RMF, 'simple' for basic string identifiers without additional classification, or 'other' for custom identity systems."
|
|
1542
1625
|
},
|
|
1543
1626
|
"description": {
|
|
1544
1627
|
"type": "string",
|
|
@@ -1559,6 +1642,11 @@
|
|
|
1559
1642
|
"type": "system",
|
|
1560
1643
|
"identifier": "automated-scanner-01",
|
|
1561
1644
|
"description": "Nightly compliance scan pipeline"
|
|
1645
|
+
},
|
|
1646
|
+
{
|
|
1647
|
+
"type": "agent",
|
|
1648
|
+
"identifier": "cve-enrichment-bot/v0.4.2",
|
|
1649
|
+
"description": "OpenAI GPT-4 via internal CVE-enrichment tool; proposes environmental CVSS for human review"
|
|
1562
1650
|
}
|
|
1563
1651
|
],
|
|
1564
1652
|
"description": "Represents an identity that performed an action, such as capturing evidence or applying an override.",
|
|
@@ -2046,7 +2134,7 @@
|
|
|
2046
2134
|
},
|
|
2047
2135
|
"examples": [
|
|
2048
2136
|
{
|
|
2049
|
-
"$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.
|
|
2137
|
+
"$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.4.0 (backward compatibility).",
|
|
2050
2138
|
"id": "SV-238196",
|
|
2051
2139
|
"title": "The Ubuntu operating system must enforce password complexity",
|
|
2052
2140
|
"impact": 0.5,
|
|
@@ -2183,9 +2271,482 @@
|
|
|
2183
2271
|
}
|
|
2184
2272
|
}
|
|
2185
2273
|
},
|
|
2186
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/
|
|
2274
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.4.0": {
|
|
2187
2275
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2188
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/
|
|
2276
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.4.0",
|
|
2277
|
+
"title": "HDF BOM Primitives",
|
|
2278
|
+
"description": "Generalized Bill-of-Materials / manifest representation. One extensible Bom shape, discriminated by bomType, carries any manifest kind (SBOM, AI model/dataset, and reserved future kinds) either by passthrough (opaque ref/embed of the native document) or normalized (converted into HDF's queryable shape). Subject identity (name, version, componentId) is inherited from the host component or system — the BOM never re-owns it. See ADR-0001.",
|
|
2279
|
+
"$defs": {
|
|
2280
|
+
"Bom_Type": {
|
|
2281
|
+
"type": "string",
|
|
2282
|
+
"title": "BOM Type",
|
|
2283
|
+
"anyOf": [
|
|
2284
|
+
{
|
|
2285
|
+
"enum": [
|
|
2286
|
+
"sbom",
|
|
2287
|
+
"ai-model",
|
|
2288
|
+
"dataset",
|
|
2289
|
+
"hbom",
|
|
2290
|
+
"cbom",
|
|
2291
|
+
"saasbom",
|
|
2292
|
+
"obom",
|
|
2293
|
+
"mbom",
|
|
2294
|
+
"kbom"
|
|
2295
|
+
]
|
|
2296
|
+
},
|
|
2297
|
+
{
|
|
2298
|
+
"pattern": "^x-[a-z0-9]+(-[a-z0-9]+)*$"
|
|
2299
|
+
}
|
|
2300
|
+
],
|
|
2301
|
+
"description": "Discriminator for the manifest kind. Reserved, CycloneDX-aligned set: sbom (software), ai-model, dataset, hbom (hardware), cbom (cryptography), saasbom (services), obom (operations), mbom (manufacturing), kbom (Kubernetes). Normalized now: sbom, ai-model, dataset; reserved + passthrough-capable now, normalized in later releases: the rest. Custom or experimental kinds MUST use an 'x-' prefix (e.g. 'x-threat-model') so they cannot collide with a value later promoted into the reserved set; a non-'x-' value outside the reserved set is invalid. Adding a reserved value is a schema version bump. VEX/VDR/SecurityProfile are vulnerability assertions, not BOMs, and are intentionally excluded."
|
|
2302
|
+
},
|
|
2303
|
+
"Bom": {
|
|
2304
|
+
"type": "object",
|
|
2305
|
+
"title": "Bill of Materials",
|
|
2306
|
+
"additionalProperties": false,
|
|
2307
|
+
"required": [
|
|
2308
|
+
"bomType",
|
|
2309
|
+
"format"
|
|
2310
|
+
],
|
|
2311
|
+
"properties": {
|
|
2312
|
+
"bomType": {
|
|
2313
|
+
"$ref": "#/$defs/Bom_Type",
|
|
2314
|
+
"description": "The manifest kind. Determines which normalized type-extension (model/dataset/packages) may appear."
|
|
2315
|
+
},
|
|
2316
|
+
"format": {
|
|
2317
|
+
"type": "string",
|
|
2318
|
+
"description": "Source manifest format the BOM was produced from or references. Examples: cyclonedx, cyclonedx-ml, spdx, spdx-ai, huggingface, croissant. Free-form so new formats need no schema change; the converter that emits the BOM owns the value."
|
|
2319
|
+
},
|
|
2320
|
+
"ref": {
|
|
2321
|
+
"type": "string",
|
|
2322
|
+
"format": "uri-reference",
|
|
2323
|
+
"description": "Passthrough by reference: URI (relative path, absolute URI, or fragment) to the native manifest document. Present for externally-hosted BOMs."
|
|
2324
|
+
},
|
|
2325
|
+
"document": {
|
|
2326
|
+
"type": "object",
|
|
2327
|
+
"description": "Passthrough by embedding: the native manifest carried opaquely (e.g. a raw CycloneDX or SPDX object). HDF does not constrain its internal shape — full manifest validation is a tool-level concern."
|
|
2328
|
+
},
|
|
2329
|
+
"hashes": {
|
|
2330
|
+
"type": "array",
|
|
2331
|
+
"items": {
|
|
2332
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum"
|
|
2333
|
+
},
|
|
2334
|
+
"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."
|
|
2335
|
+
},
|
|
2336
|
+
"uniqueId": {
|
|
2337
|
+
"type": "string",
|
|
2338
|
+
"description": "Optional stable identifier for this BOM document (e.g. CycloneDX serialNumber, SPDX documentNamespace). Correlates the same BOM across evidence packages."
|
|
2339
|
+
},
|
|
2340
|
+
"license": {
|
|
2341
|
+
"type": [
|
|
2342
|
+
"string",
|
|
2343
|
+
"null"
|
|
2344
|
+
],
|
|
2345
|
+
"description": "Optional license of the BOM document as a whole (SPDX license expression). Nullable and often meaningless (CBOM algorithms, many HBOM parts have no license); per-node licenses live in the type-extension, not here."
|
|
2346
|
+
},
|
|
2347
|
+
"model": {
|
|
2348
|
+
"$ref": "#/$defs/AI_Model_Extension",
|
|
2349
|
+
"description": "Normalized ai-model extension. Permitted only when bomType is ai-model."
|
|
2350
|
+
},
|
|
2351
|
+
"dataset": {
|
|
2352
|
+
"$ref": "#/$defs/Dataset_Extension",
|
|
2353
|
+
"description": "Normalized dataset extension. Permitted only when bomType is dataset."
|
|
2354
|
+
},
|
|
2355
|
+
"packages": {
|
|
2356
|
+
"type": "array",
|
|
2357
|
+
"items": {
|
|
2358
|
+
"$ref": "#/$defs/SBOM_Package"
|
|
2359
|
+
},
|
|
2360
|
+
"description": "Normalized sbom extension: the flattened software package inventory. Permitted only when bomType is sbom."
|
|
2361
|
+
}
|
|
2362
|
+
},
|
|
2363
|
+
"allOf": [
|
|
2364
|
+
{
|
|
2365
|
+
"$comment": "Three-tier discipline: the ai-model extension may appear only on an ai-model BOM.",
|
|
2366
|
+
"if": {
|
|
2367
|
+
"properties": {
|
|
2368
|
+
"bomType": {
|
|
2369
|
+
"const": "ai-model"
|
|
2370
|
+
}
|
|
2371
|
+
},
|
|
2372
|
+
"required": [
|
|
2373
|
+
"bomType"
|
|
2374
|
+
]
|
|
2375
|
+
},
|
|
2376
|
+
"else": {
|
|
2377
|
+
"properties": {
|
|
2378
|
+
"model": false
|
|
2379
|
+
}
|
|
2380
|
+
}
|
|
2381
|
+
},
|
|
2382
|
+
{
|
|
2383
|
+
"$comment": "The dataset extension may appear only on a dataset BOM.",
|
|
2384
|
+
"if": {
|
|
2385
|
+
"properties": {
|
|
2386
|
+
"bomType": {
|
|
2387
|
+
"const": "dataset"
|
|
2388
|
+
}
|
|
2389
|
+
},
|
|
2390
|
+
"required": [
|
|
2391
|
+
"bomType"
|
|
2392
|
+
]
|
|
2393
|
+
},
|
|
2394
|
+
"else": {
|
|
2395
|
+
"properties": {
|
|
2396
|
+
"dataset": false
|
|
2397
|
+
}
|
|
2398
|
+
}
|
|
2399
|
+
},
|
|
2400
|
+
{
|
|
2401
|
+
"$comment": "The normalized packages extension may appear only on an sbom BOM.",
|
|
2402
|
+
"if": {
|
|
2403
|
+
"properties": {
|
|
2404
|
+
"bomType": {
|
|
2405
|
+
"const": "sbom"
|
|
2406
|
+
}
|
|
2407
|
+
},
|
|
2408
|
+
"required": [
|
|
2409
|
+
"bomType"
|
|
2410
|
+
]
|
|
2411
|
+
},
|
|
2412
|
+
"else": {
|
|
2413
|
+
"properties": {
|
|
2414
|
+
"packages": false
|
|
2415
|
+
}
|
|
2416
|
+
}
|
|
2417
|
+
},
|
|
2418
|
+
{
|
|
2419
|
+
"$comment": "A BOM must carry at least one of ref/document/packages/model/dataset. This intentionally checks PRESENCE, not non-emptiness: under the partial-fidelity design a converter MAY emit an empty normalized extension (e.g. model:{}) alongside a raw `document` passthrough when a source has no cleanly-mappable fields, so this constraint deliberately does not require minProperties/minItems on the extension. A bare {bomType, format} carrying none of these keys is unusable and invalid.",
|
|
2420
|
+
"anyOf": [
|
|
2421
|
+
{
|
|
2422
|
+
"required": [
|
|
2423
|
+
"ref"
|
|
2424
|
+
]
|
|
2425
|
+
},
|
|
2426
|
+
{
|
|
2427
|
+
"required": [
|
|
2428
|
+
"document"
|
|
2429
|
+
]
|
|
2430
|
+
},
|
|
2431
|
+
{
|
|
2432
|
+
"required": [
|
|
2433
|
+
"packages"
|
|
2434
|
+
]
|
|
2435
|
+
},
|
|
2436
|
+
{
|
|
2437
|
+
"required": [
|
|
2438
|
+
"model"
|
|
2439
|
+
]
|
|
2440
|
+
},
|
|
2441
|
+
{
|
|
2442
|
+
"required": [
|
|
2443
|
+
"dataset"
|
|
2444
|
+
]
|
|
2445
|
+
}
|
|
2446
|
+
]
|
|
2447
|
+
}
|
|
2448
|
+
],
|
|
2449
|
+
"examples": [
|
|
2450
|
+
{
|
|
2451
|
+
"$comment": "Passthrough SBOM by external reference — the universal escape hatch, available to every bomType.",
|
|
2452
|
+
"bomType": "sbom",
|
|
2453
|
+
"format": "cyclonedx",
|
|
2454
|
+
"ref": "https://artifacts.agency.gov/sbom/webtier.cdx.json",
|
|
2455
|
+
"hashes": [
|
|
2456
|
+
{
|
|
2457
|
+
"algorithm": "sha256",
|
|
2458
|
+
"value": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
|
2459
|
+
}
|
|
2460
|
+
]
|
|
2461
|
+
},
|
|
2462
|
+
{
|
|
2463
|
+
"$comment": "Passthrough for a reserved-but-not-yet-normalized type (cbom) — carried opaquely until a normalized extension ships.",
|
|
2464
|
+
"bomType": "cbom",
|
|
2465
|
+
"format": "cyclonedx",
|
|
2466
|
+
"document": {
|
|
2467
|
+
"bomFormat": "CycloneDX",
|
|
2468
|
+
"specVersion": "1.6"
|
|
2469
|
+
}
|
|
2470
|
+
},
|
|
2471
|
+
{
|
|
2472
|
+
"$comment": "Normalized ai-model BOM: CISA/G7-aligned fields live in the model extension, never at the component root or shared base.",
|
|
2473
|
+
"bomType": "ai-model",
|
|
2474
|
+
"format": "cyclonedx-ml",
|
|
2475
|
+
"model": {
|
|
2476
|
+
"modelArchitecture": "transformer",
|
|
2477
|
+
"parameterCount": 6738415616,
|
|
2478
|
+
"serializationFormat": "safetensors",
|
|
2479
|
+
"adaptationType": "finetune",
|
|
2480
|
+
"baseModelRef": "meta-llama/Llama-2-7b-hf",
|
|
2481
|
+
"learningApproach": "supervised",
|
|
2482
|
+
"task": "text-generation",
|
|
2483
|
+
"performanceMetrics": [
|
|
2484
|
+
{
|
|
2485
|
+
"name": "MMLU",
|
|
2486
|
+
"value": "0.457"
|
|
2487
|
+
}
|
|
2488
|
+
],
|
|
2489
|
+
"hyperparameters": [
|
|
2490
|
+
{
|
|
2491
|
+
"name": "epochs",
|
|
2492
|
+
"value": "3"
|
|
2493
|
+
},
|
|
2494
|
+
{
|
|
2495
|
+
"name": "learning-rate",
|
|
2496
|
+
"value": "2e-5"
|
|
2497
|
+
}
|
|
2498
|
+
],
|
|
2499
|
+
"inputOutput": {
|
|
2500
|
+
"dataTypes": [
|
|
2501
|
+
"string"
|
|
2502
|
+
],
|
|
2503
|
+
"modality": [
|
|
2504
|
+
"text"
|
|
2505
|
+
],
|
|
2506
|
+
"contextLength": 4096,
|
|
2507
|
+
"tokenizer": "llama-bpe"
|
|
2508
|
+
}
|
|
2509
|
+
}
|
|
2510
|
+
},
|
|
2511
|
+
{
|
|
2512
|
+
"$comment": "Normalized dataset BOM with lineage — a filtered derivative of a base dataset, referenced by an ai-model via datasetRefs.",
|
|
2513
|
+
"bomType": "dataset",
|
|
2514
|
+
"format": "croissant",
|
|
2515
|
+
"dataset": {
|
|
2516
|
+
"recordCount": 2500000,
|
|
2517
|
+
"datasetFormat": "parquet",
|
|
2518
|
+
"dataClassification": "public",
|
|
2519
|
+
"intendedUse": "instruction fine-tuning",
|
|
2520
|
+
"modality": "text",
|
|
2521
|
+
"provenance": "Filtered from the public UltraChat corpus; low-quality and duplicate turns removed.",
|
|
2522
|
+
"statisticalProperties": "Mean 512 tokens/record; 61% single-turn, 39% multi-turn; English-dominant (~92%).",
|
|
2523
|
+
"baseDatasetRefs": [
|
|
2524
|
+
"HuggingFaceH4/ultrachat_200k"
|
|
2525
|
+
],
|
|
2526
|
+
"derivation": "filtered"
|
|
2527
|
+
}
|
|
2528
|
+
}
|
|
2529
|
+
]
|
|
2530
|
+
},
|
|
2531
|
+
"AI_Model_Extension": {
|
|
2532
|
+
"type": "object",
|
|
2533
|
+
"additionalProperties": true,
|
|
2534
|
+
"description": "Normalized AI-model fields, aligned to the CISA/G7 'SBOM for AI' minimum elements. All fields optional (standards-correct; only the EU AI Act makes a subset binding for high-risk/GPAI). Left open (additionalProperties: true) so a converter can carry unmapped native fields opaquely (partial-fidelity pattern). Subject name/version are inherited from the host aiModel component, not repeated here.",
|
|
2535
|
+
"title": "AI Model BOM Extension",
|
|
2536
|
+
"properties": {
|
|
2537
|
+
"modelArchitecture": {
|
|
2538
|
+
"type": "string",
|
|
2539
|
+
"description": "Model architecture family. Examples: transformer, cnn, diffusion, mixture-of-experts."
|
|
2540
|
+
},
|
|
2541
|
+
"parameterCount": {
|
|
2542
|
+
"type": "integer",
|
|
2543
|
+
"minimum": 0,
|
|
2544
|
+
"description": "Total trainable parameter count. No native CycloneDX/SPDX field exists; first-class here because the EU AI Act keys GPAI obligations off model scale."
|
|
2545
|
+
},
|
|
2546
|
+
"serializationFormat": {
|
|
2547
|
+
"type": "string",
|
|
2548
|
+
"description": "On-disk weight serialization format. Security-critical yet under-modeled by BOM specs: pickle/pytorch permits arbitrary code execution on load; safetensors does not. Examples: safetensors, pytorch, gguf, onnx, tensorflow."
|
|
2549
|
+
},
|
|
2550
|
+
"adaptationType": {
|
|
2551
|
+
"type": "string",
|
|
2552
|
+
"title": "Model Adaptation Type",
|
|
2553
|
+
"enum": [
|
|
2554
|
+
"finetune",
|
|
2555
|
+
"adapter",
|
|
2556
|
+
"quantized",
|
|
2557
|
+
"merge"
|
|
2558
|
+
],
|
|
2559
|
+
"description": "Lineage relationship to baseModelRef, adopting Hugging Face's base_model_relation vocabulary (the only typed lineage enum in the ecosystem)."
|
|
2560
|
+
},
|
|
2561
|
+
"baseModelRef": {
|
|
2562
|
+
"type": "string",
|
|
2563
|
+
"description": "Reference to the base model this one was adapted from (e.g. a Hugging Face repo id or purl). Correlates the lineage edge; the base model itself may carry its own ai-model BOM."
|
|
2564
|
+
},
|
|
2565
|
+
"datasetRefs": {
|
|
2566
|
+
"type": "array",
|
|
2567
|
+
"items": {
|
|
2568
|
+
"type": "string"
|
|
2569
|
+
},
|
|
2570
|
+
"description": "References to the training/evaluation datasets this model was produced from — preferably a dataset component's componentId (correlating to a first-class dataset subject rather than duplicating dataset detail, per ADR §10), or a dataset BOM uniqueId/URI when no component exists."
|
|
2571
|
+
},
|
|
2572
|
+
"intendedUse": {
|
|
2573
|
+
"type": "string",
|
|
2574
|
+
"description": "Free-text statement of intended use and out-of-scope uses (CISA/G7 minimum element)."
|
|
2575
|
+
},
|
|
2576
|
+
"learningApproach": {
|
|
2577
|
+
"type": "string",
|
|
2578
|
+
"description": "Model's learning/training paradigm. Free-text because the value set varies across standards. Examples: supervised, self-supervised, semi-supervised, reinforcement. Cross-standard intersection: SPDX 3.0 ai_typeOfModel ∩ CycloneDX modelParameters.approach.type ∩ CISA/G7 learning type."
|
|
2579
|
+
},
|
|
2580
|
+
"task": {
|
|
2581
|
+
"type": "string",
|
|
2582
|
+
"description": "The ML task the model performs. Free-text. Examples: text-classification, sentiment-analysis, object-detection, translation. Sourced from CycloneDX modelParameters.task (SPDX 3.0 ai_domain is domain-level/adjacent, not the task); CISA/G7 intended-application."
|
|
2583
|
+
},
|
|
2584
|
+
"performanceMetrics": {
|
|
2585
|
+
"type": "array",
|
|
2586
|
+
"items": {
|
|
2587
|
+
"type": "object",
|
|
2588
|
+
"additionalProperties": true,
|
|
2589
|
+
"properties": {
|
|
2590
|
+
"name": {
|
|
2591
|
+
"type": "string",
|
|
2592
|
+
"description": "Metric name. Examples: accuracy, f1, BLEU, latency."
|
|
2593
|
+
},
|
|
2594
|
+
"value": {
|
|
2595
|
+
"type": "string",
|
|
2596
|
+
"description": "Reported metric value, free-text because metrics are heterogeneous (percentages, scores, milliseconds)."
|
|
2597
|
+
}
|
|
2598
|
+
}
|
|
2599
|
+
},
|
|
2600
|
+
"description": "Reported evaluation metrics as name/value pairs. Values are free-text because metrics are heterogeneous (accuracy, f1, BLEU, latency). The item stays open (additionalProperties: true) to carry native CycloneDX slice/confidenceInterval detail opaquely. Cross-standard intersection: SPDX 3.0 ai_metric ∩ CycloneDX quantitativeAnalysis.performanceMetrics ∩ CISA/G7 KPI cluster."
|
|
2601
|
+
},
|
|
2602
|
+
"hyperparameters": {
|
|
2603
|
+
"type": "array",
|
|
2604
|
+
"items": {
|
|
2605
|
+
"type": "object",
|
|
2606
|
+
"properties": {
|
|
2607
|
+
"name": {
|
|
2608
|
+
"type": "string",
|
|
2609
|
+
"description": "Hyper-parameter name. Examples: epochs, learning-rate, batch-size."
|
|
2610
|
+
},
|
|
2611
|
+
"value": {
|
|
2612
|
+
"type": "string",
|
|
2613
|
+
"description": "Hyper-parameter value (free-text)."
|
|
2614
|
+
}
|
|
2615
|
+
}
|
|
2616
|
+
},
|
|
2617
|
+
"description": "Training hyper-parameters as name/value pairs (epochs, learning-rate, batch-size). This is the set of training knobs, NOT the model's trainable parameterCount — the two are routinely conflated. CISA/G7 'Model properties: hyper-parameters'; SPDX 3.0 ai_hyperparameter."
|
|
2618
|
+
},
|
|
2619
|
+
"inputOutput": {
|
|
2620
|
+
"type": "object",
|
|
2621
|
+
"additionalProperties": true,
|
|
2622
|
+
"description": "Model input/output properties (CISA/G7 minimum element): I/O data types, modality, context/sequence length, and tokenizer. Sourced from CycloneDX modelParameters.inputs[].format / outputs[].format. All sub-fields optional.",
|
|
2623
|
+
"properties": {
|
|
2624
|
+
"dataTypes": {
|
|
2625
|
+
"type": "array",
|
|
2626
|
+
"items": {
|
|
2627
|
+
"type": "string"
|
|
2628
|
+
},
|
|
2629
|
+
"description": "Input/output data types. Examples: string, byte[], float32, image."
|
|
2630
|
+
},
|
|
2631
|
+
"modality": {
|
|
2632
|
+
"type": [
|
|
2633
|
+
"string",
|
|
2634
|
+
"array"
|
|
2635
|
+
],
|
|
2636
|
+
"items": {
|
|
2637
|
+
"type": "string"
|
|
2638
|
+
},
|
|
2639
|
+
"description": "Input/output modalities. String or array of strings. Examples: text, image, audio. Symmetric with Dataset_Extension.modality."
|
|
2640
|
+
},
|
|
2641
|
+
"contextLength": {
|
|
2642
|
+
"type": "integer",
|
|
2643
|
+
"minimum": 0,
|
|
2644
|
+
"description": "Maximum context/sequence length the model accepts, in tokens."
|
|
2645
|
+
},
|
|
2646
|
+
"tokenizer": {
|
|
2647
|
+
"type": "string",
|
|
2648
|
+
"description": "Tokenizer used for the model's input encoding. Examples: BPE, SentencePiece, tiktoken."
|
|
2649
|
+
}
|
|
2650
|
+
}
|
|
2651
|
+
}
|
|
2652
|
+
}
|
|
2653
|
+
},
|
|
2654
|
+
"Dataset_Extension": {
|
|
2655
|
+
"type": "object",
|
|
2656
|
+
"additionalProperties": true,
|
|
2657
|
+
"description": "Normalized dataset fields (SPDX 3.0 Dataset profile / MLCommons Croissant aligned). All optional; open for partial-fidelity passthrough of unmapped native fields. Symmetric with AI_Model_Extension: carries the dataset's own lineage (baseDatasetRefs/derivation) just as the model extension carries baseModelRef/adaptationType.",
|
|
2658
|
+
"title": "Dataset BOM Extension",
|
|
2659
|
+
"properties": {
|
|
2660
|
+
"recordCount": {
|
|
2661
|
+
"type": "integer",
|
|
2662
|
+
"minimum": 0,
|
|
2663
|
+
"description": "Number of records/examples in the dataset."
|
|
2664
|
+
},
|
|
2665
|
+
"datasetFormat": {
|
|
2666
|
+
"type": "string",
|
|
2667
|
+
"description": "Physical format of the dataset. Examples: parquet, csv, jsonl, tfrecord, webdataset."
|
|
2668
|
+
},
|
|
2669
|
+
"dataClassification": {
|
|
2670
|
+
"type": "string",
|
|
2671
|
+
"description": "Sensitivity/classification of the data. Examples: public, internal, confidential, pii, phi."
|
|
2672
|
+
},
|
|
2673
|
+
"intendedUse": {
|
|
2674
|
+
"type": "string",
|
|
2675
|
+
"description": "Free-text statement of the dataset's intended use (CISA/G7 minimum element)."
|
|
2676
|
+
},
|
|
2677
|
+
"modality": {
|
|
2678
|
+
"type": [
|
|
2679
|
+
"string",
|
|
2680
|
+
"array"
|
|
2681
|
+
],
|
|
2682
|
+
"items": {
|
|
2683
|
+
"type": "string"
|
|
2684
|
+
},
|
|
2685
|
+
"description": "Content modality/kind of the data (CISA/G7 'Dataset content: modality'). Examples: text, image, tabular, timeseries, audio. DISTINCT from datasetFormat, which is the physical encoding (parquet/csv). Resolves SPDX 3.0 dataset_datasetType, which is content-kind, not physical format. String or array of strings."
|
|
2686
|
+
},
|
|
2687
|
+
"provenance": {
|
|
2688
|
+
"type": "string",
|
|
2689
|
+
"description": "Free-text description of the dataset's origin and collection process (CISA/G7 'Dataset provenance'; SPDX 3.0 dataset_dataCollectionProcess)."
|
|
2690
|
+
},
|
|
2691
|
+
"statisticalProperties": {
|
|
2692
|
+
"type": "string",
|
|
2693
|
+
"description": "Free-text summary of the dataset's statistical properties (CISA/G7 minimum element; open-ended by design). Intentionally free-text and will remain so permanently: recordCount is the one structured statistic, and restructuring this into an object later would break existing consumers, so it stays a string (additive-only)."
|
|
2694
|
+
},
|
|
2695
|
+
"baseDatasetRefs": {
|
|
2696
|
+
"type": "array",
|
|
2697
|
+
"items": {
|
|
2698
|
+
"type": "string"
|
|
2699
|
+
},
|
|
2700
|
+
"description": "References to the source dataset(s) this one was derived from — a dataset componentId, or a dataset BOM uniqueId/URI when no component exists. The lineage edge parallel to ai-model's baseModelRef; the base dataset may carry its own dataset BOM."
|
|
2701
|
+
},
|
|
2702
|
+
"derivation": {
|
|
2703
|
+
"type": "string",
|
|
2704
|
+
"title": "Dataset Derivation Type",
|
|
2705
|
+
"enum": [
|
|
2706
|
+
"filtered",
|
|
2707
|
+
"augmented",
|
|
2708
|
+
"merged",
|
|
2709
|
+
"sampled"
|
|
2710
|
+
],
|
|
2711
|
+
"description": "Relationship of this dataset to baseDatasetRefs, parallel to the model extension's adaptationType. Minimal + extensible: filtered (subset by rule), augmented (added/synthesized records), merged (union of sources), sampled (statistical draw)."
|
|
2712
|
+
}
|
|
2713
|
+
}
|
|
2714
|
+
},
|
|
2715
|
+
"SBOM_Package": {
|
|
2716
|
+
"type": "object",
|
|
2717
|
+
"additionalProperties": true,
|
|
2718
|
+
"description": "A single normalized software package entry within an sbom BOM. Minimal identity + version for querying/diffing; the full native record remains available via passthrough (document/ref).",
|
|
2719
|
+
"title": "SBOM Package",
|
|
2720
|
+
"required": [
|
|
2721
|
+
"name"
|
|
2722
|
+
],
|
|
2723
|
+
"properties": {
|
|
2724
|
+
"name": {
|
|
2725
|
+
"type": "string",
|
|
2726
|
+
"description": "Package name."
|
|
2727
|
+
},
|
|
2728
|
+
"version": {
|
|
2729
|
+
"type": "string",
|
|
2730
|
+
"description": "Package version."
|
|
2731
|
+
},
|
|
2732
|
+
"purl": {
|
|
2733
|
+
"type": "string",
|
|
2734
|
+
"description": "Package URL (purl) — the preferred cross-BOM identity key when present."
|
|
2735
|
+
},
|
|
2736
|
+
"licenses": {
|
|
2737
|
+
"type": "array",
|
|
2738
|
+
"items": {
|
|
2739
|
+
"type": "string"
|
|
2740
|
+
},
|
|
2741
|
+
"description": "SPDX license identifiers/expressions for this package."
|
|
2742
|
+
}
|
|
2743
|
+
}
|
|
2744
|
+
}
|
|
2745
|
+
}
|
|
2746
|
+
},
|
|
2747
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0": {
|
|
2748
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2749
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.4.0",
|
|
2189
2750
|
"title": "HDF System Primitives",
|
|
2190
2751
|
"description": "Types for describing system architecture, authorization boundaries, and components.",
|
|
2191
2752
|
"$defs": {
|
|
@@ -2236,7 +2797,7 @@
|
|
|
2236
2797
|
"description": "Rationale for why this override is needed."
|
|
2237
2798
|
},
|
|
2238
2799
|
"approvedBy": {
|
|
2239
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2800
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
|
|
2240
2801
|
"description": "Identity of the person or system that approved this override."
|
|
2241
2802
|
}
|
|
2242
2803
|
},
|
|
@@ -2318,9 +2879,9 @@
|
|
|
2318
2879
|
}
|
|
2319
2880
|
}
|
|
2320
2881
|
},
|
|
2321
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
2882
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.4.0": {
|
|
2322
2883
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2323
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.
|
|
2884
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/statistics/v3.4.0",
|
|
2324
2885
|
"title": "HDF Statistics Primitives",
|
|
2325
2886
|
"description": "Statistics types for tracking assessment run metrics.",
|
|
2326
2887
|
"$defs": {
|
|
@@ -2389,9 +2950,9 @@
|
|
|
2389
2950
|
}
|
|
2390
2951
|
}
|
|
2391
2952
|
},
|
|
2392
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
2953
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0": {
|
|
2393
2954
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2394
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
2955
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.4.0",
|
|
2395
2956
|
"title": "HDF Extension Primitives",
|
|
2396
2957
|
"description": "Extension types for waivers, attestations, generators, and integrity.",
|
|
2397
2958
|
"$defs": {
|
|
@@ -2419,15 +2980,15 @@
|
|
|
2419
2980
|
],
|
|
2420
2981
|
"properties": {
|
|
2421
2982
|
"type": {
|
|
2422
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2983
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Override_Type",
|
|
2423
2984
|
"description": "The type of override applied to this requirement."
|
|
2424
2985
|
},
|
|
2425
2986
|
"status": {
|
|
2426
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2987
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Result_Status",
|
|
2427
2988
|
"description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
|
|
2428
2989
|
},
|
|
2429
2990
|
"impact": {
|
|
2430
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2991
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Impact_Override",
|
|
2431
2992
|
"description": "Override to the requirement's impact score. At least one of status or impact must be set."
|
|
2432
2993
|
},
|
|
2433
2994
|
"reason": {
|
|
@@ -2435,7 +2996,7 @@
|
|
|
2435
2996
|
"description": "Explanation for why this override was applied."
|
|
2436
2997
|
},
|
|
2437
2998
|
"appliedBy": {
|
|
2438
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2999
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
|
|
2439
3000
|
"description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
|
|
2440
3001
|
},
|
|
2441
3002
|
"appliedAt": {
|
|
@@ -2449,27 +3010,27 @@
|
|
|
2449
3010
|
"description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
|
|
2450
3011
|
},
|
|
2451
3012
|
"signature": {
|
|
2452
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3013
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Signature",
|
|
2453
3014
|
"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."
|
|
2454
3015
|
},
|
|
2455
3016
|
"evidence": {
|
|
2456
3017
|
"type": "array",
|
|
2457
3018
|
"items": {
|
|
2458
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3019
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
|
|
2459
3020
|
},
|
|
2460
3021
|
"description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
|
|
2461
3022
|
},
|
|
2462
3023
|
"previousChecksum": {
|
|
2463
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3024
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
|
|
2464
3025
|
"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."
|
|
2465
3026
|
},
|
|
2466
3027
|
"cvss": {
|
|
2467
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
3028
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0#/$defs/Cvss",
|
|
2468
3029
|
"$comment": "When present alongside impact.value on a riskAdjustment override, impact.value should be approximately cvss.computedScore / 10.0. Soft consistency rule — validators may warn but should not error. The cvss block makes Environmental/Threat enrichment auditable.",
|
|
2469
3030
|
"description": "Structured CVSS scoring data backing this override. Captures the rubric (which Environmental/Threat metrics the consumer modified, the recomputed score) used to justify a riskAdjustment. For other override types this is optional context."
|
|
2470
3031
|
},
|
|
2471
3032
|
"justification": {
|
|
2472
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3033
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0#/$defs/Justification",
|
|
2473
3034
|
"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."
|
|
2474
3035
|
}
|
|
2475
3036
|
},
|
|
@@ -2576,7 +3137,7 @@
|
|
|
2576
3137
|
"description": "Detailed explanation of the plan, including what actions will be taken."
|
|
2577
3138
|
},
|
|
2578
3139
|
"appliedBy": {
|
|
2579
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3140
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
|
|
2580
3141
|
"description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
|
|
2581
3142
|
},
|
|
2582
3143
|
"appliedAt": {
|
|
@@ -2592,23 +3153,23 @@
|
|
|
2592
3153
|
"milestones": {
|
|
2593
3154
|
"type": "array",
|
|
2594
3155
|
"items": {
|
|
2595
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3156
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Milestone"
|
|
2596
3157
|
},
|
|
2597
3158
|
"description": "Optional array of milestones tracking progress toward completion."
|
|
2598
3159
|
},
|
|
2599
3160
|
"signature": {
|
|
2600
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3161
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Signature",
|
|
2601
3162
|
"description": "Optional digital signature for enhanced trust and non-repudiation."
|
|
2602
3163
|
},
|
|
2603
3164
|
"evidence": {
|
|
2604
3165
|
"type": "array",
|
|
2605
3166
|
"items": {
|
|
2606
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3167
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
|
|
2607
3168
|
},
|
|
2608
3169
|
"description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
|
|
2609
3170
|
},
|
|
2610
3171
|
"previousChecksum": {
|
|
2611
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3172
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
|
|
2612
3173
|
"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."
|
|
2613
3174
|
}
|
|
2614
3175
|
},
|
|
@@ -2759,7 +3320,7 @@
|
|
|
2759
3320
|
},
|
|
2760
3321
|
"properties": {
|
|
2761
3322
|
"algorithm": {
|
|
2762
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3323
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Hash_Algorithm",
|
|
2763
3324
|
"description": "The hash algorithm used for the checksum."
|
|
2764
3325
|
},
|
|
2765
3326
|
"checksum": {
|
|
@@ -2792,9 +3353,9 @@
|
|
|
2792
3353
|
}
|
|
2793
3354
|
}
|
|
2794
3355
|
},
|
|
2795
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3356
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0": {
|
|
2796
3357
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2797
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3358
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.4.0",
|
|
2798
3359
|
"title": "HDF Amendment Primitives",
|
|
2799
3360
|
"description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
|
|
2800
3361
|
"$defs": {
|
|
@@ -2915,7 +3476,7 @@
|
|
|
2915
3476
|
"description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
|
|
2916
3477
|
},
|
|
2917
3478
|
"status": {
|
|
2918
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
3479
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0#/$defs/Result_Status",
|
|
2919
3480
|
"description": "The new status this amendment sets. Optional when only impact is being overridden."
|
|
2920
3481
|
},
|
|
2921
3482
|
"impact": {
|
|
@@ -2927,7 +3488,7 @@
|
|
|
2927
3488
|
"description": "Justification for this amendment."
|
|
2928
3489
|
},
|
|
2929
3490
|
"appliedBy": {
|
|
2930
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3491
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
|
|
2931
3492
|
"description": "Identity of who applied this amendment."
|
|
2932
3493
|
},
|
|
2933
3494
|
"appliedAt": {
|
|
@@ -2943,20 +3504,20 @@
|
|
|
2943
3504
|
"evidence": {
|
|
2944
3505
|
"type": "array",
|
|
2945
3506
|
"items": {
|
|
2946
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3507
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Evidence"
|
|
2947
3508
|
},
|
|
2948
3509
|
"description": "Supporting evidence (screenshots, logs, URLs, documents)."
|
|
2949
3510
|
},
|
|
2950
3511
|
"signature": {
|
|
2951
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3512
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Signature",
|
|
2952
3513
|
"description": "Digital signature for non-repudiation."
|
|
2953
3514
|
},
|
|
2954
3515
|
"previousChecksum": {
|
|
2955
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3516
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Checksum",
|
|
2956
3517
|
"description": "Checksum of the prior amendment in the chain. Creates a tamper-evident linked list. Null for the first amendment."
|
|
2957
3518
|
},
|
|
2958
3519
|
"cvss": {
|
|
2959
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
3520
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0#/$defs/Cvss",
|
|
2960
3521
|
"$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.",
|
|
2961
3522
|
"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."
|
|
2962
3523
|
},
|
|
@@ -2967,7 +3528,7 @@
|
|
|
2967
3528
|
"milestones": {
|
|
2968
3529
|
"type": "array",
|
|
2969
3530
|
"items": {
|
|
2970
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3531
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Milestone"
|
|
2971
3532
|
},
|
|
2972
3533
|
"description": "Remediation milestones (primarily for POA&M type amendments)."
|
|
2973
3534
|
},
|
|
@@ -2984,7 +3545,7 @@
|
|
|
2984
3545
|
"affectedPackages": {
|
|
2985
3546
|
"type": "array",
|
|
2986
3547
|
"items": {
|
|
2987
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
3548
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0#/$defs/Affected_Package"
|
|
2988
3549
|
},
|
|
2989
3550
|
"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)."
|
|
2990
3551
|
}
|
|
@@ -3117,9 +3678,9 @@
|
|
|
3117
3678
|
}
|
|
3118
3679
|
}
|
|
3119
3680
|
},
|
|
3120
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
3681
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0": {
|
|
3121
3682
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3122
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
3683
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.4.0",
|
|
3123
3684
|
"title": "HDF Result Primitives",
|
|
3124
3685
|
"description": "Types for representing assessment results and statuses.",
|
|
3125
3686
|
"$defs": {
|
|
@@ -3250,9 +3811,9 @@
|
|
|
3250
3811
|
}
|
|
3251
3812
|
}
|
|
3252
3813
|
},
|
|
3253
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
3814
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0": {
|
|
3254
3815
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3255
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
3816
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.4.0",
|
|
3256
3817
|
"title": "HDF CVSS Primitives",
|
|
3257
3818
|
"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).",
|
|
3258
3819
|
"$defs": {
|
|
@@ -3454,9 +4015,9 @@
|
|
|
3454
4015
|
}
|
|
3455
4016
|
}
|
|
3456
4017
|
},
|
|
3457
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
4018
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0": {
|
|
3458
4019
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3459
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
4020
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.4.0",
|
|
3460
4021
|
"title": "HDF Affected Package Primitives",
|
|
3461
4022
|
"description": "Types for representing the software package(s) affected by a vulnerability finding.",
|
|
3462
4023
|
"$defs": {
|
|
@@ -3569,9 +4130,9 @@
|
|
|
3569
4130
|
}
|
|
3570
4131
|
}
|
|
3571
4132
|
},
|
|
3572
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
4133
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.4.0": {
|
|
3573
4134
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3574
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.
|
|
4135
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/runner/v3.4.0",
|
|
3575
4136
|
"title": "HDF Runner Primitive",
|
|
3576
4137
|
"description": "Information about the test execution environment where the security tool/scanner was executed.",
|
|
3577
4138
|
"$defs": {
|
|
@@ -3596,7 +4157,15 @@
|
|
|
3596
4157
|
},
|
|
3597
4158
|
"hostname": {
|
|
3598
4159
|
"type": "string",
|
|
3599
|
-
"description": "The hostname of the runner system. Example: 'ci-runner-01', 'jenkins-agent-03', 'k8s-node-worker-03'."
|
|
4160
|
+
"description": "The short hostname of the runner system. Example: 'ci-runner-01', 'jenkins-agent-03', 'k8s-node-worker-03'."
|
|
4161
|
+
},
|
|
4162
|
+
"fqdn": {
|
|
4163
|
+
"type": "string",
|
|
4164
|
+
"description": "The fully qualified domain name of the runner system, when known. Distinct from the short 'hostname'; kept separate for the same reason as on host components (an FQDN is not reliably decomposable). Example: 'ci-runner-01.build.example.com'."
|
|
4165
|
+
},
|
|
4166
|
+
"domain": {
|
|
4167
|
+
"type": "string",
|
|
4168
|
+
"description": "The directory domain the runner system belongs to (Active Directory / NetBIOS / LDAP), NOT the DNS suffix of the FQDN. Example: 'CORP'."
|
|
3600
4169
|
},
|
|
3601
4170
|
"containerImage": {
|
|
3602
4171
|
"type": "string",
|
|
@@ -3607,7 +4176,7 @@
|
|
|
3607
4176
|
"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."
|
|
3608
4177
|
},
|
|
3609
4178
|
"operator": {
|
|
3610
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
4179
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.4.0#/$defs/Identity",
|
|
3611
4180
|
"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."
|
|
3612
4181
|
}
|
|
3613
4182
|
},
|
|
@@ -3617,6 +4186,8 @@
|
|
|
3617
4186
|
"release": "20.04",
|
|
3618
4187
|
"architecture": "x86_64",
|
|
3619
4188
|
"hostname": "github-runner-prod-01",
|
|
4189
|
+
"fqdn": "github-runner-prod-01.build.example.com",
|
|
4190
|
+
"domain": "CORP",
|
|
3620
4191
|
"containerImage": "ghcr.io/inspec/inspec:5.22.3",
|
|
3621
4192
|
"containerId": "security-scan-job-a1b2c3d4",
|
|
3622
4193
|
"operator": {
|
|
@@ -3654,9 +4225,9 @@
|
|
|
3654
4225
|
}
|
|
3655
4226
|
}
|
|
3656
4227
|
},
|
|
3657
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
4228
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.4.0": {
|
|
3658
4229
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3659
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.
|
|
4230
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/parameter/v3.4.0",
|
|
3660
4231
|
"title": "HDF Parameter Primitives",
|
|
3661
4232
|
"description": "Input/parameter type definitions for typed, traceable configuration values that bridge governance prose and scanner automation.",
|
|
3662
4233
|
"$defs": {
|
|
@@ -3787,9 +4358,9 @@
|
|
|
3787
4358
|
}
|
|
3788
4359
|
}
|
|
3789
4360
|
},
|
|
3790
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.
|
|
4361
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.4.0": {
|
|
3791
4362
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3792
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.
|
|
4363
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/epss/v3.4.0",
|
|
3793
4364
|
"title": "HDF EPSS Primitive",
|
|
3794
4365
|
"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.",
|
|
3795
4366
|
"$defs": {
|
|
@@ -3846,9 +4417,9 @@
|
|
|
3846
4417
|
}
|
|
3847
4418
|
}
|
|
3848
4419
|
},
|
|
3849
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.
|
|
4420
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.4.0": {
|
|
3850
4421
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3851
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.
|
|
4422
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/kev/v3.4.0",
|
|
3852
4423
|
"title": "HDF Kev Primitives",
|
|
3853
4424
|
"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.",
|
|
3854
4425
|
"$defs": {
|