@mitre/hdf-schema 3.5.0 → 3.6.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/dist/go/hdf.go +192 -120
- package/dist/helpers.js +15 -25
- package/dist/index.js +11 -11
- package/dist/schemas/hdf-amendments.schema.json +18 -18
- package/dist/schemas/hdf-baseline.schema.json +18 -18
- package/dist/schemas/hdf-comparison.schema.json +23 -23
- package/dist/schemas/hdf-evidence-package.schema.json +19 -19
- package/dist/schemas/hdf-plan.schema.json +18 -18
- package/dist/schemas/hdf-requirement-change-event.schema.json +24 -24
- package/dist/schemas/hdf-results.schema.json +23 -23
- package/dist/schemas/hdf-system.schema.json +21 -21
- package/dist/ts/hdf.d.ts +183 -111
- package/dist/ts/hdf.js +37 -28
- package/dist/ts/hdf.ts +183 -111
- package/package.json +10 -4
- package/testhdf/index.d.ts +85 -0
- package/testhdf/index.js +228 -0
package/dist/ts/hdf.d.ts
CHANGED
|
@@ -265,11 +265,13 @@ export interface ExternalReference {
|
|
|
265
265
|
description?: string;
|
|
266
266
|
/**
|
|
267
267
|
* Optional lossless embedded copy of the referenced artifact — the raw STIX object, EPSS
|
|
268
|
-
* record, advisory, or annotation payload — preserved verbatim.
|
|
269
|
-
*
|
|
270
|
-
*
|
|
271
|
-
*
|
|
272
|
-
*
|
|
268
|
+
* record, advisory, or annotation payload — preserved verbatim.
|
|
269
|
+
*
|
|
270
|
+
* Composes with `href`/`externalId` (which point at the artifact) and `checksum` (which
|
|
271
|
+
* ties the copy to the source): a single entry can both point and embed.
|
|
272
|
+
*
|
|
273
|
+
* HDF stays payload-agnostic — the content is carried untouched, never normalized into HDF
|
|
274
|
+
* fields — so this does not duplicate the source ontology (e.g. STIX rides here unchanged).
|
|
273
275
|
*/
|
|
274
276
|
document?: {
|
|
275
277
|
[key: string]: any;
|
|
@@ -288,10 +290,15 @@ export interface ExternalReference {
|
|
|
288
290
|
href?: string;
|
|
289
291
|
/**
|
|
290
292
|
* Open token classifying the referenced/embedded payload, turning a bare reference into an
|
|
291
|
-
* enrichment envelope.
|
|
293
|
+
* enrichment envelope.
|
|
294
|
+
*
|
|
295
|
+
* Deliberately open (like `sourceName`/`rel`), not a closed enum.
|
|
296
|
+
*
|
|
292
297
|
* Documented starter vocabulary: 'threat-intel' (STIX/CTI object), 'annotation' (human
|
|
293
298
|
* triage note), 'exploitation' (EPSS/KEV signal carried as context), 'advisory'
|
|
294
|
-
* (vendor/security advisory).
|
|
299
|
+
* (vendor/security advisory).
|
|
300
|
+
*
|
|
301
|
+
* Use the `x-` prefix for custom kinds.
|
|
295
302
|
*/
|
|
296
303
|
kind?: string;
|
|
297
304
|
/**
|
|
@@ -330,25 +337,27 @@ export interface Identity {
|
|
|
330
337
|
*/
|
|
331
338
|
identifier: string;
|
|
332
339
|
/**
|
|
333
|
-
* The type of identifier.
|
|
334
|
-
*
|
|
335
|
-
*
|
|
336
|
-
*
|
|
337
|
-
*
|
|
338
|
-
* '
|
|
339
|
-
*
|
|
340
|
+
* The type of identifier.
|
|
341
|
+
*
|
|
342
|
+
* Use 'email' for email addresses, 'username' for user accounts, 'system' for deterministic
|
|
343
|
+
* non-interactive automation (CI jobs, cron, scanners), 'agent' for an AI/LLM agent acting
|
|
344
|
+
* with autonomy — kept distinct from 'system' so auditors can apply AI-specific scrutiny
|
|
345
|
+
* (e.g. 'an LLM proposed this' vs a deterministic job) and satisfy AI-source disclosure
|
|
346
|
+
* under frameworks like the EU AI Act and NIST AI RMF, 'simple' for basic string
|
|
347
|
+
* identifiers without additional classification, or 'other' for custom identity systems.
|
|
340
348
|
*/
|
|
341
349
|
type: IdentityType;
|
|
342
350
|
[property: string]: any;
|
|
343
351
|
}
|
|
344
352
|
/**
|
|
345
|
-
* The type of identifier.
|
|
346
|
-
*
|
|
347
|
-
*
|
|
348
|
-
*
|
|
349
|
-
*
|
|
350
|
-
* '
|
|
351
|
-
*
|
|
353
|
+
* The type of identifier.
|
|
354
|
+
*
|
|
355
|
+
* Use 'email' for email addresses, 'username' for user accounts, 'system' for deterministic
|
|
356
|
+
* non-interactive automation (CI jobs, cron, scanners), 'agent' for an AI/LLM agent acting
|
|
357
|
+
* with autonomy — kept distinct from 'system' so auditors can apply AI-specific scrutiny
|
|
358
|
+
* (e.g. 'an LLM proposed this' vs a deterministic job) and satisfy AI-source disclosure
|
|
359
|
+
* under frameworks like the EU AI Act and NIST AI RMF, 'simple' for basic string
|
|
360
|
+
* identifiers without additional classification, or 'other' for custom identity systems.
|
|
352
361
|
*/
|
|
353
362
|
export declare enum IdentityType {
|
|
354
363
|
Agent = "agent",
|
|
@@ -553,12 +562,17 @@ export interface EvaluatedRequirement {
|
|
|
553
562
|
disposition?: OverrideType;
|
|
554
563
|
/**
|
|
555
564
|
* Checksum of this requirement's resolved effective posture, for per-control change
|
|
556
|
-
* detection in continuous monitoring.
|
|
557
|
-
*
|
|
558
|
-
*
|
|
559
|
-
*
|
|
560
|
-
*
|
|
561
|
-
*
|
|
565
|
+
* detection in continuous monitoring.
|
|
566
|
+
*
|
|
567
|
+
* sha256 over the canonical JSON object with keys status, impact, disposition (in that
|
|
568
|
+
* order), holding the resolved effective status, resolved effective impact, and governing
|
|
569
|
+
* override type (null when nothing governs), with override expiry anchored to the document
|
|
570
|
+
* timestamp.
|
|
571
|
+
*
|
|
572
|
+
* Flips exactly when the operative status, impact, or disposition changes; stable under all
|
|
573
|
+
* other churn (result details, timestamps, tags).
|
|
574
|
+
*
|
|
575
|
+
* Optional; stamped by tooling (hdf convert, hdf amend apply).
|
|
562
576
|
*/
|
|
563
577
|
effectiveChecksum?: Checksum;
|
|
564
578
|
/**
|
|
@@ -630,10 +644,14 @@ export interface EvaluatedRequirement {
|
|
|
630
644
|
[key: string]: any;
|
|
631
645
|
};
|
|
632
646
|
/**
|
|
633
|
-
* Whether the requirement is mandatory within its baseline.
|
|
634
|
-
*
|
|
635
|
-
*
|
|
636
|
-
*
|
|
647
|
+
* Whether the requirement is mandatory within its baseline.
|
|
648
|
+
*
|
|
649
|
+
* Distinct from severity (risk weight) and status (lifecycle state).
|
|
650
|
+
*
|
|
651
|
+
* Maps cleanly onto: FedRAMP rev5 OSCAL 'CORE' prop, FedRAMP 20x inline 'Optional:'
|
|
652
|
+
* markers, CMMC sublevel rows, and CIS Implementation Group memberships (IG1/IG2/IG3 may
|
|
653
|
+
* carry richer semantics; layer those onto props[]/tags{}).
|
|
654
|
+
*
|
|
637
655
|
* Optional: when omitted, consumers should treat the requirement as 'required' by
|
|
638
656
|
* convention.
|
|
639
657
|
*/
|
|
@@ -647,11 +665,15 @@ export interface EvaluatedRequirement {
|
|
|
647
665
|
code?: string;
|
|
648
666
|
/**
|
|
649
667
|
* Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A
|
|
650
|
-
* categories.
|
|
651
|
-
*
|
|
668
|
+
* categories.
|
|
669
|
+
*
|
|
670
|
+
* 'policy' = an authored governance statement; 'procedure' = a documented process;
|
|
671
|
+
* 'technical' = an enforced technical configuration; 'management' = a
|
|
652
672
|
* programmatic/management activity; 'operational' = a recurring operational activity (e.g.
|
|
653
|
-
* AT, IR, MA families).
|
|
654
|
-
*
|
|
673
|
+
* AT, IR, MA families).
|
|
674
|
+
*
|
|
675
|
+
* Optional: when omitted, consumers may infer heuristically from family/id but should not
|
|
676
|
+
* assume a default.
|
|
655
677
|
*/
|
|
656
678
|
controlType?: ControlType;
|
|
657
679
|
/**
|
|
@@ -670,12 +692,17 @@ export interface EvaluatedRequirement {
|
|
|
670
692
|
*/
|
|
671
693
|
title?: string;
|
|
672
694
|
/**
|
|
673
|
-
* How this requirement is intended to be verified.
|
|
674
|
-
*
|
|
675
|
-
*
|
|
676
|
-
*
|
|
677
|
-
*
|
|
678
|
-
*
|
|
695
|
+
* How this requirement is intended to be verified.
|
|
696
|
+
*
|
|
697
|
+
* Disambiguates the two cases that null 'code' overloads: 'manual-by-design' (the
|
|
698
|
+
* requirement is statement-form and not amenable to automation, e.g. FedRAMP 20x KSIs);
|
|
699
|
+
* 'manual-pending-automation' (automation could exist but does not yet, e.g. a STIG rule
|
|
700
|
+
* lacking a fix).
|
|
701
|
+
*
|
|
702
|
+
* 'automated' = a check exists and runs without operator action; 'hybrid' = part automated,
|
|
703
|
+
* part manual.
|
|
704
|
+
*
|
|
705
|
+
* Optional: when omitted, consumers should not infer a default.
|
|
679
706
|
*/
|
|
680
707
|
verificationMethod?: VerificationMethodEnum;
|
|
681
708
|
[property: string]: any;
|
|
@@ -695,7 +722,7 @@ export interface AffectedPackage {
|
|
|
695
722
|
* Optional CPE 2.3 URI identifying the affected product. Validated leniently: only the
|
|
696
723
|
* 'cpe:2.3:' prefix and the part-type letter ('a' application, 'h' hardware, 'o' operating
|
|
697
724
|
* system) are enforced here. Use `hdf-utilities.parseCpe` for full-grammar parsing.
|
|
698
|
-
* Example:
|
|
725
|
+
* Example: `cpe:2.3:a:openssl:openssl:1.1.1k:*:*:*:*:*:*:*`.
|
|
699
726
|
*/
|
|
700
727
|
cpe?: string;
|
|
701
728
|
/**
|
|
@@ -715,11 +742,16 @@ export interface AffectedPackage {
|
|
|
715
742
|
*/
|
|
716
743
|
name?: string;
|
|
717
744
|
/**
|
|
718
|
-
* Optional Package URL (PURL) identifying the affected package.
|
|
719
|
-
*
|
|
720
|
-
*
|
|
721
|
-
*
|
|
722
|
-
*
|
|
745
|
+
* Optional Package URL (PURL) identifying the affected package.
|
|
746
|
+
*
|
|
747
|
+
* Validated leniently: only the 'pkg:TYPE/' scheme prefix is enforced here, where TYPE
|
|
748
|
+
* follows the PURL grammar (a letter followed by letters, digits, '.', '+', or '-') and is
|
|
749
|
+
* matched case-insensitively to mirror `hdf-utilities.parsePurl`'s accept-and-warn
|
|
750
|
+
* behavior.
|
|
751
|
+
*
|
|
752
|
+
* Use `parsePurl` for full PURL parsing.
|
|
753
|
+
*
|
|
754
|
+
* Example: 'pkg:rpm/redhat/openssl@1.1.1k-7.el8_4?arch=x86_64'.
|
|
723
755
|
*/
|
|
724
756
|
purl?: string;
|
|
725
757
|
/**
|
|
@@ -747,10 +779,14 @@ export declare enum Ecosystem {
|
|
|
747
779
|
RPM = "rpm"
|
|
748
780
|
}
|
|
749
781
|
/**
|
|
750
|
-
* Whether the requirement is mandatory within its baseline.
|
|
751
|
-
*
|
|
752
|
-
*
|
|
753
|
-
*
|
|
782
|
+
* Whether the requirement is mandatory within its baseline.
|
|
783
|
+
*
|
|
784
|
+
* Distinct from severity (risk weight) and status (lifecycle state).
|
|
785
|
+
*
|
|
786
|
+
* Maps cleanly onto: FedRAMP rev5 OSCAL 'CORE' prop, FedRAMP 20x inline 'Optional:'
|
|
787
|
+
* markers, CMMC sublevel rows, and CIS Implementation Group memberships (IG1/IG2/IG3 may
|
|
788
|
+
* carry richer semantics; layer those onto props[]/tags{}).
|
|
789
|
+
*
|
|
754
790
|
* Optional: when omitted, consumers should treat the requirement as 'required' by
|
|
755
791
|
* convention.
|
|
756
792
|
*/
|
|
@@ -761,11 +797,15 @@ export declare enum Applicability {
|
|
|
761
797
|
}
|
|
762
798
|
/**
|
|
763
799
|
* Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A
|
|
764
|
-
* categories.
|
|
765
|
-
*
|
|
800
|
+
* categories.
|
|
801
|
+
*
|
|
802
|
+
* 'policy' = an authored governance statement; 'procedure' = a documented process;
|
|
803
|
+
* 'technical' = an enforced technical configuration; 'management' = a
|
|
766
804
|
* programmatic/management activity; 'operational' = a recurring operational activity (e.g.
|
|
767
|
-
* AT, IR, MA families).
|
|
768
|
-
*
|
|
805
|
+
* AT, IR, MA families).
|
|
806
|
+
*
|
|
807
|
+
* Optional: when omitted, consumers may infer heuristically from family/id but should not
|
|
808
|
+
* assume a default.
|
|
769
809
|
*/
|
|
770
810
|
export declare enum ControlType {
|
|
771
811
|
Management = "management",
|
|
@@ -795,11 +835,15 @@ export interface Cvss {
|
|
|
795
835
|
baseSeverity?: CVSSSeverity;
|
|
796
836
|
/**
|
|
797
837
|
* Optional Base metric group vector string as emitted by the source (e.g.,
|
|
798
|
-
* 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H').
|
|
799
|
-
*
|
|
800
|
-
*
|
|
801
|
-
*
|
|
802
|
-
*
|
|
838
|
+
* 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H').
|
|
839
|
+
*
|
|
840
|
+
* For CVSS 2.0 the version prefix is omitted.
|
|
841
|
+
*
|
|
842
|
+
* Some vendor tools emit a final baseScore without the vector — in that case this field is
|
|
843
|
+
* absent and the score cannot be recomputed or decomposed.
|
|
844
|
+
*
|
|
845
|
+
* The pattern accepts any version-prefixed or prefix-less metric token sequence; semantic
|
|
846
|
+
* validity of individual metrics is checked by hdf-utilities, not by the schema.
|
|
803
847
|
*/
|
|
804
848
|
baseVector?: string;
|
|
805
849
|
/**
|
|
@@ -886,19 +930,19 @@ export interface Description {
|
|
|
886
930
|
[property: string]: any;
|
|
887
931
|
}
|
|
888
932
|
/**
|
|
889
|
-
* The type of amendment, aligned with FedRAMP deviation request categories. 'waiver': risk
|
|
890
|
-
* by Authorizing Official. 'attestation': manually verified by assessor. 'poam':
|
|
891
|
-
* tracked (no status change). 'inherited': control provided by another component or
|
|
892
|
-
* 'falsePositive': scanner incorrectly identified a finding — for compliance scans (STIG,
|
|
893
|
-
* check actually passes, so status is typically set to 'passed'; for vulnerability scans
|
|
894
|
-
* SCA), the flagged vulnerability does not apply to this system, so status is typically set
|
|
895
|
-
* 'notApplicable'. The disposition field on the requirement distinguishes false positives from
|
|
896
|
-
* genuinely not-applicable findings. 'riskAdjustment': impact score adjusted based on
|
|
897
|
-
* context (FedRAMP Risk Adjustment); does not change pass/fail status, only impact
|
|
898
|
-
* field. 'operationalRequirement': deviation required by operational constraints
|
|
899
|
-
* Operational Requirement); the finding cannot be remediated because the system requires
|
|
900
|
-
* affected functionality. Remains an open risk. Migration note: 'exception' was removed in
|
|
901
|
-
* use 'waiver' with status 'notApplicable' instead.
|
|
933
|
+
* The type of amendment, aligned with FedRAMP deviation request categories. - 'waiver': risk
|
|
934
|
+
* accepted by Authorizing Official. - 'attestation': manually verified by assessor. - 'poam':
|
|
935
|
+
* remediation tracked (no status change). - 'inherited': control provided by another component or
|
|
936
|
+
* system. - 'falsePositive': scanner incorrectly identified a finding — for compliance scans (STIG,
|
|
937
|
+
* CIS), the check actually passes, so status is typically set to 'passed'; for vulnerability scans
|
|
938
|
+
* (CVE, SCA), the flagged vulnerability does not apply to this system, so status is typically set
|
|
939
|
+
* to 'notApplicable'. The disposition field on the requirement distinguishes false positives from
|
|
940
|
+
* genuinely not-applicable findings. - 'riskAdjustment': impact score adjusted based on
|
|
941
|
+
* environmental context (FedRAMP Risk Adjustment); does not change pass/fail status, only impact
|
|
942
|
+
* via the impact field. - 'operationalRequirement': deviation required by operational constraints
|
|
943
|
+
* (FedRAMP Operational Requirement); the finding cannot be remediated because the system requires
|
|
944
|
+
* the affected functionality. Remains an open risk. Migration note: 'exception' was removed in
|
|
945
|
+
* v3.1.0 — use 'waiver' with status 'notApplicable' instead.
|
|
902
946
|
*/
|
|
903
947
|
export declare enum OverrideType {
|
|
904
948
|
Attestation = "attestation",
|
|
@@ -1470,11 +1514,16 @@ export interface Component {
|
|
|
1470
1514
|
inputOverrides?: InputOverride[];
|
|
1471
1515
|
/**
|
|
1472
1516
|
* Cryptographic integrity of this component's underlying artifact — model weights or
|
|
1473
|
-
* shards, dataset archive, container image, or package bytes.
|
|
1474
|
-
*
|
|
1475
|
-
*
|
|
1476
|
-
*
|
|
1477
|
-
*
|
|
1517
|
+
* shards, dataset archive, container image, or package bytes.
|
|
1518
|
+
*
|
|
1519
|
+
* An array supports multi-file/sharded artifacts.
|
|
1520
|
+
*
|
|
1521
|
+
* This is the single, generic home for artifact/subject integrity across all component
|
|
1522
|
+
* types (it replaced the former per-type Container_Image digest and Artifact checksum
|
|
1523
|
+
* fields).
|
|
1524
|
+
*
|
|
1525
|
+
* Distinct from BOM-document integrity (Bom.hashes[]) and from the document tamper-evidence
|
|
1526
|
+
* Integrity type.
|
|
1478
1527
|
*/
|
|
1479
1528
|
integrity?: Checksum[];
|
|
1480
1529
|
/**
|
|
@@ -2219,10 +2268,13 @@ export interface Tool {
|
|
|
2219
2268
|
* The named format of the source data, when it follows a recognized format specification
|
|
2220
2269
|
* with its own identity: an interchange format emitted by many tools ('SARIF', 'XCCDF',
|
|
2221
2270
|
* 'OSCAL') or one of several named output formats a single tool produces ('FVDL',
|
|
2222
|
-
* 'exec-json', 'FPF').
|
|
2223
|
-
*
|
|
2224
|
-
*
|
|
2225
|
-
*
|
|
2271
|
+
* 'exec-json', 'FPF').
|
|
2272
|
+
*
|
|
2273
|
+
* Never a serialization structure — 'JSON', 'XML', and 'CSV' are encodings, not formats.
|
|
2274
|
+
*
|
|
2275
|
+
* Omit for a tool's native output: an absent format means the tool's own shape, and data
|
|
2276
|
+
* arriving as a named format is converted by that format's converter, which sets this field
|
|
2277
|
+
* alongside the producing tool's name.
|
|
2226
2278
|
*/
|
|
2227
2279
|
format?: string;
|
|
2228
2280
|
/**
|
|
@@ -2356,10 +2408,14 @@ export interface BaselineRequirement {
|
|
|
2356
2408
|
[key: string]: any;
|
|
2357
2409
|
};
|
|
2358
2410
|
/**
|
|
2359
|
-
* Whether the requirement is mandatory within its baseline.
|
|
2360
|
-
*
|
|
2361
|
-
*
|
|
2362
|
-
*
|
|
2411
|
+
* Whether the requirement is mandatory within its baseline.
|
|
2412
|
+
*
|
|
2413
|
+
* Distinct from severity (risk weight) and status (lifecycle state).
|
|
2414
|
+
*
|
|
2415
|
+
* Maps cleanly onto: FedRAMP rev5 OSCAL 'CORE' prop, FedRAMP 20x inline 'Optional:'
|
|
2416
|
+
* markers, CMMC sublevel rows, and CIS Implementation Group memberships (IG1/IG2/IG3 may
|
|
2417
|
+
* carry richer semantics; layer those onto props[]/tags{}).
|
|
2418
|
+
*
|
|
2363
2419
|
* Optional: when omitted, consumers should treat the requirement as 'required' by
|
|
2364
2420
|
* convention.
|
|
2365
2421
|
*/
|
|
@@ -2373,11 +2429,15 @@ export interface BaselineRequirement {
|
|
|
2373
2429
|
code?: string;
|
|
2374
2430
|
/**
|
|
2375
2431
|
* Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A
|
|
2376
|
-
* categories.
|
|
2377
|
-
*
|
|
2432
|
+
* categories.
|
|
2433
|
+
*
|
|
2434
|
+
* 'policy' = an authored governance statement; 'procedure' = a documented process;
|
|
2435
|
+
* 'technical' = an enforced technical configuration; 'management' = a
|
|
2378
2436
|
* programmatic/management activity; 'operational' = a recurring operational activity (e.g.
|
|
2379
|
-
* AT, IR, MA families).
|
|
2380
|
-
*
|
|
2437
|
+
* AT, IR, MA families).
|
|
2438
|
+
*
|
|
2439
|
+
* Optional: when omitted, consumers may infer heuristically from family/id but should not
|
|
2440
|
+
* assume a default.
|
|
2381
2441
|
*/
|
|
2382
2442
|
controlType?: ControlType;
|
|
2383
2443
|
/**
|
|
@@ -2400,12 +2460,17 @@ export interface BaselineRequirement {
|
|
|
2400
2460
|
*/
|
|
2401
2461
|
title?: string;
|
|
2402
2462
|
/**
|
|
2403
|
-
* How this requirement is intended to be verified.
|
|
2404
|
-
*
|
|
2405
|
-
*
|
|
2406
|
-
*
|
|
2407
|
-
*
|
|
2408
|
-
*
|
|
2463
|
+
* How this requirement is intended to be verified.
|
|
2464
|
+
*
|
|
2465
|
+
* Disambiguates the two cases that null 'code' overloads: 'manual-by-design' (the
|
|
2466
|
+
* requirement is statement-form and not amenable to automation, e.g. FedRAMP 20x KSIs);
|
|
2467
|
+
* 'manual-pending-automation' (automation could exist but does not yet, e.g. a STIG rule
|
|
2468
|
+
* lacking a fix).
|
|
2469
|
+
*
|
|
2470
|
+
* 'automated' = a check exists and runs without operator action; 'hybrid' = part automated,
|
|
2471
|
+
* part manual.
|
|
2472
|
+
*
|
|
2473
|
+
* Optional: when omitted, consumers should not infer a default.
|
|
2409
2474
|
*/
|
|
2410
2475
|
verificationMethod?: VerificationMethodEnum;
|
|
2411
2476
|
[property: string]: any;
|
|
@@ -3593,24 +3658,29 @@ export interface HDFAmendments {
|
|
|
3593
3658
|
* branches gated on 'type': when type is 'operationalRequirement', neither 'status' nor 'impact'
|
|
3594
3659
|
* may be set — the override records accepted risk without changing the finding
|
|
3595
3660
|
* (documentation-only). For all other types, at least one of 'status' or 'impact' must be set. This
|
|
3596
|
-
* rule aligns with:
|
|
3661
|
+
* rule aligns with: - OSCAL Assessment Results — finding.target.status and
|
|
3597
3662
|
* finding.associated-risk[].facet[] are separate axes
|
|
3598
|
-
* (https://pages.nist.gov/OSCAL/learn/concepts/layer/assessment/assessment-results/)
|
|
3663
|
+
* (https://pages.nist.gov/OSCAL/learn/concepts/layer/assessment/assessment-results/) - FedRAMP
|
|
3599
3664
|
* deviation request types — Risk Adjustment changes impact only, Operational Requirement documents
|
|
3600
3665
|
* acceptance only, False Positive changes status
|
|
3601
|
-
* (https://www.ignyteplatform.com/blog/fedramp/fedramp-deviation-requests-submit/)
|
|
3602
|
-
*
|
|
3603
|
-
*
|
|
3666
|
+
* (https://www.ignyteplatform.com/blog/fedramp/fedramp-deviation-requests-submit/) - NIST SP 800-37
|
|
3667
|
+
* RMF — risk response (accept/mitigate/transfer) is a separate step from control assessment status
|
|
3668
|
+
* (https://csrc.nist.gov/pubs/sp/800/37/r2/final).
|
|
3604
3669
|
*/
|
|
3605
3670
|
export interface StandaloneOverride {
|
|
3606
3671
|
/**
|
|
3607
3672
|
* Software packages this amendment is scoped to, distinct from componentRef (which scopes
|
|
3608
|
-
* to an HDF-internal Component by UUID).
|
|
3609
|
-
*
|
|
3610
|
-
*
|
|
3611
|
-
*
|
|
3612
|
-
*
|
|
3613
|
-
*
|
|
3673
|
+
* to an HDF-internal Component by UUID).
|
|
3674
|
+
*
|
|
3675
|
+
* Use when the source amendment format references packages by purl/cpe/name+version — e.g.,
|
|
3676
|
+
* VEX `affects[]` / `products[]`, OSCAL POA&M `subjects[]`, FedRAMP component-aware
|
|
3677
|
+
* amendments.
|
|
3678
|
+
*
|
|
3679
|
+
* Symmetric with Evaluated_Requirement.affectedPackages, which scopes findings to the same
|
|
3680
|
+
* package vocabulary.
|
|
3681
|
+
*
|
|
3682
|
+
* When omitted, the amendment applies system-wide (or only to componentRef when that is
|
|
3683
|
+
* set).
|
|
3614
3684
|
*/
|
|
3615
3685
|
affectedPackages?: AffectedPackage[];
|
|
3616
3686
|
/**
|
|
@@ -4004,10 +4074,12 @@ export interface HDFRequirementChangeEvent {
|
|
|
4004
4074
|
/**
|
|
4005
4075
|
* The effectiveChecksum of the entity state this event supersedes, forming a per-key hash
|
|
4006
4076
|
* chain: a mismatch or gap against stored state is detectable, letting a consumer mark the
|
|
4007
|
-
* key unverified instead of serving stale posture.
|
|
4008
|
-
*
|
|
4009
|
-
*
|
|
4010
|
-
*
|
|
4077
|
+
* key unverified instead of serving stale posture.
|
|
4078
|
+
*
|
|
4079
|
+
* Null at chain start (no prior state, e.g. a new entity or the first event after a seed).
|
|
4080
|
+
*
|
|
4081
|
+
* The chain provides tamper/gap evidence given a trusted head; completeness is anchored
|
|
4082
|
+
* out-of-band by periodic re-centering rescans.
|
|
4011
4083
|
*/
|
|
4012
4084
|
priorChecksum: any;
|
|
4013
4085
|
/**
|
package/dist/ts/hdf.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The type of identifier.
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* '
|
|
8
|
-
*
|
|
2
|
+
* The type of identifier.
|
|
3
|
+
*
|
|
4
|
+
* Use 'email' for email addresses, 'username' for user accounts, 'system' for deterministic
|
|
5
|
+
* non-interactive automation (CI jobs, cron, scanners), 'agent' for an AI/LLM agent acting
|
|
6
|
+
* with autonomy — kept distinct from 'system' so auditors can apply AI-specific scrutiny
|
|
7
|
+
* (e.g. 'an LLM proposed this' vs a deterministic job) and satisfy AI-source disclosure
|
|
8
|
+
* under frameworks like the EU AI Act and NIST AI RMF, 'simple' for basic string
|
|
9
|
+
* identifiers without additional classification, or 'other' for custom identity systems.
|
|
9
10
|
*/
|
|
10
11
|
export var IdentityType;
|
|
11
12
|
(function (IdentityType) {
|
|
@@ -74,10 +75,14 @@ export var Ecosystem;
|
|
|
74
75
|
Ecosystem["RPM"] = "rpm";
|
|
75
76
|
})(Ecosystem || (Ecosystem = {}));
|
|
76
77
|
/**
|
|
77
|
-
* Whether the requirement is mandatory within its baseline.
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
78
|
+
* Whether the requirement is mandatory within its baseline.
|
|
79
|
+
*
|
|
80
|
+
* Distinct from severity (risk weight) and status (lifecycle state).
|
|
81
|
+
*
|
|
82
|
+
* Maps cleanly onto: FedRAMP rev5 OSCAL 'CORE' prop, FedRAMP 20x inline 'Optional:'
|
|
83
|
+
* markers, CMMC sublevel rows, and CIS Implementation Group memberships (IG1/IG2/IG3 may
|
|
84
|
+
* carry richer semantics; layer those onto props[]/tags{}).
|
|
85
|
+
*
|
|
81
86
|
* Optional: when omitted, consumers should treat the requirement as 'required' by
|
|
82
87
|
* convention.
|
|
83
88
|
*/
|
|
@@ -89,11 +94,15 @@ export var Applicability;
|
|
|
89
94
|
})(Applicability || (Applicability = {}));
|
|
90
95
|
/**
|
|
91
96
|
* Classification of the control's nature, aligning with NIST SP 800-53 / SP 800-53A
|
|
92
|
-
* categories.
|
|
93
|
-
*
|
|
97
|
+
* categories.
|
|
98
|
+
*
|
|
99
|
+
* 'policy' = an authored governance statement; 'procedure' = a documented process;
|
|
100
|
+
* 'technical' = an enforced technical configuration; 'management' = a
|
|
94
101
|
* programmatic/management activity; 'operational' = a recurring operational activity (e.g.
|
|
95
|
-
* AT, IR, MA families).
|
|
96
|
-
*
|
|
102
|
+
* AT, IR, MA families).
|
|
103
|
+
*
|
|
104
|
+
* Optional: when omitted, consumers may infer heuristically from family/id but should not
|
|
105
|
+
* assume a default.
|
|
97
106
|
*/
|
|
98
107
|
export var ControlType;
|
|
99
108
|
(function (ControlType) {
|
|
@@ -128,19 +137,19 @@ export var Version;
|
|
|
128
137
|
Version["The40"] = "4.0";
|
|
129
138
|
})(Version || (Version = {}));
|
|
130
139
|
/**
|
|
131
|
-
* The type of amendment, aligned with FedRAMP deviation request categories. 'waiver': risk
|
|
132
|
-
* by Authorizing Official. 'attestation': manually verified by assessor. 'poam':
|
|
133
|
-
* tracked (no status change). 'inherited': control provided by another component or
|
|
134
|
-
* 'falsePositive': scanner incorrectly identified a finding — for compliance scans (STIG,
|
|
135
|
-
* check actually passes, so status is typically set to 'passed'; for vulnerability scans
|
|
136
|
-
* SCA), the flagged vulnerability does not apply to this system, so status is typically set
|
|
137
|
-
* 'notApplicable'. The disposition field on the requirement distinguishes false positives from
|
|
138
|
-
* genuinely not-applicable findings. 'riskAdjustment': impact score adjusted based on
|
|
139
|
-
* context (FedRAMP Risk Adjustment); does not change pass/fail status, only impact
|
|
140
|
-
* field. 'operationalRequirement': deviation required by operational constraints
|
|
141
|
-
* Operational Requirement); the finding cannot be remediated because the system requires
|
|
142
|
-
* affected functionality. Remains an open risk. Migration note: 'exception' was removed in
|
|
143
|
-
* use 'waiver' with status 'notApplicable' instead.
|
|
140
|
+
* The type of amendment, aligned with FedRAMP deviation request categories. - 'waiver': risk
|
|
141
|
+
* accepted by Authorizing Official. - 'attestation': manually verified by assessor. - 'poam':
|
|
142
|
+
* remediation tracked (no status change). - 'inherited': control provided by another component or
|
|
143
|
+
* system. - 'falsePositive': scanner incorrectly identified a finding — for compliance scans (STIG,
|
|
144
|
+
* CIS), the check actually passes, so status is typically set to 'passed'; for vulnerability scans
|
|
145
|
+
* (CVE, SCA), the flagged vulnerability does not apply to this system, so status is typically set
|
|
146
|
+
* to 'notApplicable'. The disposition field on the requirement distinguishes false positives from
|
|
147
|
+
* genuinely not-applicable findings. - 'riskAdjustment': impact score adjusted based on
|
|
148
|
+
* environmental context (FedRAMP Risk Adjustment); does not change pass/fail status, only impact
|
|
149
|
+
* via the impact field. - 'operationalRequirement': deviation required by operational constraints
|
|
150
|
+
* (FedRAMP Operational Requirement); the finding cannot be remediated because the system requires
|
|
151
|
+
* the affected functionality. Remains an open risk. Migration note: 'exception' was removed in
|
|
152
|
+
* v3.1.0 — use 'waiver' with status 'notApplicable' instead.
|
|
144
153
|
*/
|
|
145
154
|
export var OverrideType;
|
|
146
155
|
(function (OverrideType) {
|