@mitre/hdf-schema 3.6.0-rc.4 → 3.6.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 +2 -2
- package/dist/go/hdf.go +10 -0
- package/dist/index.js +28 -28
- package/dist/schemas/hdf-amendments.schema.json +50 -66
- package/dist/schemas/hdf-baseline.schema.json +55 -71
- package/dist/schemas/hdf-comparison.schema.json +151 -173
- package/dist/schemas/hdf-evidence-package.schema.json +55 -72
- package/dist/schemas/hdf-plan.schema.json +56 -72
- package/dist/schemas/hdf-requirement-change-event.schema.json +141 -166
- package/dist/schemas/hdf-results.schema.json +126 -147
- package/dist/schemas/hdf-system.schema.json +73 -93
- package/dist/ts/hdf.d.ts +12 -0
- package/dist/ts/hdf.ts +12 -0
- 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-system/v3.
|
|
3
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-system/v3.6.0",
|
|
4
4
|
"title": "HDF System",
|
|
5
5
|
"description": "Describes a system's authorization boundary, components, and interconnections. Maps to OSCAL SSP system-characteristics and FedRAMP system inventory.",
|
|
6
6
|
"type": "object",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"externalReferences": {
|
|
14
14
|
"type": "array",
|
|
15
15
|
"items": {
|
|
16
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
16
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/External_Reference"
|
|
17
17
|
},
|
|
18
18
|
"description": "Optional references to external artifacts describing this system's threat environment or context (CTI/STIX, BOMs, advisories, or any URI-addressable artifact). Inert context; see External_Reference."
|
|
19
19
|
},
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"description": "Stable UUID (RFC 4122) for this system. Enables cross-document correlation independent of file location. Optional in casual use, expected in production documents."
|
|
24
24
|
},
|
|
25
25
|
"owner": {
|
|
26
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
26
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
27
27
|
"description": "Team or individual responsible for this system's authorization and compliance. Maps to OSCAL responsible-party with role 'system-owner'."
|
|
28
28
|
},
|
|
29
29
|
"name": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"description": "Description of the system's purpose and mission."
|
|
45
45
|
},
|
|
46
46
|
"authorizationStatus": {
|
|
47
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
47
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0#/$defs/Authorization_Status",
|
|
48
48
|
"description": "Current Authorization to Operate (ATO) status."
|
|
49
49
|
},
|
|
50
50
|
"authorizationDate": {
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"description": "Date the current authorization status was granted. ISO 8601 format."
|
|
54
54
|
},
|
|
55
55
|
"categorizationLevel": {
|
|
56
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
56
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0#/$defs/Categorization_Level",
|
|
57
57
|
"description": "FIPS 199 security categorization (impact level)."
|
|
58
58
|
},
|
|
59
59
|
"boundaryDescription": {
|
|
@@ -64,28 +64,28 @@
|
|
|
64
64
|
"type": "array",
|
|
65
65
|
"minItems": 1,
|
|
66
66
|
"items": {
|
|
67
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
67
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.6.0#/$defs/Component"
|
|
68
68
|
},
|
|
69
69
|
"description": "System components within the authorization boundary. Uses the full polymorphic Component type with stable identity (componentId), external references, and generalized BOM attachment (boms[])."
|
|
70
70
|
},
|
|
71
71
|
"controlDesignations": {
|
|
72
72
|
"type": "array",
|
|
73
73
|
"items": {
|
|
74
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
74
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0#/$defs/Control_Designation"
|
|
75
75
|
},
|
|
76
76
|
"description": "Declares which controls are common, hybrid, or system-specific, and which component provides them. Maps to NIST SP 800-53 control designations and OSCAL leveraged-authorizations."
|
|
77
77
|
},
|
|
78
78
|
"dataFlows": {
|
|
79
79
|
"type": "array",
|
|
80
80
|
"items": {
|
|
81
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.
|
|
81
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.6.0#/$defs/Data_Flow"
|
|
82
82
|
},
|
|
83
83
|
"description": "Inter-component data flows describing how components communicate. Supports local, cross-system, and external flows. Replaces the interconnections[] field."
|
|
84
84
|
},
|
|
85
85
|
"boms": {
|
|
86
86
|
"type": "array",
|
|
87
87
|
"items": {
|
|
88
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
88
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.6.0#/$defs/Bom"
|
|
89
89
|
},
|
|
90
90
|
"description": "System-scoped Bills of Materials whose subject is the authorization boundary rather than a single component (e.g. a SaaSBOM of services, a KBOM of cluster inventory, an OBOM). Component-scoped BOMs (SBOM, ai-model) attach on the component instead. See primitives/bom.schema.json."
|
|
91
91
|
},
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"description": "Optional key-value labels for grouping and querying systems."
|
|
98
98
|
},
|
|
99
99
|
"integrity": {
|
|
100
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
100
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0#/$defs/Integrity",
|
|
101
101
|
"description": "Cryptographic integrity information for verifying this system document has not been tampered with."
|
|
102
102
|
},
|
|
103
103
|
"version": {
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
"description": "Version of this system document."
|
|
106
106
|
},
|
|
107
107
|
"generator": {
|
|
108
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
108
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0#/$defs/Generator",
|
|
109
109
|
"description": "Information about the tool that generated this system document."
|
|
110
110
|
}
|
|
111
111
|
},
|
|
@@ -158,9 +158,9 @@
|
|
|
158
158
|
}
|
|
159
159
|
],
|
|
160
160
|
"$defs": {
|
|
161
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
161
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0": {
|
|
162
162
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
163
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
163
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0",
|
|
164
164
|
"title": "HDF Common Primitives",
|
|
165
165
|
"description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
|
|
166
166
|
"$defs": {
|
|
@@ -240,22 +240,20 @@
|
|
|
240
240
|
}
|
|
241
241
|
},
|
|
242
242
|
"unevaluatedProperties": false,
|
|
243
|
+
"$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.",
|
|
243
244
|
"examples": [
|
|
244
245
|
{
|
|
245
|
-
"$comment": "By-identity: cite a CVE by its id in the 'cve' system without a URL — equivalently urn:cve:CVE-2021-44228.",
|
|
246
246
|
"sourceName": "cve",
|
|
247
247
|
"externalId": "CVE-2021-44228",
|
|
248
248
|
"rel": "definition"
|
|
249
249
|
},
|
|
250
250
|
{
|
|
251
|
-
"$comment": "By-identity AND by-locator together (anyOf, not oneOf) — an ATT&CK technique cited by id with its canonical URL.",
|
|
252
251
|
"sourceName": "mitre-att&ck",
|
|
253
252
|
"externalId": "T1059",
|
|
254
253
|
"href": "https://attack.mitre.org/techniques/T1059/",
|
|
255
254
|
"rel": "canonical"
|
|
256
255
|
},
|
|
257
256
|
{
|
|
258
|
-
"$comment": "By-locator to a retrievable STIX bundle, with integrity hash, media type, and attribution.",
|
|
259
257
|
"sourceName": "stix",
|
|
260
258
|
"href": "https://cti.example.org/bundles/log4shell.json",
|
|
261
259
|
"rel": "investigate",
|
|
@@ -271,7 +269,6 @@
|
|
|
271
269
|
"addedAt": "2026-07-26T00:00:00Z"
|
|
272
270
|
},
|
|
273
271
|
{
|
|
274
|
-
"$comment": "Enrichment envelope: a STIX threat-intel object embedded losslessly in `document` and classified via `kind`, cited by id and pointed at by href — the pointer and the embedded copy compose. The payload rides verbatim; HDF does not normalize STIX fields.",
|
|
275
272
|
"sourceName": "stix",
|
|
276
273
|
"externalId": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
|
|
277
274
|
"href": "https://cti.example.org/bundles/log4shell.json#vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
|
|
@@ -1090,9 +1087,9 @@
|
|
|
1090
1087
|
"description": "Whether the requirement is mandatory within its baseline.\n\nDistinct from severity (risk weight) and status (lifecycle state).\n\nMaps cleanly onto: FedRAMP rev5 OSCAL 'CORE' prop, FedRAMP 20x inline 'Optional:' markers, CMMC sublevel rows, and CIS Implementation Group memberships (IG1/IG2/IG3 may carry richer semantics; layer those onto props[]/tags{}).\n\nOptional: when omitted, consumers should treat the requirement as 'required' by convention."
|
|
1091
1088
|
}
|
|
1092
1089
|
},
|
|
1090
|
+
"$comment": "Examples, in order: 1) v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.6.0 (backward compatibility); 2) v3.2 example populating all three classification fields. controlType=technical because AC-3 is enforced via configuration, not policy text. verificationMethod=automated because a check exists. applicability=required because this is a CORE control in the source baseline; 3) v3.2 example for a manual-by-design requirement. FedRAMP 20x KSIs are statement-form: code is omitted (not null) and verificationMethod=manual-by-design distinguishes this from 'automation could exist but doesn't yet'. controlType=policy because this is an authored governance statement; 4) v3.2 example for a STIG rule lacking a <fix>. Differs from manual-by-design: automation should exist, just not yet. applicability=advisory used here because the source format flagged it as recommended-but-not-mandatory; CIS-style IG memberships and FedRAMP 'Optional:' markers map onto applicability=optional or advisory similarly.",
|
|
1093
1091
|
"examples": [
|
|
1094
1092
|
{
|
|
1095
|
-
"$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.5.0 (backward compatibility).",
|
|
1096
1093
|
"id": "SV-238196",
|
|
1097
1094
|
"title": "The Ubuntu operating system must enforce password complexity",
|
|
1098
1095
|
"impact": 0.5,
|
|
@@ -1122,7 +1119,6 @@
|
|
|
1122
1119
|
]
|
|
1123
1120
|
},
|
|
1124
1121
|
{
|
|
1125
|
-
"$comment": "v3.2 example populating all three classification fields. controlType=technical because AC-3 is enforced via configuration, not policy text. verificationMethod=automated because a check exists. applicability=required because this is a CORE control in the source baseline.",
|
|
1126
1122
|
"id": "AC-3",
|
|
1127
1123
|
"title": "Access Enforcement",
|
|
1128
1124
|
"impact": 0.7,
|
|
@@ -1144,7 +1140,6 @@
|
|
|
1144
1140
|
"applicability": "required"
|
|
1145
1141
|
},
|
|
1146
1142
|
{
|
|
1147
|
-
"$comment": "v3.2 example for a manual-by-design requirement. FedRAMP 20x KSIs are statement-form: code is omitted (not null) and verificationMethod=manual-by-design distinguishes this from 'automation could exist but doesn't yet'. controlType=policy because this is an authored governance statement.",
|
|
1148
1143
|
"id": "KSI-CNA-01",
|
|
1149
1144
|
"title": "Cyber Security Plan documents the system",
|
|
1150
1145
|
"impact": 0.5,
|
|
@@ -1164,7 +1159,6 @@
|
|
|
1164
1159
|
"applicability": "required"
|
|
1165
1160
|
},
|
|
1166
1161
|
{
|
|
1167
|
-
"$comment": "v3.2 example for a STIG rule lacking a <fix>. Differs from manual-by-design: automation should exist, just not yet. applicability=advisory used here because the source format flagged it as recommended-but-not-mandatory; CIS-style IG memberships and FedRAMP 'Optional:' markers map onto applicability=optional or advisory similarly.",
|
|
1168
1162
|
"id": "SV-999999",
|
|
1169
1163
|
"title": "Example STIG rule pending automation",
|
|
1170
1164
|
"impact": 0.3,
|
|
@@ -1229,9 +1223,9 @@
|
|
|
1229
1223
|
}
|
|
1230
1224
|
}
|
|
1231
1225
|
},
|
|
1232
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
1226
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0": {
|
|
1233
1227
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1234
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
1228
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0",
|
|
1235
1229
|
"title": "HDF System Primitives",
|
|
1236
1230
|
"description": "Types for describing system architecture, authorization boundaries, and components.",
|
|
1237
1231
|
"$defs": {
|
|
@@ -1282,7 +1276,7 @@
|
|
|
1282
1276
|
"description": "Rationale for why this override is needed."
|
|
1283
1277
|
},
|
|
1284
1278
|
"approvedBy": {
|
|
1285
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1279
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
1286
1280
|
"description": "Identity of the person or system that approved this override."
|
|
1287
1281
|
}
|
|
1288
1282
|
},
|
|
@@ -1364,9 +1358,9 @@
|
|
|
1364
1358
|
}
|
|
1365
1359
|
}
|
|
1366
1360
|
},
|
|
1367
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
1361
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.6.0": {
|
|
1368
1362
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1369
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.
|
|
1363
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/component/v3.6.0",
|
|
1370
1364
|
"title": "HDF Component Primitives",
|
|
1371
1365
|
"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).",
|
|
1372
1366
|
"$defs": {
|
|
@@ -1412,7 +1406,7 @@
|
|
|
1412
1406
|
"description": "Description of this component's role or purpose."
|
|
1413
1407
|
},
|
|
1414
1408
|
"owner": {
|
|
1415
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1409
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
1416
1410
|
"description": "Team or individual responsible for this component. Enables per-component ownership when different teams manage different parts of a system."
|
|
1417
1411
|
},
|
|
1418
1412
|
"externalIds": {
|
|
@@ -1432,14 +1426,14 @@
|
|
|
1432
1426
|
"boms": {
|
|
1433
1427
|
"type": "array",
|
|
1434
1428
|
"items": {
|
|
1435
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
1429
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.6.0#/$defs/Bom"
|
|
1436
1430
|
},
|
|
1437
1431
|
"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."
|
|
1438
1432
|
},
|
|
1439
1433
|
"integrity": {
|
|
1440
1434
|
"type": "array",
|
|
1441
1435
|
"items": {
|
|
1442
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1436
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum"
|
|
1443
1437
|
},
|
|
1444
1438
|
"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."
|
|
1445
1439
|
},
|
|
@@ -1453,12 +1447,12 @@
|
|
|
1453
1447
|
"inputOverrides": {
|
|
1454
1448
|
"type": "array",
|
|
1455
1449
|
"items": {
|
|
1456
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
1450
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0#/$defs/Input_Override"
|
|
1457
1451
|
},
|
|
1458
1452
|
"description": "System-specific overrides for baseline input values."
|
|
1459
1453
|
},
|
|
1460
1454
|
"targetSelector": {
|
|
1461
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
1455
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0#/$defs/Target_Selector",
|
|
1462
1456
|
"description": "Label selector to match targets belonging to this component during migration. Targets with matching labels are automatically included."
|
|
1463
1457
|
}
|
|
1464
1458
|
},
|
|
@@ -1589,9 +1583,9 @@
|
|
|
1589
1583
|
}
|
|
1590
1584
|
}
|
|
1591
1585
|
],
|
|
1586
|
+
"$comment": "Examples, in order: 1) Domain-joined host carrying all three identity fields separately: short hostname, FQDN, and the (distinct) directory domain. HOST_NAME and HOST_FQDN from a STIG checklist map here; note the AD domain differs from the FQDN's DNS suffix; 2) Standalone/workgroup host: has a short hostname but no directory domain — 'domain' is omitted rather than fabricated from the FQDN suffix.",
|
|
1592
1587
|
"examples": [
|
|
1593
1588
|
{
|
|
1594
|
-
"$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.",
|
|
1595
1589
|
"type": "host",
|
|
1596
1590
|
"name": "web-server-prod-01",
|
|
1597
1591
|
"componentId": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
|
|
@@ -1607,7 +1601,6 @@
|
|
|
1607
1601
|
}
|
|
1608
1602
|
},
|
|
1609
1603
|
{
|
|
1610
|
-
"$comment": "Standalone/workgroup host: has a short hostname but no directory domain — 'domain' is omitted rather than fabricated from the FQDN suffix.",
|
|
1611
1604
|
"type": "host",
|
|
1612
1605
|
"name": "kiosk-lab-07",
|
|
1613
1606
|
"hostname": "kiosk-lab-07",
|
|
@@ -1742,7 +1735,7 @@
|
|
|
1742
1735
|
"const": "cloudAccount"
|
|
1743
1736
|
},
|
|
1744
1737
|
"provider": {
|
|
1745
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1738
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Cloud_Provider",
|
|
1746
1739
|
"description": "Cloud provider."
|
|
1747
1740
|
},
|
|
1748
1741
|
"accountId": {
|
|
@@ -1781,7 +1774,7 @@
|
|
|
1781
1774
|
"const": "cloudResource"
|
|
1782
1775
|
},
|
|
1783
1776
|
"provider": {
|
|
1784
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1777
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Cloud_Provider",
|
|
1785
1778
|
"description": "Cloud provider."
|
|
1786
1779
|
},
|
|
1787
1780
|
"resourceType": {
|
|
@@ -2080,9 +2073,9 @@
|
|
|
2080
2073
|
}
|
|
2081
2074
|
}
|
|
2082
2075
|
},
|
|
2083
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
2076
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.6.0": {
|
|
2084
2077
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2085
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.
|
|
2078
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/bom/v3.6.0",
|
|
2086
2079
|
"title": "HDF BOM Primitives",
|
|
2087
2080
|
"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.",
|
|
2088
2081
|
"$defs": {
|
|
@@ -2138,7 +2131,7 @@
|
|
|
2138
2131
|
"hashes": {
|
|
2139
2132
|
"type": "array",
|
|
2140
2133
|
"items": {
|
|
2141
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2134
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum"
|
|
2142
2135
|
},
|
|
2143
2136
|
"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."
|
|
2144
2137
|
},
|
|
@@ -2255,9 +2248,9 @@
|
|
|
2255
2248
|
]
|
|
2256
2249
|
}
|
|
2257
2250
|
],
|
|
2251
|
+
"$comment": "Examples, in order: 1) Passthrough SBOM by external reference — the universal escape hatch, available to every bomType; 2) Passthrough for a reserved-but-not-yet-normalized type (cbom) — carried opaquely until a normalized extension ships; 3) Normalized ai-model BOM: CISA/G7-aligned fields live in the model extension, never at the component root or shared base; 4) Normalized dataset BOM with lineage — a filtered derivative of a base dataset, referenced by an ai-model via datasetRefs.",
|
|
2258
2252
|
"examples": [
|
|
2259
2253
|
{
|
|
2260
|
-
"$comment": "Passthrough SBOM by external reference — the universal escape hatch, available to every bomType.",
|
|
2261
2254
|
"bomType": "sbom",
|
|
2262
2255
|
"format": "cyclonedx",
|
|
2263
2256
|
"ref": "https://artifacts.agency.gov/sbom/webtier.cdx.json",
|
|
@@ -2269,7 +2262,6 @@
|
|
|
2269
2262
|
]
|
|
2270
2263
|
},
|
|
2271
2264
|
{
|
|
2272
|
-
"$comment": "Passthrough for a reserved-but-not-yet-normalized type (cbom) — carried opaquely until a normalized extension ships.",
|
|
2273
2265
|
"bomType": "cbom",
|
|
2274
2266
|
"format": "cyclonedx",
|
|
2275
2267
|
"document": {
|
|
@@ -2278,7 +2270,6 @@
|
|
|
2278
2270
|
}
|
|
2279
2271
|
},
|
|
2280
2272
|
{
|
|
2281
|
-
"$comment": "Normalized ai-model BOM: CISA/G7-aligned fields live in the model extension, never at the component root or shared base.",
|
|
2282
2273
|
"bomType": "ai-model",
|
|
2283
2274
|
"format": "cyclonedx-ml",
|
|
2284
2275
|
"model": {
|
|
@@ -2318,7 +2309,6 @@
|
|
|
2318
2309
|
}
|
|
2319
2310
|
},
|
|
2320
2311
|
{
|
|
2321
|
-
"$comment": "Normalized dataset BOM with lineage — a filtered derivative of a base dataset, referenced by an ai-model via datasetRefs.",
|
|
2322
2312
|
"bomType": "dataset",
|
|
2323
2313
|
"format": "croissant",
|
|
2324
2314
|
"dataset": {
|
|
@@ -2553,9 +2543,9 @@
|
|
|
2553
2543
|
}
|
|
2554
2544
|
}
|
|
2555
2545
|
},
|
|
2556
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.
|
|
2546
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.6.0": {
|
|
2557
2547
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2558
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.
|
|
2548
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/data-flow/v3.6.0",
|
|
2559
2549
|
"title": "HDF Data Flow Primitives",
|
|
2560
2550
|
"description": "Types for describing data flows between components within a system and across system boundaries. Data flows model network connections, API calls, database queries, and other inter-component communication.",
|
|
2561
2551
|
"$defs": {
|
|
@@ -2712,9 +2702,9 @@
|
|
|
2712
2702
|
}
|
|
2713
2703
|
}
|
|
2714
2704
|
},
|
|
2715
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
2705
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0": {
|
|
2716
2706
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2717
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
2707
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0",
|
|
2718
2708
|
"title": "HDF Extension Primitives",
|
|
2719
2709
|
"description": "Extension types for waivers, attestations, generators, and integrity.",
|
|
2720
2710
|
"$defs": {
|
|
@@ -2744,20 +2734,20 @@
|
|
|
2744
2734
|
"externalReferences": {
|
|
2745
2735
|
"type": "array",
|
|
2746
2736
|
"items": {
|
|
2747
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2737
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/External_Reference"
|
|
2748
2738
|
},
|
|
2749
2739
|
"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."
|
|
2750
2740
|
},
|
|
2751
2741
|
"type": {
|
|
2752
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2742
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0#/$defs/Override_Type",
|
|
2753
2743
|
"description": "The type of override applied to this requirement."
|
|
2754
2744
|
},
|
|
2755
2745
|
"status": {
|
|
2756
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2746
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0#/$defs/Result_Status",
|
|
2757
2747
|
"description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
|
|
2758
2748
|
},
|
|
2759
2749
|
"impact": {
|
|
2760
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2750
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0#/$defs/Impact_Override",
|
|
2761
2751
|
"description": "Override to the requirement's impact score. At least one of status or impact must be set."
|
|
2762
2752
|
},
|
|
2763
2753
|
"reason": {
|
|
@@ -2765,7 +2755,7 @@
|
|
|
2765
2755
|
"description": "Explanation for why this override was applied."
|
|
2766
2756
|
},
|
|
2767
2757
|
"appliedBy": {
|
|
2768
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2758
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
2769
2759
|
"description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
|
|
2770
2760
|
},
|
|
2771
2761
|
"appliedAt": {
|
|
@@ -2779,30 +2769,31 @@
|
|
|
2779
2769
|
"description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
|
|
2780
2770
|
},
|
|
2781
2771
|
"signature": {
|
|
2782
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2772
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
|
|
2783
2773
|
"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."
|
|
2784
2774
|
},
|
|
2785
2775
|
"evidence": {
|
|
2786
2776
|
"type": "array",
|
|
2787
2777
|
"items": {
|
|
2788
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2778
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Evidence"
|
|
2789
2779
|
},
|
|
2790
2780
|
"description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
|
|
2791
2781
|
},
|
|
2792
2782
|
"previousChecksum": {
|
|
2793
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2783
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
|
|
2794
2784
|
"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."
|
|
2795
2785
|
},
|
|
2796
2786
|
"cvss": {
|
|
2797
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2787
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0#/$defs/Cvss",
|
|
2798
2788
|
"$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.",
|
|
2799
2789
|
"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."
|
|
2800
2790
|
},
|
|
2801
2791
|
"justification": {
|
|
2802
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
2792
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0#/$defs/Justification",
|
|
2803
2793
|
"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."
|
|
2804
2794
|
}
|
|
2805
2795
|
},
|
|
2796
|
+
"$comment": "Example 3: Inline riskAdjustment carrying the STIX source that motivated it via externalReferences (the enrichment envelope, with the raw sighting embedded losslessly in document). This is the shape the enrich pass writes onto Evaluated_Requirement.overrides[] for the E:A recompute.",
|
|
2806
2797
|
"examples": [
|
|
2807
2798
|
{
|
|
2808
2799
|
"type": "waiver",
|
|
@@ -2829,7 +2820,6 @@
|
|
|
2829
2820
|
"expiresAt": "2026-10-14T00:00:00Z"
|
|
2830
2821
|
},
|
|
2831
2822
|
{
|
|
2832
|
-
"$comment": "Inline riskAdjustment carrying the STIX source that motivated it via externalReferences (the enrichment envelope, with the raw sighting embedded losslessly in document). This is the shape the enrich pass writes onto Evaluated_Requirement.overrides[] for the E:A recompute.",
|
|
2833
2823
|
"type": "riskAdjustment",
|
|
2834
2824
|
"impact": {
|
|
2835
2825
|
"value": 0.9
|
|
@@ -2935,7 +2925,7 @@
|
|
|
2935
2925
|
"description": "Detailed explanation of the plan, including what actions will be taken."
|
|
2936
2926
|
},
|
|
2937
2927
|
"appliedBy": {
|
|
2938
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2928
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
2939
2929
|
"description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
|
|
2940
2930
|
},
|
|
2941
2931
|
"appliedAt": {
|
|
@@ -2951,23 +2941,23 @@
|
|
|
2951
2941
|
"milestones": {
|
|
2952
2942
|
"type": "array",
|
|
2953
2943
|
"items": {
|
|
2954
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2944
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Milestone"
|
|
2955
2945
|
},
|
|
2956
2946
|
"description": "Optional array of milestones tracking progress toward completion."
|
|
2957
2947
|
},
|
|
2958
2948
|
"signature": {
|
|
2959
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2949
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
|
|
2960
2950
|
"description": "Optional digital signature for enhanced trust and non-repudiation."
|
|
2961
2951
|
},
|
|
2962
2952
|
"evidence": {
|
|
2963
2953
|
"type": "array",
|
|
2964
2954
|
"items": {
|
|
2965
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2955
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Evidence"
|
|
2966
2956
|
},
|
|
2967
2957
|
"description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
|
|
2968
2958
|
},
|
|
2969
2959
|
"previousChecksum": {
|
|
2970
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2960
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
|
|
2971
2961
|
"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."
|
|
2972
2962
|
}
|
|
2973
2963
|
},
|
|
@@ -3120,7 +3110,7 @@
|
|
|
3120
3110
|
},
|
|
3121
3111
|
"properties": {
|
|
3122
3112
|
"algorithm": {
|
|
3123
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3113
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Hash_Algorithm",
|
|
3124
3114
|
"description": "The hash algorithm used for the checksum."
|
|
3125
3115
|
},
|
|
3126
3116
|
"checksum": {
|
|
@@ -3153,9 +3143,9 @@
|
|
|
3153
3143
|
}
|
|
3154
3144
|
}
|
|
3155
3145
|
},
|
|
3156
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3146
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0": {
|
|
3157
3147
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3158
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
3148
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0",
|
|
3159
3149
|
"title": "HDF Amendment Primitives",
|
|
3160
3150
|
"description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
|
|
3161
3151
|
"$defs": {
|
|
@@ -3266,7 +3256,7 @@
|
|
|
3266
3256
|
"externalReferences": {
|
|
3267
3257
|
"type": "array",
|
|
3268
3258
|
"items": {
|
|
3269
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3259
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/External_Reference"
|
|
3270
3260
|
},
|
|
3271
3261
|
"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."
|
|
3272
3262
|
},
|
|
@@ -3283,7 +3273,7 @@
|
|
|
3283
3273
|
"description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
|
|
3284
3274
|
},
|
|
3285
3275
|
"status": {
|
|
3286
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
3276
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0#/$defs/Result_Status",
|
|
3287
3277
|
"description": "The new status this amendment sets. Optional when only impact is being overridden."
|
|
3288
3278
|
},
|
|
3289
3279
|
"impact": {
|
|
@@ -3295,7 +3285,7 @@
|
|
|
3295
3285
|
"description": "Justification for this amendment."
|
|
3296
3286
|
},
|
|
3297
3287
|
"appliedBy": {
|
|
3298
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3288
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
3299
3289
|
"description": "Identity of who applied this amendment."
|
|
3300
3290
|
},
|
|
3301
3291
|
"appliedAt": {
|
|
@@ -3311,20 +3301,20 @@
|
|
|
3311
3301
|
"evidence": {
|
|
3312
3302
|
"type": "array",
|
|
3313
3303
|
"items": {
|
|
3314
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3304
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Evidence"
|
|
3315
3305
|
},
|
|
3316
3306
|
"description": "Supporting evidence (screenshots, logs, URLs, documents)."
|
|
3317
3307
|
},
|
|
3318
3308
|
"signature": {
|
|
3319
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3309
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
|
|
3320
3310
|
"description": "Digital signature for non-repudiation."
|
|
3321
3311
|
},
|
|
3322
3312
|
"previousChecksum": {
|
|
3323
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3313
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
|
|
3324
3314
|
"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."
|
|
3325
3315
|
},
|
|
3326
3316
|
"cvss": {
|
|
3327
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
3317
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0#/$defs/Cvss",
|
|
3328
3318
|
"$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.",
|
|
3329
3319
|
"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."
|
|
3330
3320
|
},
|
|
@@ -3335,7 +3325,7 @@
|
|
|
3335
3325
|
"milestones": {
|
|
3336
3326
|
"type": "array",
|
|
3337
3327
|
"items": {
|
|
3338
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
3328
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Milestone"
|
|
3339
3329
|
},
|
|
3340
3330
|
"description": "Remediation milestones (primarily for POA&M type amendments)."
|
|
3341
3331
|
},
|
|
@@ -3352,11 +3342,12 @@
|
|
|
3352
3342
|
"affectedPackages": {
|
|
3353
3343
|
"type": "array",
|
|
3354
3344
|
"items": {
|
|
3355
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
3345
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.6.0#/$defs/Affected_Package"
|
|
3356
3346
|
},
|
|
3357
3347
|
"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)."
|
|
3358
3348
|
}
|
|
3359
3349
|
},
|
|
3350
|
+
"$comment": "Example 7: VEX-style import — falsePositive scoped to specific packages by purl. The affectedPackages array carries structured product identity instead of squeezing 'Products: …' into the reason free-text field.",
|
|
3360
3351
|
"examples": [
|
|
3361
3352
|
{
|
|
3362
3353
|
"type": "waiver",
|
|
@@ -3458,7 +3449,6 @@
|
|
|
3458
3449
|
"expiresAt": "2026-09-26T00:00:00Z"
|
|
3459
3450
|
},
|
|
3460
3451
|
{
|
|
3461
|
-
"$comment": "VEX-style import — falsePositive scoped to specific packages by purl. The affectedPackages array carries structured product identity instead of squeezing 'Products: …' into the reason free-text field.",
|
|
3462
3452
|
"type": "falsePositive",
|
|
3463
3453
|
"requirementId": "CVE-2026-12345",
|
|
3464
3454
|
"status": "notApplicable",
|
|
@@ -3485,9 +3475,9 @@
|
|
|
3485
3475
|
}
|
|
3486
3476
|
}
|
|
3487
3477
|
},
|
|
3488
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
3478
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0": {
|
|
3489
3479
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3490
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
3480
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0",
|
|
3491
3481
|
"title": "HDF Result Primitives",
|
|
3492
3482
|
"description": "Types for representing assessment results and statuses.",
|
|
3493
3483
|
"$defs": {
|
|
@@ -3618,9 +3608,9 @@
|
|
|
3618
3608
|
}
|
|
3619
3609
|
}
|
|
3620
3610
|
},
|
|
3621
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
3611
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0": {
|
|
3622
3612
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3623
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
3613
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0",
|
|
3624
3614
|
"title": "HDF CVSS Primitives",
|
|
3625
3615
|
"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).",
|
|
3626
3616
|
"$defs": {
|
|
@@ -3684,7 +3674,7 @@
|
|
|
3684
3674
|
]
|
|
3685
3675
|
}
|
|
3686
3676
|
],
|
|
3687
|
-
"$comment": "Only `version` is required; every metric/score field is optional because a single Cvss instance may represent vendor-supplied Base data (on a finding's cvss[]), consumer-supplied enrichment (on a riskAdjustment override — Environmental/Threat/Supplemental deltas with NO base, since base is the finding's scan-specific vendor data), or a fully-resolved effectiveCvss. The Base/Threat/Environmental/Supplemental groups do not partition cleanly into vendor-vs-consumer (Threat straddles: vendor temporal data and consumer exploit-maturity both live here), so a single permissive type is more honest than separate vendor/consumer types. The anyOf guardrail rejects a content-free object (e.g. {version} alone) by requiring at least one substantive metric or score. baseVector remains optional even when baseScore is present: some vendor tools (Twistlock/Prisma Cloud) emit a final score without the vector that derived it — that score is captured structurally rather than lost.",
|
|
3677
|
+
"$comment": "Only `version` is required; every metric/score field is optional because a single Cvss instance may represent vendor-supplied Base data (on a finding's cvss[]), consumer-supplied enrichment (on a riskAdjustment override — Environmental/Threat/Supplemental deltas with NO base, since base is the finding's scan-specific vendor data), or a fully-resolved effectiveCvss. The Base/Threat/Environmental/Supplemental groups do not partition cleanly into vendor-vs-consumer (Threat straddles: vendor temporal data and consumer exploit-maturity both live here), so a single permissive type is more honest than separate vendor/consumer types. The anyOf guardrail rejects a content-free object (e.g. {version} alone) by requiring at least one substantive metric or score. baseVector remains optional even when baseScore is present: some vendor tools (Twistlock/Prisma Cloud) emit a final score without the vector that derived it — that score is captured structurally rather than lost. Examples, in order: 1) Base-only: vendor-supplied CVSS 3.1 data exactly as a scanner (e.g., Nessus, Grype) would emit it. No consumer enrichment yet; 2) Base + Threat: consumer added Exploit Maturity ('E:U' = Unproven) and Remediation Level ('RL:O' = Official Fix) to a HTTP/2 'Rapid Reset' DoS finding. Threat score drops from base 7.5 to 5.5; 3) Base + Environmental: consumer asserts the affected system is high-criticality (CR:H, IR:H, AR:H) AND network-reachable in their environment (MAV:N). Environmental score reflects deployment risk for the xz-utils backdoor; 4) Full CVSS 4.0: vendor base + consumer threat (E:A = Attacked, exploits seen in the wild) + environmental (high CIA requirements) + supplemental context (S:P = present safety impact, AU:N = no autonomous spread, RE:M = moderate response effort) for the Fortinet FortiOS pre-auth RCE. computedScore reflects post-mitigation final risk; 5) CVSS 2.0 legacy: Heartbleed (CVE-2014-0160) as still reported by older scanner output and legacy NVD data. CVSS 2.0 vectors have no 'CVSS:2.0/' prefix.",
|
|
3688
3678
|
"properties": {
|
|
3689
3679
|
"version": {
|
|
3690
3680
|
"type": "string",
|
|
@@ -3764,7 +3754,6 @@
|
|
|
3764
3754
|
},
|
|
3765
3755
|
"examples": [
|
|
3766
3756
|
{
|
|
3767
|
-
"$comment": "Base-only: vendor-supplied CVSS 3.1 data exactly as a scanner (e.g., Nessus, Grype) would emit it. No consumer enrichment yet.",
|
|
3768
3757
|
"version": "3.1",
|
|
3769
3758
|
"source": "CVE-2024-12345",
|
|
3770
3759
|
"baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
|
|
@@ -3772,7 +3761,6 @@
|
|
|
3772
3761
|
"baseSeverity": "critical"
|
|
3773
3762
|
},
|
|
3774
3763
|
{
|
|
3775
|
-
"$comment": "Base + Threat: consumer added Exploit Maturity ('E:U' = Unproven) and Remediation Level ('RL:O' = Official Fix) to a HTTP/2 'Rapid Reset' DoS finding. Threat score drops from base 7.5 to 5.5.",
|
|
3776
3764
|
"version": "3.1",
|
|
3777
3765
|
"source": "CVE-2023-44487",
|
|
3778
3766
|
"baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
|
|
@@ -3782,7 +3770,6 @@
|
|
|
3782
3770
|
"threatScore": 5.5
|
|
3783
3771
|
},
|
|
3784
3772
|
{
|
|
3785
|
-
"$comment": "Base + Environmental: consumer asserts the affected system is high-criticality (CR:H, IR:H, AR:H) AND network-reachable in their environment (MAV:N). Environmental score reflects deployment risk for the xz-utils backdoor.",
|
|
3786
3773
|
"version": "3.1",
|
|
3787
3774
|
"source": "CVE-2024-3094",
|
|
3788
3775
|
"baseVector": "CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H",
|
|
@@ -3794,7 +3781,6 @@
|
|
|
3794
3781
|
"computedSeverity": "critical"
|
|
3795
3782
|
},
|
|
3796
3783
|
{
|
|
3797
|
-
"$comment": "Full CVSS 4.0: vendor base + consumer threat (E:A = Attacked, exploits seen in the wild) + environmental (high CIA requirements) + supplemental context (S:P = present safety impact, AU:N = no autonomous spread, RE:M = moderate response effort) for the Fortinet FortiOS pre-auth RCE. computedScore reflects post-mitigation final risk.",
|
|
3798
3784
|
"version": "4.0",
|
|
3799
3785
|
"source": "CVE-2024-21762",
|
|
3800
3786
|
"baseVector": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N",
|
|
@@ -3809,7 +3795,6 @@
|
|
|
3809
3795
|
"computedSeverity": "medium"
|
|
3810
3796
|
},
|
|
3811
3797
|
{
|
|
3812
|
-
"$comment": "CVSS 2.0 legacy: Heartbleed (CVE-2014-0160) as still reported by older scanner output and legacy NVD data. CVSS 2.0 vectors have no 'CVSS:2.0/' prefix.",
|
|
3813
3798
|
"version": "2.0",
|
|
3814
3799
|
"source": "CVE-2014-0160",
|
|
3815
3800
|
"baseVector": "AV:N/AC:L/Au:N/C:P/I:N/A:N",
|
|
@@ -3822,9 +3807,9 @@
|
|
|
3822
3807
|
}
|
|
3823
3808
|
}
|
|
3824
3809
|
},
|
|
3825
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
3810
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.6.0": {
|
|
3826
3811
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3827
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
3812
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.6.0",
|
|
3828
3813
|
"title": "HDF Affected Package Primitives",
|
|
3829
3814
|
"description": "Types for representing the software package(s) affected by a vulnerability finding.",
|
|
3830
3815
|
"$defs": {
|
|
@@ -3890,9 +3875,9 @@
|
|
|
3890
3875
|
"description": "Optional version string identifying the first release that contains the fix for the vulnerability. Use the same version syntax as `version`. Example: '1.1.1l' fixes 'openssl@1.1.1k'."
|
|
3891
3876
|
}
|
|
3892
3877
|
},
|
|
3878
|
+
"$comment": "Examples, in order: 1) RPM ecosystem with full CPE + PURL — typical Grype/Trivy output for a RHEL host scan; 2) NPM ecosystem with PURL only — the JavaScript world rarely emits CPEs; PURL is the canonical identifier; 3) Minimal valid AffectedPackage — only the three required fields. Use when the scanner reports a package by name+version without emitting CPE or PURL strings; 4) Maven ecosystem with full identifiers + fixedInVersion — log4j Log4Shell-style finding showing the patch path from vulnerable to fixed; 5) purl-only — VEX import path where the source format gives a purl and we choose not to decompose it. Valid because purl encodes name/version/ecosystem implicitly; 6) cpe-only — NIST-flavored scopes where the consumer carries a CPE 2.3 string and no purl. Valid because cpe encodes vendor/product/version.",
|
|
3893
3879
|
"examples": [
|
|
3894
3880
|
{
|
|
3895
|
-
"$comment": "RPM ecosystem with full CPE + PURL — typical Grype/Trivy output for a RHEL host scan.",
|
|
3896
3881
|
"name": "openssl",
|
|
3897
3882
|
"version": "1.1.1k-7.el8_4",
|
|
3898
3883
|
"ecosystem": "rpm",
|
|
@@ -3901,7 +3886,6 @@
|
|
|
3901
3886
|
"fixedInVersion": "1.1.1l"
|
|
3902
3887
|
},
|
|
3903
3888
|
{
|
|
3904
|
-
"$comment": "NPM ecosystem with PURL only — the JavaScript world rarely emits CPEs; PURL is the canonical identifier.",
|
|
3905
3889
|
"name": "lodash",
|
|
3906
3890
|
"version": "4.17.20",
|
|
3907
3891
|
"ecosystem": "npm",
|
|
@@ -3909,13 +3893,11 @@
|
|
|
3909
3893
|
"fixedInVersion": "4.17.21"
|
|
3910
3894
|
},
|
|
3911
3895
|
{
|
|
3912
|
-
"$comment": "Minimal valid AffectedPackage — only the three required fields. Use when the scanner reports a package by name+version without emitting CPE or PURL strings.",
|
|
3913
3896
|
"name": "requests",
|
|
3914
3897
|
"version": "2.28.1",
|
|
3915
3898
|
"ecosystem": "pypi"
|
|
3916
3899
|
},
|
|
3917
3900
|
{
|
|
3918
|
-
"$comment": "Maven ecosystem with full identifiers + fixedInVersion — log4j Log4Shell-style finding showing the patch path from vulnerable to fixed.",
|
|
3919
3901
|
"name": "org.apache.logging.log4j:log4j-core",
|
|
3920
3902
|
"version": "2.14.1",
|
|
3921
3903
|
"ecosystem": "maven",
|
|
@@ -3924,11 +3906,9 @@
|
|
|
3924
3906
|
"fixedInVersion": "2.17.1"
|
|
3925
3907
|
},
|
|
3926
3908
|
{
|
|
3927
|
-
"$comment": "purl-only — VEX import path where the source format gives a purl and we choose not to decompose it. Valid because purl encodes name/version/ecosystem implicitly.",
|
|
3928
3909
|
"purl": "pkg:npm/lodash@4.17.20"
|
|
3929
3910
|
},
|
|
3930
3911
|
{
|
|
3931
|
-
"$comment": "cpe-only — NIST-flavored scopes where the consumer carries a CPE 2.3 string and no purl. Valid because cpe encodes vendor/product/version.",
|
|
3932
3912
|
"cpe": "cpe:2.3:a:openssl:openssl:1.1.1k:*:*:*:*:*:*:*"
|
|
3933
3913
|
}
|
|
3934
3914
|
],
|