@mitre/hdf-schema 3.6.0-rc.5 → 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-plan/v3.
|
|
3
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-plan/v3.6.0",
|
|
4
4
|
"title": "HDF Plan",
|
|
5
5
|
"description": "Defines an assessment plan — what baselines to run against which targets, with resolved inputs and scheduling. Maps to OSCAL Assessment Plan.",
|
|
6
6
|
"type": "object",
|
|
@@ -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 relevant to this assessment plan (CTI/STIX, advisories, methodology docs, or any URI-addressable artifact). Inert context; see External_Reference."
|
|
19
19
|
},
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"description": "Human-readable plan name. Example: 'Portal Monthly Assessment'."
|
|
28
28
|
},
|
|
29
29
|
"type": {
|
|
30
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.
|
|
30
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.6.0#/$defs/Plan_Type",
|
|
31
31
|
"description": "The type of assessment plan."
|
|
32
32
|
},
|
|
33
33
|
"description": {
|
|
@@ -43,12 +43,12 @@
|
|
|
43
43
|
"type": "array",
|
|
44
44
|
"minItems": 1,
|
|
45
45
|
"items": {
|
|
46
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.
|
|
46
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.6.0#/$defs/Assessment"
|
|
47
47
|
},
|
|
48
48
|
"description": "The assessments to perform. Each assessment pairs a baseline with targets and resolved inputs."
|
|
49
49
|
},
|
|
50
50
|
"schedule": {
|
|
51
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.
|
|
51
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.6.0#/$defs/Schedule",
|
|
52
52
|
"description": "Optional scheduling configuration for recurring assessments."
|
|
53
53
|
},
|
|
54
54
|
"labels": {
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"description": "Optional key-value labels for grouping and querying plans."
|
|
60
60
|
},
|
|
61
61
|
"integrity": {
|
|
62
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
62
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0#/$defs/Integrity",
|
|
63
63
|
"description": "Cryptographic integrity information for verifying this plan document has not been tampered with."
|
|
64
64
|
},
|
|
65
65
|
"version": {
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"description": "Version of this plan document."
|
|
68
68
|
},
|
|
69
69
|
"generator": {
|
|
70
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
70
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0#/$defs/Generator",
|
|
71
71
|
"description": "Information about the tool that generated this plan."
|
|
72
72
|
}
|
|
73
73
|
},
|
|
@@ -101,9 +101,9 @@
|
|
|
101
101
|
}
|
|
102
102
|
],
|
|
103
103
|
"$defs": {
|
|
104
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
104
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0": {
|
|
105
105
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
106
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
106
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0",
|
|
107
107
|
"title": "HDF Common Primitives",
|
|
108
108
|
"description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
|
|
109
109
|
"$defs": {
|
|
@@ -183,22 +183,20 @@
|
|
|
183
183
|
}
|
|
184
184
|
},
|
|
185
185
|
"unevaluatedProperties": false,
|
|
186
|
+
"$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.",
|
|
186
187
|
"examples": [
|
|
187
188
|
{
|
|
188
|
-
"$comment": "By-identity: cite a CVE by its id in the 'cve' system without a URL — equivalently urn:cve:CVE-2021-44228.",
|
|
189
189
|
"sourceName": "cve",
|
|
190
190
|
"externalId": "CVE-2021-44228",
|
|
191
191
|
"rel": "definition"
|
|
192
192
|
},
|
|
193
193
|
{
|
|
194
|
-
"$comment": "By-identity AND by-locator together (anyOf, not oneOf) — an ATT&CK technique cited by id with its canonical URL.",
|
|
195
194
|
"sourceName": "mitre-att&ck",
|
|
196
195
|
"externalId": "T1059",
|
|
197
196
|
"href": "https://attack.mitre.org/techniques/T1059/",
|
|
198
197
|
"rel": "canonical"
|
|
199
198
|
},
|
|
200
199
|
{
|
|
201
|
-
"$comment": "By-locator to a retrievable STIX bundle, with integrity hash, media type, and attribution.",
|
|
202
200
|
"sourceName": "stix",
|
|
203
201
|
"href": "https://cti.example.org/bundles/log4shell.json",
|
|
204
202
|
"rel": "investigate",
|
|
@@ -214,7 +212,6 @@
|
|
|
214
212
|
"addedAt": "2026-07-26T00:00:00Z"
|
|
215
213
|
},
|
|
216
214
|
{
|
|
217
|
-
"$comment": "Enrichment envelope: a STIX threat-intel object embedded losslessly in `document` and classified via `kind`, cited by id and pointed at by href — the pointer and the embedded copy compose. The payload rides verbatim; HDF does not normalize STIX fields.",
|
|
218
215
|
"sourceName": "stix",
|
|
219
216
|
"externalId": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
|
|
220
217
|
"href": "https://cti.example.org/bundles/log4shell.json#vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
|
|
@@ -1033,9 +1030,9 @@
|
|
|
1033
1030
|
"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."
|
|
1034
1031
|
}
|
|
1035
1032
|
},
|
|
1033
|
+
"$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.",
|
|
1036
1034
|
"examples": [
|
|
1037
1035
|
{
|
|
1038
|
-
"$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.5.0 (backward compatibility).",
|
|
1039
1036
|
"id": "SV-238196",
|
|
1040
1037
|
"title": "The Ubuntu operating system must enforce password complexity",
|
|
1041
1038
|
"impact": 0.5,
|
|
@@ -1065,7 +1062,6 @@
|
|
|
1065
1062
|
]
|
|
1066
1063
|
},
|
|
1067
1064
|
{
|
|
1068
|
-
"$comment": "v3.2 example populating all three classification fields. controlType=technical because AC-3 is enforced via configuration, not policy text. verificationMethod=automated because a check exists. applicability=required because this is a CORE control in the source baseline.",
|
|
1069
1065
|
"id": "AC-3",
|
|
1070
1066
|
"title": "Access Enforcement",
|
|
1071
1067
|
"impact": 0.7,
|
|
@@ -1087,7 +1083,6 @@
|
|
|
1087
1083
|
"applicability": "required"
|
|
1088
1084
|
},
|
|
1089
1085
|
{
|
|
1090
|
-
"$comment": "v3.2 example for a manual-by-design requirement. FedRAMP 20x KSIs are statement-form: code is omitted (not null) and verificationMethod=manual-by-design distinguishes this from 'automation could exist but doesn't yet'. controlType=policy because this is an authored governance statement.",
|
|
1091
1086
|
"id": "KSI-CNA-01",
|
|
1092
1087
|
"title": "Cyber Security Plan documents the system",
|
|
1093
1088
|
"impact": 0.5,
|
|
@@ -1107,7 +1102,6 @@
|
|
|
1107
1102
|
"applicability": "required"
|
|
1108
1103
|
},
|
|
1109
1104
|
{
|
|
1110
|
-
"$comment": "v3.2 example for a STIG rule lacking a <fix>. Differs from manual-by-design: automation should exist, just not yet. applicability=advisory used here because the source format flagged it as recommended-but-not-mandatory; CIS-style IG memberships and FedRAMP 'Optional:' markers map onto applicability=optional or advisory similarly.",
|
|
1111
1105
|
"id": "SV-999999",
|
|
1112
1106
|
"title": "Example STIG rule pending automation",
|
|
1113
1107
|
"impact": 0.3,
|
|
@@ -1172,9 +1166,9 @@
|
|
|
1172
1166
|
}
|
|
1173
1167
|
}
|
|
1174
1168
|
},
|
|
1175
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.
|
|
1169
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.6.0": {
|
|
1176
1170
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1177
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.
|
|
1171
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/plan/v3.6.0",
|
|
1178
1172
|
"title": "HDF Plan Primitives",
|
|
1179
1173
|
"description": "Types for defining assessment plans — what to scan, how to configure it, and when to run.",
|
|
1180
1174
|
"$defs": {
|
|
@@ -1222,7 +1216,7 @@
|
|
|
1222
1216
|
"description": "componentId of the system component this assessment targets. Use for direct component binding. Alternative to targetSelector."
|
|
1223
1217
|
},
|
|
1224
1218
|
"targetSelector": {
|
|
1225
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
1219
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0#/$defs/Target_Selector",
|
|
1226
1220
|
"description": "Label selector to match targets for this assessment. Overrides the system component's targetSelector if provided."
|
|
1227
1221
|
},
|
|
1228
1222
|
"inputs": {
|
|
@@ -1304,9 +1298,9 @@
|
|
|
1304
1298
|
}
|
|
1305
1299
|
}
|
|
1306
1300
|
},
|
|
1307
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
1301
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0": {
|
|
1308
1302
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1309
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.
|
|
1303
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/system/v3.6.0",
|
|
1310
1304
|
"title": "HDF System Primitives",
|
|
1311
1305
|
"description": "Types for describing system architecture, authorization boundaries, and components.",
|
|
1312
1306
|
"$defs": {
|
|
@@ -1357,7 +1351,7 @@
|
|
|
1357
1351
|
"description": "Rationale for why this override is needed."
|
|
1358
1352
|
},
|
|
1359
1353
|
"approvedBy": {
|
|
1360
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1354
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
1361
1355
|
"description": "Identity of the person or system that approved this override."
|
|
1362
1356
|
}
|
|
1363
1357
|
},
|
|
@@ -1439,9 +1433,9 @@
|
|
|
1439
1433
|
}
|
|
1440
1434
|
}
|
|
1441
1435
|
},
|
|
1442
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
1436
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0": {
|
|
1443
1437
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1444
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
1438
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.6.0",
|
|
1445
1439
|
"title": "HDF Extension Primitives",
|
|
1446
1440
|
"description": "Extension types for waivers, attestations, generators, and integrity.",
|
|
1447
1441
|
"$defs": {
|
|
@@ -1471,20 +1465,20 @@
|
|
|
1471
1465
|
"externalReferences": {
|
|
1472
1466
|
"type": "array",
|
|
1473
1467
|
"items": {
|
|
1474
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1468
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/External_Reference"
|
|
1475
1469
|
},
|
|
1476
1470
|
"description": "Optional references to the external artifacts behind this override (e.g. the STIX bundle/object or CTI feed motivating an E:A riskAdjustment). Inert context distinct from `evidence`; see External_Reference. Symmetric with Standalone_Override.externalReferences for the inline (results-embedded) override carrier."
|
|
1477
1471
|
},
|
|
1478
1472
|
"type": {
|
|
1479
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1473
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0#/$defs/Override_Type",
|
|
1480
1474
|
"description": "The type of override applied to this requirement."
|
|
1481
1475
|
},
|
|
1482
1476
|
"status": {
|
|
1483
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
1477
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0#/$defs/Result_Status",
|
|
1484
1478
|
"description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
|
|
1485
1479
|
},
|
|
1486
1480
|
"impact": {
|
|
1487
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1481
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0#/$defs/Impact_Override",
|
|
1488
1482
|
"description": "Override to the requirement's impact score. At least one of status or impact must be set."
|
|
1489
1483
|
},
|
|
1490
1484
|
"reason": {
|
|
@@ -1492,7 +1486,7 @@
|
|
|
1492
1486
|
"description": "Explanation for why this override was applied."
|
|
1493
1487
|
},
|
|
1494
1488
|
"appliedBy": {
|
|
1495
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1489
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
1496
1490
|
"description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
|
|
1497
1491
|
},
|
|
1498
1492
|
"appliedAt": {
|
|
@@ -1506,30 +1500,31 @@
|
|
|
1506
1500
|
"description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
|
|
1507
1501
|
},
|
|
1508
1502
|
"signature": {
|
|
1509
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1503
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
|
|
1510
1504
|
"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."
|
|
1511
1505
|
},
|
|
1512
1506
|
"evidence": {
|
|
1513
1507
|
"type": "array",
|
|
1514
1508
|
"items": {
|
|
1515
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1509
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Evidence"
|
|
1516
1510
|
},
|
|
1517
1511
|
"description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
|
|
1518
1512
|
},
|
|
1519
1513
|
"previousChecksum": {
|
|
1520
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1514
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
|
|
1521
1515
|
"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."
|
|
1522
1516
|
},
|
|
1523
1517
|
"cvss": {
|
|
1524
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
1518
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0#/$defs/Cvss",
|
|
1525
1519
|
"$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.",
|
|
1526
1520
|
"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."
|
|
1527
1521
|
},
|
|
1528
1522
|
"justification": {
|
|
1529
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1523
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0#/$defs/Justification",
|
|
1530
1524
|
"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."
|
|
1531
1525
|
}
|
|
1532
1526
|
},
|
|
1527
|
+
"$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.",
|
|
1533
1528
|
"examples": [
|
|
1534
1529
|
{
|
|
1535
1530
|
"type": "waiver",
|
|
@@ -1556,7 +1551,6 @@
|
|
|
1556
1551
|
"expiresAt": "2026-10-14T00:00:00Z"
|
|
1557
1552
|
},
|
|
1558
1553
|
{
|
|
1559
|
-
"$comment": "Inline riskAdjustment carrying the STIX source that motivated it via externalReferences (the enrichment envelope, with the raw sighting embedded losslessly in document). This is the shape the enrich pass writes onto Evaluated_Requirement.overrides[] for the E:A recompute.",
|
|
1560
1554
|
"type": "riskAdjustment",
|
|
1561
1555
|
"impact": {
|
|
1562
1556
|
"value": 0.9
|
|
@@ -1662,7 +1656,7 @@
|
|
|
1662
1656
|
"description": "Detailed explanation of the plan, including what actions will be taken."
|
|
1663
1657
|
},
|
|
1664
1658
|
"appliedBy": {
|
|
1665
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1659
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
1666
1660
|
"description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
|
|
1667
1661
|
},
|
|
1668
1662
|
"appliedAt": {
|
|
@@ -1678,23 +1672,23 @@
|
|
|
1678
1672
|
"milestones": {
|
|
1679
1673
|
"type": "array",
|
|
1680
1674
|
"items": {
|
|
1681
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1675
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Milestone"
|
|
1682
1676
|
},
|
|
1683
1677
|
"description": "Optional array of milestones tracking progress toward completion."
|
|
1684
1678
|
},
|
|
1685
1679
|
"signature": {
|
|
1686
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1680
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
|
|
1687
1681
|
"description": "Optional digital signature for enhanced trust and non-repudiation."
|
|
1688
1682
|
},
|
|
1689
1683
|
"evidence": {
|
|
1690
1684
|
"type": "array",
|
|
1691
1685
|
"items": {
|
|
1692
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1686
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Evidence"
|
|
1693
1687
|
},
|
|
1694
1688
|
"description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
|
|
1695
1689
|
},
|
|
1696
1690
|
"previousChecksum": {
|
|
1697
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1691
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
|
|
1698
1692
|
"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."
|
|
1699
1693
|
}
|
|
1700
1694
|
},
|
|
@@ -1847,7 +1841,7 @@
|
|
|
1847
1841
|
},
|
|
1848
1842
|
"properties": {
|
|
1849
1843
|
"algorithm": {
|
|
1850
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1844
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Hash_Algorithm",
|
|
1851
1845
|
"description": "The hash algorithm used for the checksum."
|
|
1852
1846
|
},
|
|
1853
1847
|
"checksum": {
|
|
@@ -1880,9 +1874,9 @@
|
|
|
1880
1874
|
}
|
|
1881
1875
|
}
|
|
1882
1876
|
},
|
|
1883
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1877
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0": {
|
|
1884
1878
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1885
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1879
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.6.0",
|
|
1886
1880
|
"title": "HDF Amendment Primitives",
|
|
1887
1881
|
"description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
|
|
1888
1882
|
"$defs": {
|
|
@@ -1993,7 +1987,7 @@
|
|
|
1993
1987
|
"externalReferences": {
|
|
1994
1988
|
"type": "array",
|
|
1995
1989
|
"items": {
|
|
1996
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1990
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/External_Reference"
|
|
1997
1991
|
},
|
|
1998
1992
|
"description": "Optional references to the external artifacts behind this override (e.g. the STIX bundle/object, advisory, or CTI feed that motivated it). Inert context distinct from `evidence`; see External_Reference."
|
|
1999
1993
|
},
|
|
@@ -2010,7 +2004,7 @@
|
|
|
2010
2004
|
"description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
|
|
2011
2005
|
},
|
|
2012
2006
|
"status": {
|
|
2013
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2007
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0#/$defs/Result_Status",
|
|
2014
2008
|
"description": "The new status this amendment sets. Optional when only impact is being overridden."
|
|
2015
2009
|
},
|
|
2016
2010
|
"impact": {
|
|
@@ -2022,7 +2016,7 @@
|
|
|
2022
2016
|
"description": "Justification for this amendment."
|
|
2023
2017
|
},
|
|
2024
2018
|
"appliedBy": {
|
|
2025
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2019
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Identity",
|
|
2026
2020
|
"description": "Identity of who applied this amendment."
|
|
2027
2021
|
},
|
|
2028
2022
|
"appliedAt": {
|
|
@@ -2038,20 +2032,20 @@
|
|
|
2038
2032
|
"evidence": {
|
|
2039
2033
|
"type": "array",
|
|
2040
2034
|
"items": {
|
|
2041
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2035
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Evidence"
|
|
2042
2036
|
},
|
|
2043
2037
|
"description": "Supporting evidence (screenshots, logs, URLs, documents)."
|
|
2044
2038
|
},
|
|
2045
2039
|
"signature": {
|
|
2046
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2040
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Signature",
|
|
2047
2041
|
"description": "Digital signature for non-repudiation."
|
|
2048
2042
|
},
|
|
2049
2043
|
"previousChecksum": {
|
|
2050
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2044
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Checksum",
|
|
2051
2045
|
"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."
|
|
2052
2046
|
},
|
|
2053
2047
|
"cvss": {
|
|
2054
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2048
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0#/$defs/Cvss",
|
|
2055
2049
|
"$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.",
|
|
2056
2050
|
"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."
|
|
2057
2051
|
},
|
|
@@ -2062,7 +2056,7 @@
|
|
|
2062
2056
|
"milestones": {
|
|
2063
2057
|
"type": "array",
|
|
2064
2058
|
"items": {
|
|
2065
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2059
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.6.0#/$defs/Milestone"
|
|
2066
2060
|
},
|
|
2067
2061
|
"description": "Remediation milestones (primarily for POA&M type amendments)."
|
|
2068
2062
|
},
|
|
@@ -2079,11 +2073,12 @@
|
|
|
2079
2073
|
"affectedPackages": {
|
|
2080
2074
|
"type": "array",
|
|
2081
2075
|
"items": {
|
|
2082
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
2076
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.6.0#/$defs/Affected_Package"
|
|
2083
2077
|
},
|
|
2084
2078
|
"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)."
|
|
2085
2079
|
}
|
|
2086
2080
|
},
|
|
2081
|
+
"$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.",
|
|
2087
2082
|
"examples": [
|
|
2088
2083
|
{
|
|
2089
2084
|
"type": "waiver",
|
|
@@ -2185,7 +2180,6 @@
|
|
|
2185
2180
|
"expiresAt": "2026-09-26T00:00:00Z"
|
|
2186
2181
|
},
|
|
2187
2182
|
{
|
|
2188
|
-
"$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.",
|
|
2189
2183
|
"type": "falsePositive",
|
|
2190
2184
|
"requirementId": "CVE-2026-12345",
|
|
2191
2185
|
"status": "notApplicable",
|
|
@@ -2212,9 +2206,9 @@
|
|
|
2212
2206
|
}
|
|
2213
2207
|
}
|
|
2214
2208
|
},
|
|
2215
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2209
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0": {
|
|
2216
2210
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2217
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2211
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.6.0",
|
|
2218
2212
|
"title": "HDF Result Primitives",
|
|
2219
2213
|
"description": "Types for representing assessment results and statuses.",
|
|
2220
2214
|
"$defs": {
|
|
@@ -2345,9 +2339,9 @@
|
|
|
2345
2339
|
}
|
|
2346
2340
|
}
|
|
2347
2341
|
},
|
|
2348
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2342
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0": {
|
|
2349
2343
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2350
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2344
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.6.0",
|
|
2351
2345
|
"title": "HDF CVSS Primitives",
|
|
2352
2346
|
"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).",
|
|
2353
2347
|
"$defs": {
|
|
@@ -2411,7 +2405,7 @@
|
|
|
2411
2405
|
]
|
|
2412
2406
|
}
|
|
2413
2407
|
],
|
|
2414
|
-
"$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.",
|
|
2408
|
+
"$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.",
|
|
2415
2409
|
"properties": {
|
|
2416
2410
|
"version": {
|
|
2417
2411
|
"type": "string",
|
|
@@ -2491,7 +2485,6 @@
|
|
|
2491
2485
|
},
|
|
2492
2486
|
"examples": [
|
|
2493
2487
|
{
|
|
2494
|
-
"$comment": "Base-only: vendor-supplied CVSS 3.1 data exactly as a scanner (e.g., Nessus, Grype) would emit it. No consumer enrichment yet.",
|
|
2495
2488
|
"version": "3.1",
|
|
2496
2489
|
"source": "CVE-2024-12345",
|
|
2497
2490
|
"baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
|
|
@@ -2499,7 +2492,6 @@
|
|
|
2499
2492
|
"baseSeverity": "critical"
|
|
2500
2493
|
},
|
|
2501
2494
|
{
|
|
2502
|
-
"$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.",
|
|
2503
2495
|
"version": "3.1",
|
|
2504
2496
|
"source": "CVE-2023-44487",
|
|
2505
2497
|
"baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
|
|
@@ -2509,7 +2501,6 @@
|
|
|
2509
2501
|
"threatScore": 5.5
|
|
2510
2502
|
},
|
|
2511
2503
|
{
|
|
2512
|
-
"$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.",
|
|
2513
2504
|
"version": "3.1",
|
|
2514
2505
|
"source": "CVE-2024-3094",
|
|
2515
2506
|
"baseVector": "CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H",
|
|
@@ -2521,7 +2512,6 @@
|
|
|
2521
2512
|
"computedSeverity": "critical"
|
|
2522
2513
|
},
|
|
2523
2514
|
{
|
|
2524
|
-
"$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.",
|
|
2525
2515
|
"version": "4.0",
|
|
2526
2516
|
"source": "CVE-2024-21762",
|
|
2527
2517
|
"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",
|
|
@@ -2536,7 +2526,6 @@
|
|
|
2536
2526
|
"computedSeverity": "medium"
|
|
2537
2527
|
},
|
|
2538
2528
|
{
|
|
2539
|
-
"$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.",
|
|
2540
2529
|
"version": "2.0",
|
|
2541
2530
|
"source": "CVE-2014-0160",
|
|
2542
2531
|
"baseVector": "AV:N/AC:L/Au:N/C:P/I:N/A:N",
|
|
@@ -2549,9 +2538,9 @@
|
|
|
2549
2538
|
}
|
|
2550
2539
|
}
|
|
2551
2540
|
},
|
|
2552
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
2541
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.6.0": {
|
|
2553
2542
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2554
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
2543
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.6.0",
|
|
2555
2544
|
"title": "HDF Affected Package Primitives",
|
|
2556
2545
|
"description": "Types for representing the software package(s) affected by a vulnerability finding.",
|
|
2557
2546
|
"$defs": {
|
|
@@ -2617,9 +2606,9 @@
|
|
|
2617
2606
|
"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'."
|
|
2618
2607
|
}
|
|
2619
2608
|
},
|
|
2609
|
+
"$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.",
|
|
2620
2610
|
"examples": [
|
|
2621
2611
|
{
|
|
2622
|
-
"$comment": "RPM ecosystem with full CPE + PURL — typical Grype/Trivy output for a RHEL host scan.",
|
|
2623
2612
|
"name": "openssl",
|
|
2624
2613
|
"version": "1.1.1k-7.el8_4",
|
|
2625
2614
|
"ecosystem": "rpm",
|
|
@@ -2628,7 +2617,6 @@
|
|
|
2628
2617
|
"fixedInVersion": "1.1.1l"
|
|
2629
2618
|
},
|
|
2630
2619
|
{
|
|
2631
|
-
"$comment": "NPM ecosystem with PURL only — the JavaScript world rarely emits CPEs; PURL is the canonical identifier.",
|
|
2632
2620
|
"name": "lodash",
|
|
2633
2621
|
"version": "4.17.20",
|
|
2634
2622
|
"ecosystem": "npm",
|
|
@@ -2636,13 +2624,11 @@
|
|
|
2636
2624
|
"fixedInVersion": "4.17.21"
|
|
2637
2625
|
},
|
|
2638
2626
|
{
|
|
2639
|
-
"$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.",
|
|
2640
2627
|
"name": "requests",
|
|
2641
2628
|
"version": "2.28.1",
|
|
2642
2629
|
"ecosystem": "pypi"
|
|
2643
2630
|
},
|
|
2644
2631
|
{
|
|
2645
|
-
"$comment": "Maven ecosystem with full identifiers + fixedInVersion — log4j Log4Shell-style finding showing the patch path from vulnerable to fixed.",
|
|
2646
2632
|
"name": "org.apache.logging.log4j:log4j-core",
|
|
2647
2633
|
"version": "2.14.1",
|
|
2648
2634
|
"ecosystem": "maven",
|
|
@@ -2651,11 +2637,9 @@
|
|
|
2651
2637
|
"fixedInVersion": "2.17.1"
|
|
2652
2638
|
},
|
|
2653
2639
|
{
|
|
2654
|
-
"$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.",
|
|
2655
2640
|
"purl": "pkg:npm/lodash@4.17.20"
|
|
2656
2641
|
},
|
|
2657
2642
|
{
|
|
2658
|
-
"$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.",
|
|
2659
2643
|
"cpe": "cpe:2.3:a:openssl:openssl:1.1.1k:*:*:*:*:*:*:*"
|
|
2660
2644
|
}
|
|
2661
2645
|
],
|