@mitre/hdf-schema 3.1.0-rc.1 → 3.2.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.
@@ -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.1.0",
3
+ "$id": "https://mitre.github.io/hdf-libs/schemas/hdf-evidence-package/v3.2.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",
@@ -34,7 +34,7 @@
34
34
  "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."
35
35
  },
36
36
  "preparedBy": {
37
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
37
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
38
38
  "description": "Identity of who prepared this evidence package."
39
39
  },
40
40
  "preparedAt": {
@@ -55,7 +55,7 @@
55
55
  "description": "Summary of assessment completeness and compliance status."
56
56
  },
57
57
  "signature": {
58
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
58
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Signature",
59
59
  "description": "Digital signature covering the entire evidence package."
60
60
  },
61
61
  "labels": {
@@ -66,7 +66,7 @@
66
66
  "description": "Optional key-value labels for grouping and querying evidence packages."
67
67
  },
68
68
  "integrity": {
69
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/Integrity",
69
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.2.0#/$defs/Integrity",
70
70
  "description": "Cryptographic integrity information for verifying this evidence package has not been tampered with."
71
71
  },
72
72
  "version": {
@@ -74,7 +74,7 @@
74
74
  "description": "Version of this evidence package."
75
75
  },
76
76
  "generator": {
77
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0#/$defs/Generator",
77
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.2.0#/$defs/Generator",
78
78
  "description": "Information about the tool that generated this document."
79
79
  }
80
80
  },
@@ -111,7 +111,7 @@
111
111
  "description": "URI to the document. Can be a relative path or absolute URL."
112
112
  },
113
113
  "checksum": {
114
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
114
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Checksum",
115
115
  "description": "Cryptographic checksum for verifying the referenced document's integrity."
116
116
  },
117
117
  "description": {
@@ -205,9 +205,9 @@
205
205
  "description": "Informational summary of assessment completeness. Not authoritative — tools should compute these from the referenced documents.",
206
206
  "title": "Completeness Check"
207
207
  },
208
- "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0": {
208
+ "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0": {
209
209
  "$schema": "https://json-schema.org/draft/2020-12/schema",
210
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0",
210
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0",
211
211
  "title": "HDF Common Primitives",
212
212
  "description": "Shared building blocks used by hdf-results and hdf-baseline schemas.",
213
213
  "$defs": {
@@ -952,15 +952,40 @@
952
952
  },
953
953
  "code": {
954
954
  "type": "string",
955
- "description": "The raw source code of the requirement. Set to null for manual-only requirements or requirements not yet implemented. Note that if this is an overlay, it does not include the underlying source code."
955
+ "description": "The raw source code of the requirement. Set to null for manual-only requirements or requirements not yet implemented; use verificationMethod to disambiguate manual-by-design from manual-pending-automation. Note that if this is an overlay, it does not include the underlying source code."
956
956
  },
957
957
  "sourceLocation": {
958
958
  "$ref": "#/$defs/Source_Location",
959
959
  "description": "The explicit location of the requirement within the source code."
960
+ },
961
+ "controlType": {
962
+ "type": "string",
963
+ "enum": [
964
+ "policy",
965
+ "procedure",
966
+ "technical",
967
+ "management",
968
+ "operational"
969
+ ],
970
+ "description": "Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A categories. 'policy' = an authored governance statement; 'procedure' = a documented process; 'technical' = an enforced technical configuration; 'management' = a programmatic/management activity; 'operational' = a recurring operational activity (e.g. AT, IR, MA families). Optional: when omitted, consumers may infer heuristically from family/id but should not assume a default."
971
+ },
972
+ "verificationMethod": {
973
+ "$ref": "#/$defs/Verification_Method_Enum",
974
+ "description": "How this requirement is intended to be verified. Disambiguates the two cases that null 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and runs without operator action; 'hybrid' = part automated, part manual. Optional: when omitted, consumers should not infer a default."
975
+ },
976
+ "applicability": {
977
+ "type": "string",
978
+ "enum": [
979
+ "required",
980
+ "optional",
981
+ "advisory"
982
+ ],
983
+ "description": "Whether the requirement is mandatory within its baseline. Distinct from severity (risk weight) and status (lifecycle state). Maps 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{}). Optional: when omitted, consumers should treat the requirement as 'required' by convention."
960
984
  }
961
985
  },
962
986
  "examples": [
963
987
  {
988
+ "$comment": "v3.1.x-style requirement: classification fields omitted. Consumers must continue to handle this shape under v3.2.0 (backward compatibility).",
964
989
  "id": "SV-238196",
965
990
  "title": "The Ubuntu operating system must enforce password complexity",
966
991
  "impact": 0.5,
@@ -988,11 +1013,85 @@
988
1013
  "data": "Verify the value of 'minlen' in /etc/security/pwquality.conf."
989
1014
  }
990
1015
  ]
1016
+ },
1017
+ {
1018
+ "$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.",
1019
+ "id": "AC-3",
1020
+ "title": "Access Enforcement",
1021
+ "impact": 0.7,
1022
+ "tags": {
1023
+ "nist": [
1024
+ "AC-3"
1025
+ ],
1026
+ "severity": "high"
1027
+ },
1028
+ "descriptions": [
1029
+ {
1030
+ "label": "default",
1031
+ "data": "The information system enforces approved authorizations for logical access to information and system resources."
1032
+ }
1033
+ ],
1034
+ "code": "control 'AC-3' do; impact 0.7; end",
1035
+ "controlType": "technical",
1036
+ "verificationMethod": "automated",
1037
+ "applicability": "required"
1038
+ },
1039
+ {
1040
+ "$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.",
1041
+ "id": "KSI-CNA-01",
1042
+ "title": "Cyber Security Plan documents the system",
1043
+ "impact": 0.5,
1044
+ "tags": {
1045
+ "ksi": [
1046
+ "KSI-CNA"
1047
+ ]
1048
+ },
1049
+ "descriptions": [
1050
+ {
1051
+ "label": "default",
1052
+ "data": "The Cyber Security Plan documents the system, its boundary, and its components."
1053
+ }
1054
+ ],
1055
+ "controlType": "policy",
1056
+ "verificationMethod": "manual-by-design",
1057
+ "applicability": "required"
1058
+ },
1059
+ {
1060
+ "$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.",
1061
+ "id": "SV-999999",
1062
+ "title": "Example STIG rule pending automation",
1063
+ "impact": 0.3,
1064
+ "tags": {
1065
+ "stig_id": "SV-999999"
1066
+ },
1067
+ "descriptions": [
1068
+ {
1069
+ "label": "default",
1070
+ "data": "Example requirement that is intended to be automated but currently lacks a fix block."
1071
+ },
1072
+ {
1073
+ "label": "check",
1074
+ "data": "Manual review of system configuration is required."
1075
+ }
1076
+ ],
1077
+ "verificationMethod": "manual-pending-automation",
1078
+ "applicability": "advisory"
991
1079
  }
992
1080
  ],
993
1081
  "description": "Core requirement fields shared between baseline requirements and evaluated requirements. Contains the fundamental requirement definition without assessment results.",
994
1082
  "title": "Requirement Core"
995
1083
  },
1084
+ "Verification_Method_Enum": {
1085
+ "type": "string",
1086
+ "enum": [
1087
+ "automated",
1088
+ "manual-by-design",
1089
+ "manual-pending-automation",
1090
+ "hybrid"
1091
+ ],
1092
+ "description": "How a requirement is intended to be verified. Disambiguates the two cases that null 'code' overloads: 'manual-by-design' (the requirement is statement-form and not amenable to automation, e.g. FedRAMP 20x KSIs); 'manual-pending-automation' (automation could exist but does not yet, e.g. a STIG rule lacking a fix). 'automated' = a check exists and runs without operator action; 'hybrid' = part automated, part manual. Named '_Enum' to disambiguate from the unrelated Verification_Method DID-context struct.",
1093
+ "title": "Verification Method Enum"
1094
+ },
996
1095
  "Severity": {
997
1096
  "type": "string",
998
1097
  "enum": [
@@ -1023,9 +1122,9 @@
1023
1122
  }
1024
1123
  }
1025
1124
  },
1026
- "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0": {
1125
+ "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.2.0": {
1027
1126
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1028
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.1.0",
1127
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/extensions/v3.2.0",
1029
1128
  "title": "HDF Extension Primitives",
1030
1129
  "description": "Extension types for waivers, attestations, generators, and integrity.",
1031
1130
  "$defs": {
@@ -1053,15 +1152,15 @@
1053
1152
  ],
1054
1153
  "properties": {
1055
1154
  "type": {
1056
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0#/$defs/Override_Type",
1155
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.2.0#/$defs/Override_Type",
1057
1156
  "description": "The type of override applied to this requirement."
1058
1157
  },
1059
1158
  "status": {
1060
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0#/$defs/Result_Status",
1159
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.2.0#/$defs/Result_Status",
1061
1160
  "description": "The new status this override sets for the requirement. Optional when only impact is being overridden."
1062
1161
  },
1063
1162
  "impact": {
1064
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0#/$defs/Impact_Override",
1163
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.2.0#/$defs/Impact_Override",
1065
1164
  "description": "Override to the requirement's impact score. At least one of status or impact must be set."
1066
1165
  },
1067
1166
  "reason": {
@@ -1069,7 +1168,7 @@
1069
1168
  "description": "Explanation for why this override was applied."
1070
1169
  },
1071
1170
  "appliedBy": {
1072
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
1171
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
1073
1172
  "description": "Identity of who applied this override. For simple cases, use type 'simple' with just an identifier."
1074
1173
  },
1075
1174
  "appliedAt": {
@@ -1083,18 +1182,18 @@
1083
1182
  "description": "Timestamp when this override expires and must be reviewed/renewed. REQUIRED - no permanent overrides allowed. ISO 8601 format."
1084
1183
  },
1085
1184
  "signature": {
1086
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
1185
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Signature",
1087
1186
  "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."
1088
1187
  },
1089
1188
  "evidence": {
1090
1189
  "type": "array",
1091
1190
  "items": {
1092
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
1191
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Evidence"
1093
1192
  },
1094
1193
  "description": "Supporting evidence for this override, such as screenshots demonstrating manual verification for attestations."
1095
1194
  },
1096
1195
  "previousChecksum": {
1097
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
1196
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Checksum",
1098
1197
  "description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
1099
1198
  }
1100
1199
  },
@@ -1200,7 +1299,7 @@
1200
1299
  "description": "Detailed explanation of the plan, including what actions will be taken."
1201
1300
  },
1202
1301
  "appliedBy": {
1203
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
1302
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
1204
1303
  "description": "Identity of who created this POA&M. For simple cases, use type 'simple' with just an identifier."
1205
1304
  },
1206
1305
  "appliedAt": {
@@ -1216,23 +1315,23 @@
1216
1315
  "milestones": {
1217
1316
  "type": "array",
1218
1317
  "items": {
1219
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Milestone"
1318
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Milestone"
1220
1319
  },
1221
1320
  "description": "Optional array of milestones tracking progress toward completion."
1222
1321
  },
1223
1322
  "signature": {
1224
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
1323
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Signature",
1225
1324
  "description": "Optional digital signature for enhanced trust and non-repudiation."
1226
1325
  },
1227
1326
  "evidence": {
1228
1327
  "type": "array",
1229
1328
  "items": {
1230
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
1329
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Evidence"
1231
1330
  },
1232
1331
  "description": "Supporting evidence for this POA&M, such as documentation of compensating controls or mitigation implementation."
1233
1332
  },
1234
1333
  "previousChecksum": {
1235
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
1334
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Checksum",
1236
1335
  "description": "SHA-256 checksum of the previous amendment in chronological order. Creates a tamper-evident chain of amendments (similar to blockchain). Null for the first amendment on a requirement."
1237
1336
  }
1238
1337
  },
@@ -1383,7 +1482,7 @@
1383
1482
  },
1384
1483
  "properties": {
1385
1484
  "algorithm": {
1386
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Hash_Algorithm",
1485
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Hash_Algorithm",
1387
1486
  "description": "The hash algorithm used for the checksum."
1388
1487
  },
1389
1488
  "checksum": {
@@ -1416,9 +1515,9 @@
1416
1515
  }
1417
1516
  }
1418
1517
  },
1419
- "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0": {
1518
+ "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.2.0": {
1420
1519
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1421
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.1.0",
1520
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/amendments/v3.2.0",
1422
1521
  "title": "HDF Amendment Primitives",
1423
1522
  "description": "Types for waivers, attestations, and POA&Ms that modify requirement compliance status.",
1424
1523
  "$defs": {
@@ -1490,7 +1589,7 @@
1490
1589
  "description": "Name of the baseline containing the requirement. Required when the system has multiple baselines with potentially overlapping requirement IDs."
1491
1590
  },
1492
1591
  "status": {
1493
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0#/$defs/Result_Status",
1592
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.2.0#/$defs/Result_Status",
1494
1593
  "description": "The new status this amendment sets. Optional when only impact is being overridden."
1495
1594
  },
1496
1595
  "impact": {
@@ -1502,7 +1601,7 @@
1502
1601
  "description": "Justification for this amendment."
1503
1602
  },
1504
1603
  "appliedBy": {
1505
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Identity",
1604
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Identity",
1506
1605
  "description": "Identity of who applied this amendment."
1507
1606
  },
1508
1607
  "appliedAt": {
@@ -1518,22 +1617,22 @@
1518
1617
  "evidence": {
1519
1618
  "type": "array",
1520
1619
  "items": {
1521
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Evidence"
1620
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Evidence"
1522
1621
  },
1523
1622
  "description": "Supporting evidence (screenshots, logs, URLs, documents)."
1524
1623
  },
1525
1624
  "signature": {
1526
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Signature",
1625
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Signature",
1527
1626
  "description": "Digital signature for non-repudiation."
1528
1627
  },
1529
1628
  "previousChecksum": {
1530
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Checksum",
1629
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Checksum",
1531
1630
  "description": "Checksum of the prior amendment in the chain. Creates a tamper-evident linked list. Null for the first amendment."
1532
1631
  },
1533
1632
  "milestones": {
1534
1633
  "type": "array",
1535
1634
  "items": {
1536
- "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.1.0#/$defs/Milestone"
1635
+ "$ref": "https://mitre.github.io/hdf-libs/schemas/primitives/common/v3.2.0#/$defs/Milestone"
1537
1636
  },
1538
1637
  "description": "Remediation milestones (primarily for POA&M type amendments)."
1539
1638
  },
@@ -1654,9 +1753,9 @@
1654
1753
  }
1655
1754
  }
1656
1755
  },
1657
- "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0": {
1756
+ "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.2.0": {
1658
1757
  "$schema": "https://json-schema.org/draft/2020-12/schema",
1659
- "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.1.0",
1758
+ "$id": "https://mitre.github.io/hdf-libs/schemas/primitives/result/v3.2.0",
1660
1759
  "title": "HDF Result Primitives",
1661
1760
  "description": "Types for representing assessment results and statuses.",
1662
1761
  "$defs": {