@mitre/hdf-schema 3.6.0-rc.5 → 3.7.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -4
- package/dist/go/hdf.go +30 -12
- package/dist/index.js +28 -28
- package/dist/schemas/hdf-amendments.schema.json +100 -69
- package/dist/schemas/hdf-baseline.schema.json +105 -74
- package/dist/schemas/hdf-comparison.schema.json +201 -176
- package/dist/schemas/hdf-evidence-package.schema.json +105 -75
- package/dist/schemas/hdf-plan.schema.json +106 -75
- package/dist/schemas/hdf-requirement-change-event.schema.json +191 -169
- package/dist/schemas/hdf-results.schema.json +176 -150
- package/dist/schemas/hdf-system.schema.json +123 -96
- package/dist/ts/hdf.d.ts +24 -2
- package/dist/ts/hdf.ts +24 -2
- 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-evidence-package/v3.
|
|
3
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/hdf-evidence-package/v3.7.0",
|
|
4
4
|
"title": "HDF Evidence Package",
|
|
5
5
|
"description": "Bundles references to all HDF documents for audit, authorization, and compliance review. Each content entry references a document by type, URI, and checksum for integrity verification.",
|
|
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.7.0#/$defs/External_Reference"
|
|
17
17
|
},
|
|
18
18
|
"description": "Optional references to external artifacts relevant to this evidence package (CTI/STIX, BOMs, advisories, or any URI-addressable artifact) beyond the document references it already carries. Inert context; see External_Reference."
|
|
19
19
|
},
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"description": "URI to the hdf-plan document that drove this assessment. Used for completeness verification — every baseline in the plan should have a corresponding results document in this package."
|
|
42
42
|
},
|
|
43
43
|
"preparedBy": {
|
|
44
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
44
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
|
|
45
45
|
"description": "Identity of who prepared this evidence package."
|
|
46
46
|
},
|
|
47
47
|
"preparedAt": {
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"description": "Summary of assessment completeness and compliance status."
|
|
70
70
|
},
|
|
71
71
|
"signature": {
|
|
72
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
72
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
|
|
73
73
|
"description": "Digital signature covering the entire evidence package."
|
|
74
74
|
},
|
|
75
75
|
"labels": {
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"description": "Optional key-value labels for grouping and querying evidence packages."
|
|
81
81
|
},
|
|
82
82
|
"integrity": {
|
|
83
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
83
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Integrity",
|
|
84
84
|
"description": "Cryptographic integrity information for verifying this evidence package has not been tampered with."
|
|
85
85
|
},
|
|
86
86
|
"version": {
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
"description": "Version of this evidence package."
|
|
89
89
|
},
|
|
90
90
|
"generator": {
|
|
91
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
91
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0#/$defs/Generator",
|
|
92
92
|
"description": "Information about the tool that generated this document."
|
|
93
93
|
}
|
|
94
94
|
},
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"description": "URI to the document. Can be a relative path or absolute URL."
|
|
126
126
|
},
|
|
127
127
|
"checksum": {
|
|
128
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
128
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
|
|
129
129
|
"description": "Cryptographic checksum for verifying the referenced document's integrity."
|
|
130
130
|
},
|
|
131
131
|
"description": {
|
|
@@ -242,7 +242,7 @@
|
|
|
242
242
|
"description": "The native format discriminator of the referenced artifact."
|
|
243
243
|
},
|
|
244
244
|
"checksum": {
|
|
245
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
245
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
|
|
246
246
|
"description": "Cryptographic checksum of the referenced artifact for integrity verification.",
|
|
247
247
|
"$comment": "Strongly recommended for external evidence — a point-in-time reference without an integrity hash is weakly auditable. Kept out of `description` so this usage-specific note does not aggregate into the shared Checksum type's generated Go doc comment (quicktype concatenates $ref-sibling descriptions onto the referenced type)."
|
|
248
248
|
},
|
|
@@ -265,7 +265,6 @@
|
|
|
265
265
|
},
|
|
266
266
|
"examples": [
|
|
267
267
|
{
|
|
268
|
-
"$comment": "ECS log corpus carried by reference (NDJSON) — HDF never parses it; the hash pins integrity.",
|
|
269
268
|
"uri": "https://evidence.agency.gov/logs/portal-2026-q1.ndjson",
|
|
270
269
|
"format": "ecs",
|
|
271
270
|
"formatVersion": "9.4.0",
|
|
@@ -284,22 +283,22 @@
|
|
|
284
283
|
}
|
|
285
284
|
},
|
|
286
285
|
{
|
|
287
|
-
"$comment": "OCSF telemetry landed as Parquet in a security data lake.",
|
|
288
286
|
"uri": "s3://agency-security-lake/ocsf/portal/2026/q1/",
|
|
289
287
|
"format": "ocsf",
|
|
290
288
|
"formatVersion": "1.8.0",
|
|
291
289
|
"mediaType": "application/vnd.apache.parquet",
|
|
292
|
-
"
|
|
290
|
+
"metadata": {
|
|
291
|
+
"collector": "aws-security-lake"
|
|
292
|
+
}
|
|
293
293
|
},
|
|
294
294
|
{
|
|
295
|
-
"$comment": "A Splunk export carried as an opaque x- custom format — CIM/ASIM are query-time models, so reference the EXPORT, not the model.",
|
|
296
295
|
"uri": "siem/auth-events-2026-q1.json",
|
|
297
296
|
"format": "x-splunk-export",
|
|
298
297
|
"mediaType": "application/json"
|
|
299
298
|
}
|
|
300
299
|
],
|
|
301
300
|
"description": "A reference to external native-format evidence (log/telemetry corpus or other artifact) carried by URI + integrity hash + format discriminator. Reference-only: the artifact is never embedded (corpora can be huge) or transcoded (that would be lossy) — it stays canonical in its native format and HDF acts as the structured index.",
|
|
302
|
-
"$comment": "Deliberately distinct from two look-alike primitives — the shared DRY is the common Checksum type, not the container. Bom (boms[] on components/system) models component COMPOSITION and is richer: also embeddable (document) and normalizable into HDF's queryable shape (packages/model/dataset). Content_Reference (contents[]) references HDF-ECOSYSTEM documents and BOMs by Content_Type. External_Evidence_Reference is reference-only and OPAQUE (HDF never inspects it), for NATIVE non-HDF log/telemetry corpora indexed as accreditation evidence; it carries log-specific metadata (recordCount/timeRange/collector) the other two do not. Do not merge these — collapsing them would mix incompatible discriminator axes and lose Bom's normalization.",
|
|
301
|
+
"$comment": "Deliberately distinct from two look-alike primitives — the shared DRY is the common Checksum type, not the container. Bom (boms[] on components/system) models component COMPOSITION and is richer: also embeddable (document) and normalizable into HDF's queryable shape (packages/model/dataset). Content_Reference (contents[]) references HDF-ECOSYSTEM documents and BOMs by Content_Type. External_Evidence_Reference is reference-only and OPAQUE (HDF never inspects it), for NATIVE non-HDF log/telemetry corpora indexed as accreditation evidence; it carries log-specific metadata (recordCount/timeRange/collector) the other two do not. Do not merge these — collapsing them would mix incompatible discriminator axes and lose Bom's normalization. Examples, in order: 1) ECS log corpus carried by reference (NDJSON) — HDF never parses it; the hash pins integrity; 2) OCSF telemetry landed as Parquet in a security data lake; 3) A Splunk export carried as an opaque x- custom format — CIM/ASIM are query-time models, so reference the EXPORT, not the model.",
|
|
303
302
|
"title": "External Evidence Reference"
|
|
304
303
|
},
|
|
305
304
|
"SBOM_Coverage": {
|
|
@@ -358,9 +357,9 @@
|
|
|
358
357
|
"description": "Informational summary of assessment completeness. Not authoritative — tools should compute these from the referenced documents.",
|
|
359
358
|
"title": "Completeness Check"
|
|
360
359
|
},
|
|
361
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
360
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0": {
|
|
362
361
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
363
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
362
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0",
|
|
364
363
|
"title": "HDF Common Primitives",
|
|
365
364
|
"description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
|
|
366
365
|
"$defs": {
|
|
@@ -440,22 +439,20 @@
|
|
|
440
439
|
}
|
|
441
440
|
},
|
|
442
441
|
"unevaluatedProperties": false,
|
|
442
|
+
"$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.",
|
|
443
443
|
"examples": [
|
|
444
444
|
{
|
|
445
|
-
"$comment": "By-identity: cite a CVE by its id in the 'cve' system without a URL — equivalently urn:cve:CVE-2021-44228.",
|
|
446
445
|
"sourceName": "cve",
|
|
447
446
|
"externalId": "CVE-2021-44228",
|
|
448
447
|
"rel": "definition"
|
|
449
448
|
},
|
|
450
449
|
{
|
|
451
|
-
"$comment": "By-identity AND by-locator together (anyOf, not oneOf) — an ATT&CK technique cited by id with its canonical URL.",
|
|
452
450
|
"sourceName": "mitre-att&ck",
|
|
453
451
|
"externalId": "T1059",
|
|
454
452
|
"href": "https://attack.mitre.org/techniques/T1059/",
|
|
455
453
|
"rel": "canonical"
|
|
456
454
|
},
|
|
457
455
|
{
|
|
458
|
-
"$comment": "By-locator to a retrievable STIX bundle, with integrity hash, media type, and attribution.",
|
|
459
456
|
"sourceName": "stix",
|
|
460
457
|
"href": "https://cti.example.org/bundles/log4shell.json",
|
|
461
458
|
"rel": "investigate",
|
|
@@ -471,7 +468,6 @@
|
|
|
471
468
|
"addedAt": "2026-07-26T00:00:00Z"
|
|
472
469
|
},
|
|
473
470
|
{
|
|
474
|
-
"$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.",
|
|
475
471
|
"sourceName": "stix",
|
|
476
472
|
"externalId": "vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
|
|
477
473
|
"href": "https://cti.example.org/bundles/log4shell.json#vulnerability--f7c1b8e0-1234-4a2b-9c3d-000000000001",
|
|
@@ -803,6 +799,24 @@
|
|
|
803
799
|
"type",
|
|
804
800
|
"data"
|
|
805
801
|
],
|
|
802
|
+
"if": {
|
|
803
|
+
"properties": {
|
|
804
|
+
"encoding": {
|
|
805
|
+
"const": "base64"
|
|
806
|
+
}
|
|
807
|
+
},
|
|
808
|
+
"required": [
|
|
809
|
+
"encoding"
|
|
810
|
+
]
|
|
811
|
+
},
|
|
812
|
+
"then": {
|
|
813
|
+
"properties": {
|
|
814
|
+
"data": {
|
|
815
|
+
"pattern": "^[0-9A-Za-z+/]+={0,2}$",
|
|
816
|
+
"contentEncoding": "base64"
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
},
|
|
806
820
|
"properties": {
|
|
807
821
|
"type": {
|
|
808
822
|
"type": "string",
|
|
@@ -819,7 +833,8 @@
|
|
|
819
833
|
},
|
|
820
834
|
"data": {
|
|
821
835
|
"type": "string",
|
|
822
|
-
"
|
|
836
|
+
"minLength": 1,
|
|
837
|
+
"description": "The evidence content. For screenshots/files: base64-encoded data or URL. For code/logs: the raw text. For URLs: the URL string. Must not be empty. When encoding is 'base64', data must be bare base64 matching ^[0-9A-Za-z+/]+={0,2}$ (OSCAL's Base64Datatype): no data: URI prefix, URL, or line breaks."
|
|
823
838
|
},
|
|
824
839
|
"description": {
|
|
825
840
|
"type": "string",
|
|
@@ -831,7 +846,7 @@
|
|
|
831
846
|
},
|
|
832
847
|
"encoding": {
|
|
833
848
|
"type": "string",
|
|
834
|
-
"description": "Encoding used for the data. Example: 'base64', 'utf-8'."
|
|
849
|
+
"description": "Encoding used for the data. Example: 'base64', 'utf-8'. The value 'base64' (exactly, lowercase) requires data to be bare base64."
|
|
835
850
|
},
|
|
836
851
|
"size": {
|
|
837
852
|
"type": "number",
|
|
@@ -895,6 +910,7 @@
|
|
|
895
910
|
}
|
|
896
911
|
}
|
|
897
912
|
],
|
|
913
|
+
"$comment": "Examples, in order: 1) base64-encoded PNG screenshot with full capture provenance; 2) raw configuration text; 3) log excerpt; 4) URL to an external ticket; 5) base64-encoded file captured by an automated system.",
|
|
898
914
|
"description": "Supporting evidence for a finding or override, such as screenshots, code samples, log excerpts, or URLs.",
|
|
899
915
|
"title": "Evidence"
|
|
900
916
|
},
|
|
@@ -972,6 +988,13 @@
|
|
|
972
988
|
"status"
|
|
973
989
|
],
|
|
974
990
|
"properties": {
|
|
991
|
+
"title": {
|
|
992
|
+
"type": "string",
|
|
993
|
+
"minLength": 1,
|
|
994
|
+
"pattern": "^[^ \\t\\n\\r]([^\\n\\r]*[^ \\t\\n\\r])?$",
|
|
995
|
+
"$comment": "The pattern is OSCAL's StringDatatype (\\S(.*\\S)?) as its XSD defines \\S and '.', spelled with explicit classes so ECMA-262 and Go regexp engines agree: \\S and '.' differ between them on CR and non-ASCII whitespace.",
|
|
996
|
+
"description": "Short single-line label for this milestone, suitable where a consumer needs a title (for example an OSCAL POA&M remediation or task). No line breaks, and no leading or trailing whitespace. The description remains the full text of the milestone; the title does not replace it."
|
|
997
|
+
},
|
|
975
998
|
"description": {
|
|
976
999
|
"type": "string",
|
|
977
1000
|
"description": "Description of this milestone or task."
|
|
@@ -1001,6 +1024,25 @@
|
|
|
1001
1024
|
"description": "Identity of who completed this milestone."
|
|
1002
1025
|
}
|
|
1003
1026
|
},
|
|
1027
|
+
"examples": [
|
|
1028
|
+
{
|
|
1029
|
+
"title": "Deploy OpenSSH 9.8p1",
|
|
1030
|
+
"description": "Upgrade OpenSSH to 9.8p1 on every RHEL 9 host in the web tier to remediate CVE-2024-6387, then restart sshd during the Saturday maintenance window.",
|
|
1031
|
+
"estimatedCompletion": "2026-10-31T00:00:00Z",
|
|
1032
|
+
"status": "inProgress"
|
|
1033
|
+
},
|
|
1034
|
+
{
|
|
1035
|
+
"description": "Isolate the affected host on a restricted VLAN until the vendor patch is available.",
|
|
1036
|
+
"estimatedCompletion": "2026-09-05T00:00:00Z",
|
|
1037
|
+
"status": "completed",
|
|
1038
|
+
"completedAt": "2026-09-04T14:30:00Z",
|
|
1039
|
+
"completedBy": {
|
|
1040
|
+
"identifier": "network-admin@example.com",
|
|
1041
|
+
"type": "email"
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
],
|
|
1045
|
+
"$comment": "Examples, in order: 1) titled milestone in progress — the title is the short label, the description the full remediation text; 2) untitled completed milestone with completion provenance — title is optional, and a consumer needing one derives it.",
|
|
1004
1046
|
"description": "A milestone or task within a POA&M remediation plan.",
|
|
1005
1047
|
"title": "Milestone"
|
|
1006
1048
|
},
|
|
@@ -1290,9 +1332,9 @@
|
|
|
1290
1332
|
"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."
|
|
1291
1333
|
}
|
|
1292
1334
|
},
|
|
1335
|
+
"$comment": "Examples, in order: 1) v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape for 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.",
|
|
1293
1336
|
"examples": [
|
|
1294
1337
|
{
|
|
1295
|
-
"$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.5.0 (backward compatibility).",
|
|
1296
1338
|
"id": "SV-238196",
|
|
1297
1339
|
"title": "The Ubuntu operating system must enforce password complexity",
|
|
1298
1340
|
"impact": 0.5,
|
|
@@ -1322,7 +1364,6 @@
|
|
|
1322
1364
|
]
|
|
1323
1365
|
},
|
|
1324
1366
|
{
|
|
1325
|
-
"$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.",
|
|
1326
1367
|
"id": "AC-3",
|
|
1327
1368
|
"title": "Access Enforcement",
|
|
1328
1369
|
"impact": 0.7,
|
|
@@ -1344,7 +1385,6 @@
|
|
|
1344
1385
|
"applicability": "required"
|
|
1345
1386
|
},
|
|
1346
1387
|
{
|
|
1347
|
-
"$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.",
|
|
1348
1388
|
"id": "KSI-CNA-01",
|
|
1349
1389
|
"title": "Cyber Security Plan documents the system",
|
|
1350
1390
|
"impact": 0.5,
|
|
@@ -1364,7 +1404,6 @@
|
|
|
1364
1404
|
"applicability": "required"
|
|
1365
1405
|
},
|
|
1366
1406
|
{
|
|
1367
|
-
"$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.",
|
|
1368
1407
|
"id": "SV-999999",
|
|
1369
1408
|
"title": "Example STIG rule pending automation",
|
|
1370
1409
|
"impact": 0.3,
|
|
@@ -1429,9 +1468,9 @@
|
|
|
1429
1468
|
}
|
|
1430
1469
|
}
|
|
1431
1470
|
},
|
|
1432
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
1471
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0": {
|
|
1433
1472
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1434
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.
|
|
1473
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.7.0",
|
|
1435
1474
|
"title": "HDF Extension Primitives",
|
|
1436
1475
|
"description": "Extension types for waivers, attestations, generators, and integrity.",
|
|
1437
1476
|
"$defs": {
|
|
@@ -1461,20 +1500,20 @@
|
|
|
1461
1500
|
"externalReferences": {
|
|
1462
1501
|
"type": "array",
|
|
1463
1502
|
"items": {
|
|
1464
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1503
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/External_Reference"
|
|
1465
1504
|
},
|
|
1466
1505
|
"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."
|
|
1467
1506
|
},
|
|
1468
1507
|
"type": {
|
|
1469
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1508
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Override_Type",
|
|
1470
1509
|
"description": "The type of override applied to this requirement."
|
|
1471
1510
|
},
|
|
1472
1511
|
"status": {
|
|
1473
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
1512
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Result_Status",
|
|
1474
1513
|
"description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
|
|
1475
1514
|
},
|
|
1476
1515
|
"impact": {
|
|
1477
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1516
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Impact_Override",
|
|
1478
1517
|
"description": "Override to the requirement's impact score. At least one of status or impact must be set."
|
|
1479
1518
|
},
|
|
1480
1519
|
"reason": {
|
|
@@ -1482,7 +1521,7 @@
|
|
|
1482
1521
|
"description": "Explanation for why this override was applied."
|
|
1483
1522
|
},
|
|
1484
1523
|
"appliedBy": {
|
|
1485
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1524
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
|
|
1486
1525
|
"description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
|
|
1487
1526
|
},
|
|
1488
1527
|
"appliedAt": {
|
|
@@ -1496,30 +1535,31 @@
|
|
|
1496
1535
|
"description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
|
|
1497
1536
|
},
|
|
1498
1537
|
"signature": {
|
|
1499
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1538
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
|
|
1500
1539
|
"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."
|
|
1501
1540
|
},
|
|
1502
1541
|
"evidence": {
|
|
1503
1542
|
"type": "array",
|
|
1504
1543
|
"items": {
|
|
1505
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1544
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
|
|
1506
1545
|
},
|
|
1507
1546
|
"description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
|
|
1508
1547
|
},
|
|
1509
1548
|
"previousChecksum": {
|
|
1510
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1549
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
|
|
1511
1550
|
"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."
|
|
1512
1551
|
},
|
|
1513
1552
|
"cvss": {
|
|
1514
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
1553
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0#/$defs/Cvss",
|
|
1515
1554
|
"$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.",
|
|
1516
1555
|
"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."
|
|
1517
1556
|
},
|
|
1518
1557
|
"justification": {
|
|
1519
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1558
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0#/$defs/Justification",
|
|
1520
1559
|
"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."
|
|
1521
1560
|
}
|
|
1522
1561
|
},
|
|
1562
|
+
"$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.",
|
|
1523
1563
|
"examples": [
|
|
1524
1564
|
{
|
|
1525
1565
|
"type": "waiver",
|
|
@@ -1546,7 +1586,6 @@
|
|
|
1546
1586
|
"expiresAt": "2026-10-14T00:00:00Z"
|
|
1547
1587
|
},
|
|
1548
1588
|
{
|
|
1549
|
-
"$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.",
|
|
1550
1589
|
"type": "riskAdjustment",
|
|
1551
1590
|
"impact": {
|
|
1552
1591
|
"value": 0.9
|
|
@@ -1609,7 +1648,7 @@
|
|
|
1609
1648
|
"evidence": [
|
|
1610
1649
|
{
|
|
1611
1650
|
"type": "screenshot",
|
|
1612
|
-
"data": "
|
|
1651
|
+
"data": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
|
|
1613
1652
|
"description": "Screenshot showing firewall configuration",
|
|
1614
1653
|
"mimeType": "image/png",
|
|
1615
1654
|
"encoding": "base64",
|
|
@@ -1652,7 +1691,7 @@
|
|
|
1652
1691
|
"description": "Detailed explanation of the plan, including what actions will be taken."
|
|
1653
1692
|
},
|
|
1654
1693
|
"appliedBy": {
|
|
1655
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1694
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
|
|
1656
1695
|
"description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
|
|
1657
1696
|
},
|
|
1658
1697
|
"appliedAt": {
|
|
@@ -1668,23 +1707,23 @@
|
|
|
1668
1707
|
"milestones": {
|
|
1669
1708
|
"type": "array",
|
|
1670
1709
|
"items": {
|
|
1671
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1710
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Milestone"
|
|
1672
1711
|
},
|
|
1673
1712
|
"description": "Optional array of milestones tracking progress toward completion."
|
|
1674
1713
|
},
|
|
1675
1714
|
"signature": {
|
|
1676
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1715
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
|
|
1677
1716
|
"description": "Optional digital signature for enhanced trust and non-repudiation."
|
|
1678
1717
|
},
|
|
1679
1718
|
"evidence": {
|
|
1680
1719
|
"type": "array",
|
|
1681
1720
|
"items": {
|
|
1682
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1721
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
|
|
1683
1722
|
},
|
|
1684
1723
|
"description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
|
|
1685
1724
|
},
|
|
1686
1725
|
"previousChecksum": {
|
|
1687
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1726
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
|
|
1688
1727
|
"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."
|
|
1689
1728
|
}
|
|
1690
1729
|
},
|
|
@@ -1837,7 +1876,7 @@
|
|
|
1837
1876
|
},
|
|
1838
1877
|
"properties": {
|
|
1839
1878
|
"algorithm": {
|
|
1840
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
1879
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Hash_Algorithm",
|
|
1841
1880
|
"description": "The hash algorithm used for the checksum."
|
|
1842
1881
|
},
|
|
1843
1882
|
"checksum": {
|
|
@@ -1870,9 +1909,9 @@
|
|
|
1870
1909
|
}
|
|
1871
1910
|
}
|
|
1872
1911
|
},
|
|
1873
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1912
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0": {
|
|
1874
1913
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1875
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.
|
|
1914
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.7.0",
|
|
1876
1915
|
"title": "HDF Amendment Primitives",
|
|
1877
1916
|
"description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
|
|
1878
1917
|
"$defs": {
|
|
@@ -1983,7 +2022,7 @@
|
|
|
1983
2022
|
"externalReferences": {
|
|
1984
2023
|
"type": "array",
|
|
1985
2024
|
"items": {
|
|
1986
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2025
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/External_Reference"
|
|
1987
2026
|
},
|
|
1988
2027
|
"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."
|
|
1989
2028
|
},
|
|
@@ -1993,6 +2032,7 @@
|
|
|
1993
2032
|
},
|
|
1994
2033
|
"requirementId": {
|
|
1995
2034
|
"type": "string",
|
|
2035
|
+
"minLength": 1,
|
|
1996
2036
|
"description": "The ID of the requirement being amended. Must match a requirement ID in the referenced baseline."
|
|
1997
2037
|
},
|
|
1998
2038
|
"baselineRef": {
|
|
@@ -2000,7 +2040,7 @@
|
|
|
2000
2040
|
"description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
|
|
2001
2041
|
},
|
|
2002
2042
|
"status": {
|
|
2003
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2043
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0#/$defs/Result_Status",
|
|
2004
2044
|
"description": "The new status this amendment sets. Optional when only impact is being overridden."
|
|
2005
2045
|
},
|
|
2006
2046
|
"impact": {
|
|
@@ -2012,7 +2052,7 @@
|
|
|
2012
2052
|
"description": "Justification for this amendment."
|
|
2013
2053
|
},
|
|
2014
2054
|
"appliedBy": {
|
|
2015
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2055
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Identity",
|
|
2016
2056
|
"description": "Identity of who applied this amendment."
|
|
2017
2057
|
},
|
|
2018
2058
|
"appliedAt": {
|
|
@@ -2028,20 +2068,20 @@
|
|
|
2028
2068
|
"evidence": {
|
|
2029
2069
|
"type": "array",
|
|
2030
2070
|
"items": {
|
|
2031
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2071
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Evidence"
|
|
2032
2072
|
},
|
|
2033
2073
|
"description": "Supporting evidence (screenshots, logs, URLs, documents)."
|
|
2034
2074
|
},
|
|
2035
2075
|
"signature": {
|
|
2036
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2076
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Signature",
|
|
2037
2077
|
"description": "Digital signature for non-repudiation."
|
|
2038
2078
|
},
|
|
2039
2079
|
"previousChecksum": {
|
|
2040
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2080
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Checksum",
|
|
2041
2081
|
"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."
|
|
2042
2082
|
},
|
|
2043
2083
|
"cvss": {
|
|
2044
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2084
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0#/$defs/Cvss",
|
|
2045
2085
|
"$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.",
|
|
2046
2086
|
"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."
|
|
2047
2087
|
},
|
|
@@ -2052,7 +2092,7 @@
|
|
|
2052
2092
|
"milestones": {
|
|
2053
2093
|
"type": "array",
|
|
2054
2094
|
"items": {
|
|
2055
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.
|
|
2095
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.7.0#/$defs/Milestone"
|
|
2056
2096
|
},
|
|
2057
2097
|
"description": "Remediation milestones (primarily for POA&M type amendments)."
|
|
2058
2098
|
},
|
|
@@ -2069,11 +2109,12 @@
|
|
|
2069
2109
|
"affectedPackages": {
|
|
2070
2110
|
"type": "array",
|
|
2071
2111
|
"items": {
|
|
2072
|
-
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
2112
|
+
"$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0#/$defs/Affected_Package"
|
|
2073
2113
|
},
|
|
2074
2114
|
"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)."
|
|
2075
2115
|
}
|
|
2076
2116
|
},
|
|
2117
|
+
"$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.",
|
|
2077
2118
|
"examples": [
|
|
2078
2119
|
{
|
|
2079
2120
|
"type": "waiver",
|
|
@@ -2175,7 +2216,6 @@
|
|
|
2175
2216
|
"expiresAt": "2026-09-26T00:00:00Z"
|
|
2176
2217
|
},
|
|
2177
2218
|
{
|
|
2178
|
-
"$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.",
|
|
2179
2219
|
"type": "falsePositive",
|
|
2180
2220
|
"requirementId": "CVE-2026-12345",
|
|
2181
2221
|
"status": "notApplicable",
|
|
@@ -2202,9 +2242,9 @@
|
|
|
2202
2242
|
}
|
|
2203
2243
|
}
|
|
2204
2244
|
},
|
|
2205
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2245
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0": {
|
|
2206
2246
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2207
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.
|
|
2247
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.7.0",
|
|
2208
2248
|
"title": "HDF Result Primitives",
|
|
2209
2249
|
"description": "Types for representing assessment results and statuses.",
|
|
2210
2250
|
"$defs": {
|
|
@@ -2335,9 +2375,9 @@
|
|
|
2335
2375
|
}
|
|
2336
2376
|
}
|
|
2337
2377
|
},
|
|
2338
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2378
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0": {
|
|
2339
2379
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2340
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.
|
|
2380
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/cvss/v3.7.0",
|
|
2341
2381
|
"title": "HDF CVSS Primitives",
|
|
2342
2382
|
"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).",
|
|
2343
2383
|
"$defs": {
|
|
@@ -2401,7 +2441,7 @@
|
|
|
2401
2441
|
]
|
|
2402
2442
|
}
|
|
2403
2443
|
],
|
|
2404
|
-
"$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.",
|
|
2444
|
+
"$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.",
|
|
2405
2445
|
"properties": {
|
|
2406
2446
|
"version": {
|
|
2407
2447
|
"type": "string",
|
|
@@ -2481,7 +2521,6 @@
|
|
|
2481
2521
|
},
|
|
2482
2522
|
"examples": [
|
|
2483
2523
|
{
|
|
2484
|
-
"$comment": "Base-only: vendor-supplied CVSS 3.1 data exactly as a scanner (e.g., Nessus, Grype) would emit it. No consumer enrichment yet.",
|
|
2485
2524
|
"version": "3.1",
|
|
2486
2525
|
"source": "CVE-2024-12345",
|
|
2487
2526
|
"baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
|
|
@@ -2489,7 +2528,6 @@
|
|
|
2489
2528
|
"baseSeverity": "critical"
|
|
2490
2529
|
},
|
|
2491
2530
|
{
|
|
2492
|
-
"$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.",
|
|
2493
2531
|
"version": "3.1",
|
|
2494
2532
|
"source": "CVE-2023-44487",
|
|
2495
2533
|
"baseVector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
|
|
@@ -2499,7 +2537,6 @@
|
|
|
2499
2537
|
"threatScore": 5.5
|
|
2500
2538
|
},
|
|
2501
2539
|
{
|
|
2502
|
-
"$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.",
|
|
2503
2540
|
"version": "3.1",
|
|
2504
2541
|
"source": "CVE-2024-3094",
|
|
2505
2542
|
"baseVector": "CVSS:3.1/AV:L/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H",
|
|
@@ -2511,7 +2548,6 @@
|
|
|
2511
2548
|
"computedSeverity": "critical"
|
|
2512
2549
|
},
|
|
2513
2550
|
{
|
|
2514
|
-
"$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.",
|
|
2515
2551
|
"version": "4.0",
|
|
2516
2552
|
"source": "CVE-2024-21762",
|
|
2517
2553
|
"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",
|
|
@@ -2526,7 +2562,6 @@
|
|
|
2526
2562
|
"computedSeverity": "medium"
|
|
2527
2563
|
},
|
|
2528
2564
|
{
|
|
2529
|
-
"$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.",
|
|
2530
2565
|
"version": "2.0",
|
|
2531
2566
|
"source": "CVE-2014-0160",
|
|
2532
2567
|
"baseVector": "AV:N/AC:L/Au:N/C:P/I:N/A:N",
|
|
@@ -2539,9 +2574,9 @@
|
|
|
2539
2574
|
}
|
|
2540
2575
|
}
|
|
2541
2576
|
},
|
|
2542
|
-
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
2577
|
+
"https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0": {
|
|
2543
2578
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2544
|
-
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.
|
|
2579
|
+
"$id": "https://mitre.github.io/hdf-libs/schemas/primitives/affected-package/v3.7.0",
|
|
2545
2580
|
"title": "HDF Affected Package Primitives",
|
|
2546
2581
|
"description": "Types for representing the software package(s) affected by a vulnerability finding.",
|
|
2547
2582
|
"$defs": {
|
|
@@ -2607,9 +2642,9 @@
|
|
|
2607
2642
|
"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'."
|
|
2608
2643
|
}
|
|
2609
2644
|
},
|
|
2645
|
+
"$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.",
|
|
2610
2646
|
"examples": [
|
|
2611
2647
|
{
|
|
2612
|
-
"$comment": "RPM ecosystem with full CPE + PURL — typical Grype/Trivy output for a RHEL host scan.",
|
|
2613
2648
|
"name": "openssl",
|
|
2614
2649
|
"version": "1.1.1k-7.el8_4",
|
|
2615
2650
|
"ecosystem": "rpm",
|
|
@@ -2618,7 +2653,6 @@
|
|
|
2618
2653
|
"fixedInVersion": "1.1.1l"
|
|
2619
2654
|
},
|
|
2620
2655
|
{
|
|
2621
|
-
"$comment": "NPM ecosystem with PURL only — the JavaScript world rarely emits CPEs; PURL is the canonical identifier.",
|
|
2622
2656
|
"name": "lodash",
|
|
2623
2657
|
"version": "4.17.20",
|
|
2624
2658
|
"ecosystem": "npm",
|
|
@@ -2626,13 +2660,11 @@
|
|
|
2626
2660
|
"fixedInVersion": "4.17.21"
|
|
2627
2661
|
},
|
|
2628
2662
|
{
|
|
2629
|
-
"$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.",
|
|
2630
2663
|
"name": "requests",
|
|
2631
2664
|
"version": "2.28.1",
|
|
2632
2665
|
"ecosystem": "pypi"
|
|
2633
2666
|
},
|
|
2634
2667
|
{
|
|
2635
|
-
"$comment": "Maven ecosystem with full identifiers + fixedInVersion — log4j Log4Shell-style finding showing the patch path from vulnerable to fixed.",
|
|
2636
2668
|
"name": "org.apache.logging.log4j:log4j-core",
|
|
2637
2669
|
"version": "2.14.1",
|
|
2638
2670
|
"ecosystem": "maven",
|
|
@@ -2641,11 +2673,9 @@
|
|
|
2641
2673
|
"fixedInVersion": "2.17.1"
|
|
2642
2674
|
},
|
|
2643
2675
|
{
|
|
2644
|
-
"$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.",
|
|
2645
2676
|
"purl": "pkg:npm/lodash@4.17.20"
|
|
2646
2677
|
},
|
|
2647
2678
|
{
|
|
2648
|
-
"$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.",
|
|
2649
2679
|
"cpe": "cpe:2.3:a:openssl:openssl:1.1.1k:*:*:*:*:*:*:*"
|
|
2650
2680
|
}
|
|
2651
2681
|
],
|