@mitre/hdf-mappings 3.4.2 → 3.4.3

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 CHANGED
@@ -20,6 +20,7 @@ and `tags.cci` fields in HDF output.
20
20
  | Nikto | NIST SP 800-53 | Test ID string (`'1'`) |
21
21
  | ScoutSuite | NIST SP 800-53 | Rule name string |
22
22
  | AWS Config | NIST SP 800-53 | Rule identifier or rule name |
23
+ | Hipcheck | NIST SP 800-53 Rev 5 | Analysis name (`binary`, `mitre/binary`) |
23
24
 
24
25
  Go equivalents are available in `go/` subdirectories (see below).
25
26
 
@@ -207,6 +208,55 @@ const nistId2 = getAwsConfigNistControlByName('secretsmanager-scheduled-rotation
207
208
  if (awsConfigIdentifierExists('SECRETSMANAGER_SCHEDULED_ROTATION_SUCCESS_CHECK')) { /* ... */ }
208
209
  ```
209
210
 
211
+ #### Coverage tiers and semantics
212
+
213
+ The AWS Config→NIST table is regenerated (via `scripts/generate-awsconfig-mappings.mjs`) from
214
+ three tiers, in precedence order:
215
+
216
+ 1. **config-pack** — AWS Config's "Operational Best Practices for NIST 800-53" docs (Rev 4 + Rev 5).
217
+ 2. **security-hub** — AWS Security Hub's NIST 800-53 r5 standard control pages (Rev 5).
218
+ 3. **derived** — for a managed rule the authoritative tiers miss but whose name matches a strong
219
+ theme (encryption-at-rest, in-transit/TLS, logging/audit, public-access), the controls that
220
+ ≥75% of AWS's *own* same-theme mapped rules carry. Nothing is invented — controls are reused
221
+ from AWS's authoritative mappings. Rules matching no theme stay unmapped, and the
222
+ `aws-config-to-hdf` converter floors them to **CM-6** (Configuration Settings) at conversion time.
223
+
224
+ > **Interpretation.** These NIST tags are *candidate control associations for triage*, not evidence
225
+ > that a control is assessed or satisfied. A passed Config / Security Hub rule is evidence *toward*
226
+ > the tagged controls, not proof they are met — one rule rarely satisfies a control in full, and the
227
+ > derived and CM-6 tiers are coarse by design. Do not roll "rule passed" up to "tagged controls
228
+ > satisfied" in SSP / eMASS / ATO exports.
229
+
230
+ ### Hipcheck
231
+
232
+ Maps MITRE Hipcheck analysis names to NIST 800-53 Rev 5 controls. Lookups accept
233
+ the bare analysis name (`binary`) or Hipcheck's published, publisher-prefixed
234
+ form (`mitre/binary`). `NIST-ID` is a `|`-delimited list.
235
+
236
+ ```typescript
237
+ import {
238
+ getHipcheckNistControls,
239
+ hipcheckAnalysisExists,
240
+ getAllHipcheckAnalyses,
241
+ } from '@mitre/hdf-mappings';
242
+
243
+ const controls = getHipcheckNistControls('mitre/binary');
244
+ // Returns: ['SI-7', 'SR-4']
245
+
246
+ if (hipcheckAnalysisExists('typo')) { /* ... */ }
247
+
248
+ const analyses = getAllHipcheckAnalyses();
249
+ // Returns the 9 mapped Hipcheck analysis names, sorted
250
+ ```
251
+
252
+ > **Provenance.** Hipcheck publishes no analysis-to-controls crosswalk, so this
253
+ > table is a hand-curated, NIST-RMF-reviewed mapping — each row carries a
254
+ > `Rationale`. It is the single source of truth in
255
+ > `scripts/generate-hipcheck-mappings.mjs`, which writes both the Go and TS
256
+ > copies byte-identically (`--check` gates drift in CI). As with the other
257
+ > mappings, these are candidate control associations for triage, not evidence a
258
+ > control is assessed or satisfied.
259
+
210
260
  ## Go API
211
261
 
212
262
  Each mapping is also available as a Go package:
@@ -218,6 +268,7 @@ hdf-mappings/go/
218
268
  owasp/ — OWASP→NIST lookups (NISTControls)
219
269
  nessus/ — Nessus plugin→NIST lookups (NISTControls, with family+pluginID)
220
270
  nikto/ — Nikto test→NIST lookups (NISTControls)
271
+ hipcheck/ — Hipcheck analysis→NIST lookups (NISTControls, Exists, AllAnalyses)
221
272
  scoutsuite/ — ScoutSuite rule→NIST lookups (NISTControls)
222
273
  awsconfig/ — AWS Config→NIST lookups (NISTControls, GetByRuleName, GetByIdentifier)
223
274
  ```
@@ -261,7 +312,7 @@ mapping = awsconfig.GetByRuleName("secretsmanager-scheduled-rotation-success-c
261
312
  | Nessus→NIST | heimdall2 mapping tables |
262
313
  | Nikto→NIST | heimdall2 mapping tables |
263
314
  | ScoutSuite→NIST | heimdall2 mapping tables |
264
- | AWS Config→NIST | heimdall2 mapping tables |
315
+ | AWS Config→NIST | AWS Config OBP for NIST 800-53 docs + Security Hub NIST r5 standard + derived (see Coverage tiers) |
265
316
 
266
317
  ## License
267
318
 
package/dist/index.d.ts CHANGED
@@ -213,6 +213,8 @@ declare const DEFAULT_STATIC_ANALYSIS_NIST_TAGS: string[];
213
213
  declare const DEFAULT_REMEDIATION_NIST_TAGS: string[];
214
214
  /** Dependency/inventory management tools (CM-8). */
215
215
  declare const DEFAULT_COMPONENT_MANAGEMENT_NIST_TAGS: string[];
216
+ /** Configuration-compliance checks with no specific mapping (CM-6: Configuration Settings). */
217
+ declare const DEFAULT_CONFIG_MANAGEMENT_NIST_TAGS: string[];
216
218
  //#endregion
217
219
  //#region src/owasp/types.d.ts
218
220
  /**
@@ -492,5 +494,31 @@ declare function awsConfigMappedRevisions(identifier: string, ruleName: string):
492
494
  /** Get all AWS Config to NIST mappings (all revisions). */
493
495
  declare function getAllAwsConfigMappings(): AwsConfigNistMappings;
494
496
  //#endregion
495
- export { type AwsConfigNistMapping, type AwsConfigNistMappings, type CCIItem, type CCIMappings, type CweNistMapping, type CweNistMappings, DEFAULT_COMPONENT_MANAGEMENT_NIST_TAGS, DEFAULT_NIST_REVISION, DEFAULT_REMEDIATION_NIST_TAGS, DEFAULT_STATIC_ANALYSIS_NIST_TAGS, type NISTDescriptions, type NessusNistMapping, type NessusNistMappings, type NiktoNistMappings, type NistCCIMappings, type OwaspNistMapping, type OwaspNistMappings, SUPPORTED_NIST_REVISIONS, type ScoutsuiteNistMapping, type ScoutsuiteNistMappings, awsConfigIdentifierExists, awsConfigMappedRevisions, awsConfigRuleNameExists, cciExists, cweExists, getAllAwsConfigIdentifiers, getAllAwsConfigMappings, getAllAwsConfigRuleNames, getAllCCIIds, getAllCweIds, getAllCweMappings, getAllNISTIds, getAllNessusMappings, getAllNessusPluginFamilies, getAllNiktoIds, getAllNiktoMappings, getAllOwaspIds, getAllOwaspMappings, getAllScoutsuiteMappings, getAllScoutsuiteRules, getAwsConfigNistControlByIdentifier, getAwsConfigNistControlByName, getAwsConfigNistControlsBySubstring, getAwsConfigNistMappingByIdentifier, getAwsConfigNistMappingByName, getCCIDescription, getCCINistMappings, getCurrentNistRevision, getCweName, getCweNistControl, getCweNistMapping, getNISTDescription, getNISTFamily, getNessusNistControl, getNessusPluginFamilyMappings, getNiktoNistControl, getNistCCIMappings, getOwaspName, getOwaspNistControl, getOwaspNistMapping, getScoutsuiteNistControl, getScoutsuiteNistMapping, isNistStrict, nessusPluginFamilyExists, niktoExists, nistExists, nistToCci, owaspExists, resetNistRevision, scoutsuiteRuleExists, setCurrentNistRevision, setNistStrict };
497
+ //#region src/hipcheck/types.d.ts
498
+ /**
499
+ * TypeScript types for Hipcheck analysis to NIST 800-53 mappings.
500
+ */
501
+ interface HipcheckNistMapping {
502
+ Analysis: string;
503
+ 'NIST-ID': string;
504
+ Rev: number;
505
+ Rationale: string;
506
+ }
507
+ type HipcheckNistMappings = HipcheckNistMapping[];
508
+ //#endregion
509
+ //#region src/hipcheck/index.d.ts
510
+ /**
511
+ * Get the NIST 800-53 controls for a Hipcheck analysis name.
512
+ * Accepts bare ("binary") or publisher-prefixed ("mitre/binary") names.
513
+ * @returns array of control IDs, or [] if the analysis has no mapping
514
+ */
515
+ declare function getHipcheckNistControls(analysis: string): string[];
516
+ /** Check whether a Hipcheck analysis name has a NIST mapping. */
517
+ declare function hipcheckAnalysisExists(analysis: string): boolean;
518
+ /** Get all mapped Hipcheck analysis names, sorted. */
519
+ declare function getAllHipcheckAnalyses(): string[];
520
+ /** Get all Hipcheck to NIST mappings. */
521
+ declare function getAllHipcheckMappings(): HipcheckNistMappings;
522
+ //#endregion
523
+ export { type AwsConfigNistMapping, type AwsConfigNistMappings, type CCIItem, type CCIMappings, type CweNistMapping, type CweNistMappings, DEFAULT_COMPONENT_MANAGEMENT_NIST_TAGS, DEFAULT_CONFIG_MANAGEMENT_NIST_TAGS, DEFAULT_NIST_REVISION, DEFAULT_REMEDIATION_NIST_TAGS, DEFAULT_STATIC_ANALYSIS_NIST_TAGS, type HipcheckNistMapping, type HipcheckNistMappings, type NISTDescriptions, type NessusNistMapping, type NessusNistMappings, type NiktoNistMappings, type NistCCIMappings, type OwaspNistMapping, type OwaspNistMappings, SUPPORTED_NIST_REVISIONS, type ScoutsuiteNistMapping, type ScoutsuiteNistMappings, awsConfigIdentifierExists, awsConfigMappedRevisions, awsConfigRuleNameExists, cciExists, cweExists, getAllAwsConfigIdentifiers, getAllAwsConfigMappings, getAllAwsConfigRuleNames, getAllCCIIds, getAllCweIds, getAllCweMappings, getAllHipcheckAnalyses, getAllHipcheckMappings, getAllNISTIds, getAllNessusMappings, getAllNessusPluginFamilies, getAllNiktoIds, getAllNiktoMappings, getAllOwaspIds, getAllOwaspMappings, getAllScoutsuiteMappings, getAllScoutsuiteRules, getAwsConfigNistControlByIdentifier, getAwsConfigNistControlByName, getAwsConfigNistControlsBySubstring, getAwsConfigNistMappingByIdentifier, getAwsConfigNistMappingByName, getCCIDescription, getCCINistMappings, getCurrentNistRevision, getCweName, getCweNistControl, getCweNistMapping, getHipcheckNistControls, getNISTDescription, getNISTFamily, getNessusNistControl, getNessusPluginFamilyMappings, getNiktoNistControl, getNistCCIMappings, getOwaspName, getOwaspNistControl, getOwaspNistMapping, getScoutsuiteNistControl, getScoutsuiteNistMapping, hipcheckAnalysisExists, isNistStrict, nessusPluginFamilyExists, niktoExists, nistExists, nistToCci, owaspExists, resetNistRevision, scoutsuiteRuleExists, setCurrentNistRevision, setNistStrict };
496
524
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/cci/types.ts","../src/cci/index.ts","../src/nist/types.ts","../src/nist/index.ts","../src/owasp/types.ts","../src/owasp/index.ts","../src/cwe/types.ts","../src/cwe/index.ts","../src/nessus/types.ts","../src/nessus/index.ts","../src/nikto/types.ts","../src/nikto/index.ts","../src/scoutsuite/types.ts","../src/scoutsuite/index.ts","../src/awsconfig/types.ts","../src/awsconfig/index.ts"],"mappings":";;;;UAGiB;;EAEf;;EAEA;;;;;KAMU,cAAc,eAAe;;;;;KAM7B,kBAAkB;;;;;;;;;;;;;;;;;;iBCId,kBAAkB;;;;;;;;;;;;;iBAqBlB,mBAAmB;;;;;;;;;;;;iBAoBnB;;;;;;;;;;;;;;iBAiBA,UAAU;;;;;;;;;;;;;;iBA8BV,mBAAmB;;;;;;;;;;;;;;iBAqBnB,UAAU;;;;;;KCjId,mBAAmB;;;;;;;;;;;;;;;;cCiBlB;;cAGA;;iBAKG;;;;;iBAQA,uBAAuB;;iBAUvB;;iBAOA;;;;;;iBASA,cAAc;;;;;;;;;;;;;iBAgBd,mBAAmB;;;;;;;;;;;;iBAmBnB;;;;;;;;;;;;;;iBAiBA,WAAW;;;;;;;;;;;;;;;;iBAuBX,cAAc;;;;;;;;;;;cAgCjB;;cAGA;;cAGA;;;;;;UC3KI;EACf;EACA;EACA;EACA;EACA;;KAGU,oBAAoB;;;;;;;;;;;;;;;iBCYhB,oBAAoB,kBAAkB;;;;;;;;;;;;;iBAoBtC,oBAAoB;;;;;;;;;;;;;iBAiBpB,aAAa;;;;;;;;;;;;iBAgBb;;;;;;;;;;;;;;iBAiBA,YAAY;;;;;;;;;;;;iBAmBZ,uBAAuB;;;;;;UC7GtB;EACf;EACA;EACA;EACA;EACA;;KAGU,kBAAkB;;;;iBCiBd,kBACd,eACA,eACC;;iBAKa,kBAAkB,eAAe;;iBAKjC,WAAW,eAAe;;iBAK1B,aAAa;;iBAKb,UAAU,eAAe;;iBAKzB,qBAAqB;;;;;;UCrDpB;EACf;EACA;EACA;;KAGU,qBAAqB;;;;;;;;;iBCKjB,qBACd,sBACA;;;;;;iBAwBc,8BACd,uBACC;;;;;iBAQa;;;;;;iBAUA,yBAAyB;;;;;iBAQzB,wBAAwB;;;;;;KCjE5B,oBAAoB;;;;;;;;iBCUhB,oBAAoB;;;;;iBASpB;;;;;;iBASA,YAAY;;;;;iBASZ,uBAAuB;;;;;;UCrCtB;EACf;EACA;;KAGU,yBAAyB;;;;;;;;iBCQrB,yBAAyB,eAAe;;;;;;iBASxC,yBAAyB;;;;;iBASzB;;;;;;iBASA,qBAAqB;;;;;iBAQrB,4BAA4B;;;;;;UChD3B;EACf;EACA;EACA;EACA;;KAGU,wBAAwB;;;;iBCsBpB,oCACd,oBACA,eACC;;iBAKa,8BACd,kBACA,eACC;;iBAKa,oCACd,oBACA;;iBAMc,8BACd,kBACA;;;;;;;iBAWc,oCACd,cACA;;iBAoBc,2BAA2B;;iBAK3B,yBAAyB;;iBAKzB,0BAA0B,oBAAoB;;iBAK9C,wBAAwB,kBAAkB;;;;;;;;iBAW1C,yBAAyB,oBAAoB;;iBAa7C,2BAA2B"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/cci/types.ts","../src/cci/index.ts","../src/nist/types.ts","../src/nist/index.ts","../src/owasp/types.ts","../src/owasp/index.ts","../src/cwe/types.ts","../src/cwe/index.ts","../src/nessus/types.ts","../src/nessus/index.ts","../src/nikto/types.ts","../src/nikto/index.ts","../src/scoutsuite/types.ts","../src/scoutsuite/index.ts","../src/awsconfig/types.ts","../src/awsconfig/index.ts","../src/hipcheck/types.ts","../src/hipcheck/index.ts"],"mappings":";;;;UAGiB;;EAEf;;EAEA;;;;;KAMU,cAAc,eAAe;;;;;KAM7B,kBAAkB;;;;;;;;;;;;;;;;;;iBCId,kBAAkB;;;;;;;;;;;;;iBAqBlB,mBAAmB;;;;;;;;;;;;iBAoBnB;;;;;;;;;;;;;;iBAiBA,UAAU;;;;;;;;;;;;;;iBA8BV,mBAAmB;;;;;;;;;;;;;;iBAqBnB,UAAU;;;;;;KCjId,mBAAmB;;;;;;;;;;;;;;;;cCiBlB;;cAGA;;iBAKG;;;;;iBAQA,uBAAuB;;iBAUvB;;iBAOA;;;;;;iBASA,cAAc;;;;;;;;;;;;;iBAgBd,mBAAmB;;;;;;;;;;;;iBAmBnB;;;;;;;;;;;;;;iBAiBA,WAAW;;;;;;;;;;;;;;;;iBAuBX,cAAc;;;;;;;;;;;cAgCjB;;cAGA;;cAGA;;cAGA;;;;;;UC9KI;EACf;EACA;EACA;EACA;EACA;;KAGU,oBAAoB;;;;;;;;;;;;;;;iBCYhB,oBAAoB,kBAAkB;;;;;;;;;;;;;iBAoBtC,oBAAoB;;;;;;;;;;;;;iBAiBpB,aAAa;;;;;;;;;;;;iBAgBb;;;;;;;;;;;;;;iBAiBA,YAAY;;;;;;;;;;;;iBAmBZ,uBAAuB;;;;;;UC7GtB;EACf;EACA;EACA;EACA;EACA;;KAGU,kBAAkB;;;;iBCiBd,kBACd,eACA,eACC;;iBAKa,kBAAkB,eAAe;;iBAKjC,WAAW,eAAe;;iBAK1B,aAAa;;iBAKb,UAAU,eAAe;;iBAKzB,qBAAqB;;;;;;UCrDpB;EACf;EACA;EACA;;KAGU,qBAAqB;;;;;;;;;iBCKjB,qBACd,sBACA;;;;;;iBAwBc,8BACd,uBACC;;;;;iBAQa;;;;;;iBAUA,yBAAyB;;;;;iBAQzB,wBAAwB;;;;;;KCjE5B,oBAAoB;;;;;;;;iBCUhB,oBAAoB;;;;;iBASpB;;;;;;iBASA,YAAY;;;;;iBASZ,uBAAuB;;;;;;UCrCtB;EACf;EACA;;KAGU,yBAAyB;;;;;;;;iBCQrB,yBAAyB,eAAe;;;;;;iBASxC,yBAAyB;;;;;iBASzB;;;;;;iBASA,qBAAqB;;;;;iBAQrB,4BAA4B;;;;;;UChD3B;EACf;EACA;EACA;EACA;;KAGU,wBAAwB;;;;iBCsBpB,oCACd,oBACA,eACC;;iBAKa,8BACd,kBACA,eACC;;iBAKa,oCACd,oBACA;;iBAMc,8BACd,kBACA;;;;;;;iBAWc,oCACd,cACA;;iBAoBc,2BAA2B;;iBAK3B,yBAAyB;;iBAKzB,0BAA0B,oBAAoB;;iBAK9C,wBAAwB,kBAAkB;;;;;;;;iBAW1C,yBAAyB,oBAAoB;;iBAa7C,2BAA2B;;;;;;UC/H1B;EACf;EACA;EACA;EACA;;KAGU,uBAAuB;;;;;;;;iBCqBnB,wBAAwB;;iBAUxB,uBAAuB;;iBAKvB;;iBAKA,0BAA0B"}