@mitre/hdf-converters 2.6.50 → 2.6.54

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.
Files changed (54) hide show
  1. package/README.md +19 -17
  2. package/lib/index.d.ts +2 -0
  3. package/lib/index.js +2 -0
  4. package/lib/index.js.map +1 -1
  5. package/lib/package.json +2 -2
  6. package/lib/src/ckl-mapper/checklist-jsonix-converter.d.ts +72 -0
  7. package/lib/src/ckl-mapper/checklist-jsonix-converter.js +123 -0
  8. package/lib/src/ckl-mapper/checklist-jsonix-converter.js.map +1 -0
  9. package/lib/src/ckl-mapper/checklist-mapper.d.ts +19 -0
  10. package/lib/src/ckl-mapper/checklist-mapper.js +292 -0
  11. package/lib/src/ckl-mapper/checklist-mapper.js.map +1 -0
  12. package/lib/src/ckl-mapper/jsonixMapping.d.ts +110 -0
  13. package/lib/src/ckl-mapper/jsonixMapping.js +586 -0
  14. package/lib/src/ckl-mapper/jsonixMapping.js.map +1 -0
  15. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.d.ts +8 -20
  16. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js +77 -121
  17. package/lib/src/converters-from-hdf/splunk/reverse-splunk-mapper.js.map +1 -1
  18. package/lib/src/conveyor-mapper.d.ts +14 -0
  19. package/lib/src/conveyor-mapper.js +188 -0
  20. package/lib/src/conveyor-mapper.js.map +1 -0
  21. package/lib/src/dbprotect-mapper.d.ts +5 -2
  22. package/lib/src/dbprotect-mapper.js +21 -20
  23. package/lib/src/dbprotect-mapper.js.map +1 -1
  24. package/lib/src/jsonix-converter.d.ts +5 -0
  25. package/lib/src/jsonix-converter.js +16 -0
  26. package/lib/src/jsonix-converter.js.map +1 -0
  27. package/lib/src/jsonix-intermediate-converter.d.ts +4 -0
  28. package/lib/src/jsonix-intermediate-converter.js +8 -0
  29. package/lib/src/jsonix-intermediate-converter.js.map +1 -0
  30. package/lib/src/splunk-mapper.d.ts +13 -12
  31. package/lib/src/splunk-mapper.js +110 -99
  32. package/lib/src/splunk-mapper.js.map +1 -1
  33. package/lib/src/utils/fingerprinting.d.ts +2 -0
  34. package/lib/src/utils/fingerprinting.js +9 -0
  35. package/lib/src/utils/fingerprinting.js.map +1 -1
  36. package/lib/src/utils/splunk-tools.d.ts +5 -0
  37. package/lib/src/utils/splunk-tools.js +73 -0
  38. package/lib/src/utils/splunk-tools.js.map +1 -0
  39. package/lib/types/splunk-config-types.d.ts +13 -0
  40. package/lib/types/splunk-config-types.js +3 -0
  41. package/lib/types/splunk-config-types.js.map +1 -0
  42. package/lib/{src/converters-from-hdf/splunk → types}/splunk-control-types.d.ts +1 -1
  43. package/lib/types/splunk-control-types.js.map +1 -0
  44. package/lib/{src/converters-from-hdf/splunk → types}/splunk-profile-types.d.ts +1 -1
  45. package/lib/types/splunk-profile-types.js.map +1 -0
  46. package/lib/types/splunk-report-types.js.map +1 -0
  47. package/package.json +2 -2
  48. package/lib/src/converters-from-hdf/splunk/splunk-control-types.js.map +0 -1
  49. package/lib/src/converters-from-hdf/splunk/splunk-profile-types.js.map +0 -1
  50. package/lib/src/converters-from-hdf/splunk/splunk-report-types.js.map +0 -1
  51. /package/lib/{src/converters-from-hdf/splunk → types}/splunk-control-types.js +0 -0
  52. /package/lib/{src/converters-from-hdf/splunk → types}/splunk-profile-types.js +0 -0
  53. /package/lib/{src/converters-from-hdf/splunk → types}/splunk-report-types.d.ts +0 -0
  54. /package/lib/{src/converters-from-hdf/splunk → types}/splunk-report-types.js +0 -0
package/README.md CHANGED
@@ -8,23 +8,25 @@ HDF Converters supplies several methods to convert various types of security too
8
8
  1. [**asff-mapper**] - AWS Security Finding Format JSON file, Prowler-derived AWS Security Finding Format results from concatenated JSON blobs, and Trivy-derived AWS Security Finding Format results from concatenated JSON blobs
9
9
  2. [**aws-config-mapper**] - AWS Config
10
10
  3. [**burpsuite-mapper**] - BurpSuite Pro XML file
11
- 4. [**dbprotect-mapper**] - DBProtect report in "Check Results Details" XML format
12
- 5. [**fortify-mapper**] - Fortify results FVDL file
13
- 6. [**ionchannel-mapper**] - SBOM data from Ion Channel
14
- 7. [**jfrog-xray-mapper**] - JFrog Xray results JSON file
15
- 8. [**nessus-mapper**] - Nessus XML results file
16
- 9. [**netsparker-mapper**] - Netsparker XML results file
17
- 10. [**nikto-mapper**] - Nikto results JSON file
18
- 11. [**prisma-mapper**] - Prisma Cloud Scan Report CSV file
19
- 12. [**sarif-mapper**] - SARIF JSON file
20
- 13. [**scoutsuite-mapper**] - ScoutSuite results from a Javascript object
21
- 14. [**snyk-mapper**] - Snyk results JSON file
22
- 15. [**sonarqube-mapper**] - SonarQube vulnerabilities for the specified project name and optional branch or pull/merge request ID name from an API
23
- 16. [**splunk-mapper**] - Splunk instance
24
- 17. [**twistlock-mapper**] - Twistlock CLI output file
25
- 18. [**veracode-mapper**] - Veracode Scan Results XML file
26
- 19. [**xccdf-results-mapper**] - SCAP client XCCDF-Results XML report
27
- 20. [**zap-mapper**] - OWASP ZAP results JSON
11
+ 4. [**checklist-mapper**] - Checlist Mapper format
12
+ 5. [**conveyor-mapper**] - Conveyor JSON file
13
+ 6. [**dbprotect-mapper**] - DBProtect report in "Check Results Details" XML format
14
+ 7. [**fortify-mapper**] - Fortify results FVDL file
15
+ 8. [**ionchannel-mapper**] - SBOM data from Ion Channel
16
+ 9. [**jfrog-xray-mapper**] - JFrog Xray results JSON file
17
+ 10. [**nessus-mapper**] - Nessus XML results file
18
+ 11. [**netsparker-mapper**] - Netsparker XML results file
19
+ 12. [**nikto-mapper**] - Nikto results JSON file
20
+ 13. [**prisma-mapper**] - Prisma Cloud Scan Report CSV file
21
+ 14. [**sarif-mapper**] - SARIF JSON file
22
+ 15. [**scoutsuite-mapper**] - ScoutSuite results from a Javascript object
23
+ 16. [**snyk-mapper**] - Snyk results JSON file
24
+ 17. [**sonarqube-mapper**] - SonarQube vulnerabilities for the specified project name and optional branch or pull/merge request ID name from an API
25
+ 18. [**splunk-mapper**] - Splunk instance
26
+ 19. [**twistlock-mapper**] - Twistlock CLI output file
27
+ 20. [**veracode-mapper**] - Veracode Scan Results XML file
28
+ 21. [**xccdf-results-mapper**] - SCAP client XCCDF-Results XML report
29
+ 22. [**zap-mapper**] - OWASP ZAP results JSON
28
30
 
29
31
  ### NOTICE
30
32
 
package/lib/index.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  export { ASFFResults } from './src/asff-mapper/asff-mapper';
2
2
  export * from './src/aws-config-mapper';
3
3
  export * from './src/burpsuite-mapper';
4
+ export * from './src/ckl-mapper/checklist-mapper';
4
5
  export * from './src/converters-from-hdf/asff/reverse-asff-mapper';
5
6
  export * from './src/converters-from-hdf/splunk/reverse-splunk-mapper';
6
7
  export * from './src/converters-from-hdf/xccdf/reverse-xccdf-mapper';
8
+ export * from './src/conveyor-mapper';
7
9
  export * from './src/dbprotect-mapper';
8
10
  export * from './src/fortify-mapper';
9
11
  export * from './src/gosec-mapper';
package/lib/index.js CHANGED
@@ -31,9 +31,11 @@ var asff_mapper_1 = require("./src/asff-mapper/asff-mapper");
31
31
  Object.defineProperty(exports, "ASFFResults", { enumerable: true, get: function () { return asff_mapper_1.ASFFResults; } });
32
32
  __exportStar(require("./src/aws-config-mapper"), exports);
33
33
  __exportStar(require("./src/burpsuite-mapper"), exports);
34
+ __exportStar(require("./src/ckl-mapper/checklist-mapper"), exports);
34
35
  __exportStar(require("./src/converters-from-hdf/asff/reverse-asff-mapper"), exports);
35
36
  __exportStar(require("./src/converters-from-hdf/splunk/reverse-splunk-mapper"), exports);
36
37
  __exportStar(require("./src/converters-from-hdf/xccdf/reverse-xccdf-mapper"), exports);
38
+ __exportStar(require("./src/conveyor-mapper"), exports);
37
39
  __exportStar(require("./src/dbprotect-mapper"), exports);
38
40
  __exportStar(require("./src/fortify-mapper"), exports);
39
41
  __exportStar(require("./src/gosec-mapper"), exports);
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA0D;AAAlD,0GAAA,WAAW,OAAA;AACnB,0DAAwC;AACxC,yDAAuC;AACvC,qFAAmE;AACnE,yFAAuE;AACvE,uFAAqE;AACrE,yDAAuC;AACvC,uDAAqC;AACrC,qDAAmC;AACnC,0DAAwC;AACxC,0DAAwC;AACxC,4FAA4E;AAC5E,wFAAwE;AACxE,wFAAwE;AACxE,0GAA0F;AAC1F,4FAA4E;AAC5E,wFAAwE;AACxE,4FAA4E;AAC5E,sGAAsF;AACtF,sDAAoC;AACpC,0DAAwC;AACxC,qDAAmC;AACnC,sDAAoC;AACpC,qDAAmC;AACnC,0DAAwC;AACxC,oDAAkC;AAClC,yDAAuC;AACvC,sDAAoC;AACpC,yDAAuC;AACvC,2DAAyC;AACzC,6DAA2C;AAC3C,wDAAsC;AACtC,6DAA2C;AAC3C,mDAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAA0D;AAAlD,0GAAA,WAAW,OAAA;AACnB,0DAAwC;AACxC,yDAAuC;AACvC,oEAAkD;AAClD,qFAAmE;AACnE,yFAAuE;AACvE,uFAAqE;AACrE,wDAAsC;AACtC,yDAAuC;AACvC,uDAAqC;AACrC,qDAAmC;AACnC,0DAAwC;AACxC,0DAAwC;AACxC,4FAA4E;AAC5E,wFAAwE;AACxE,wFAAwE;AACxE,0GAA0F;AAC1F,4FAA4E;AAC5E,wFAAwE;AACxE,4FAA4E;AAC5E,sGAAsF;AACtF,sDAAoC;AACpC,0DAAwC;AACxC,qDAAmC;AACnC,sDAAoC;AACpC,qDAAmC;AACnC,0DAAwC;AACxC,oDAAkC;AAClC,yDAAuC;AACvC,sDAAoC;AACpC,yDAAuC;AACvC,2DAAyC;AACzC,6DAA2C;AAC3C,wDAAsC;AACtC,6DAA2C;AAC3C,mDAAiC"}
package/lib/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mitre/hdf-converters",
3
- "version": "2.6.50",
3
+ "version": "2.6.54",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Converter util library used to transform various scan results into HDF format",
6
6
  "files": [
@@ -26,7 +26,7 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@aws-sdk/client-config-service": "^3.95.0",
29
- "@mitre/splunk-sdk-no-env": "^1.10.0",
29
+ "@mitre/jsonix": "^3.0.6",
30
30
  "@types/csv2json": "^1.4.2",
31
31
  "@types/ms": "^0.7.31",
32
32
  "@types/mustache": "^4.1.2",
@@ -0,0 +1,72 @@
1
+ import { Asset, Checklist, Sidata, Stigdata, Vuln } from '../../types/checklistJsonix';
2
+ import { JsonixIntermediateConverter } from '../jsonix-intermediate-converter';
3
+ export declare type ChecklistObject = {
4
+ asset: ChecklistAsset;
5
+ stigs: ChecklistStig[];
6
+ jsonixData: Checklist;
7
+ };
8
+ declare type ChecklistAsset = Asset;
9
+ declare type ChecklistStig = {
10
+ header: StigHeader;
11
+ vulns: ChecklistVuln[];
12
+ };
13
+ declare type StigHeader = {
14
+ version: string;
15
+ classification: 'UNCLASSIFIED' | 'UNCLASSIFIED//FOR OFFICIAL USE ONLY' | 'CUI';
16
+ customname?: string;
17
+ stigid: string;
18
+ description: string;
19
+ filename: string;
20
+ releaseinfo?: string;
21
+ title: string;
22
+ uuid: string;
23
+ notice?: string;
24
+ source?: string;
25
+ };
26
+ export declare type ChecklistVuln = Omit<Vuln, 'stigdata' | 'status'> & {
27
+ status: StatusMapping;
28
+ vulnNum: string;
29
+ severity: Severity;
30
+ groupTitle: string;
31
+ ruleId: string;
32
+ ruleVersion: string;
33
+ ruleTitle: string;
34
+ vulnDiscuss: string;
35
+ iaControls: string;
36
+ checkContent: string;
37
+ fixText: string;
38
+ falsePositives: string;
39
+ falseNegatives: string;
40
+ documentable: boolean;
41
+ mitigations: string;
42
+ potentialImpact: string;
43
+ thirdPartyTools: string;
44
+ mitigationControl: string;
45
+ responsibility: string;
46
+ securityOverrideGuidance: string;
47
+ checkContentRef: string;
48
+ weight: string;
49
+ class: 'Unclass' | 'FOUO' | 'CUI';
50
+ stigRef: string;
51
+ targetKey: string;
52
+ stigUuid: string;
53
+ legacyId: string;
54
+ cciRef: string;
55
+ };
56
+ declare enum StatusMapping {
57
+ NotAFinding = "Passed",
58
+ Open = "Failed",
59
+ Not_Applicable = "Not Applicable",
60
+ Not_Reviewed = "Not Reviewed"
61
+ }
62
+ export declare enum Severity {
63
+ Empty = "",
64
+ High = "high",
65
+ Low = "low",
66
+ Medium = "medium"
67
+ }
68
+ export declare class ChecklistJsonixConverter extends JsonixIntermediateConverter<Checklist, ChecklistObject> {
69
+ getValueFromAttributeName<T extends Stigdata | Sidata>(data: T[], tag: string): string;
70
+ toIntermediateObject(jsonixData: Checklist): ChecklistObject;
71
+ }
72
+ export {};
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ChecklistJsonixConverter = exports.Severity = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const jsonix_intermediate_converter_1 = require("../jsonix-intermediate-converter");
9
+ var StatusMapping;
10
+ (function (StatusMapping) {
11
+ StatusMapping["NotAFinding"] = "Passed";
12
+ StatusMapping["Open"] = "Failed";
13
+ StatusMapping["Not_Applicable"] = "Not Applicable";
14
+ StatusMapping["Not_Reviewed"] = "Not Reviewed";
15
+ })(StatusMapping || (StatusMapping = {}));
16
+ var Severity;
17
+ (function (Severity) {
18
+ Severity["Empty"] = "";
19
+ Severity["High"] = "high";
20
+ Severity["Low"] = "low";
21
+ Severity["Medium"] = "medium";
22
+ })(Severity = exports.Severity || (exports.Severity = {}));
23
+ class ChecklistJsonixConverter extends jsonix_intermediate_converter_1.JsonixIntermediateConverter {
24
+ getValueFromAttributeName(data, tag) {
25
+ let keyName = 'vulnattribute';
26
+ let dataName = 'attributedata';
27
+ if (data.every((o) => 'sidname' in o)) {
28
+ keyName = 'sidname';
29
+ dataName = 'siddata';
30
+ }
31
+ const results = data.filter((attribute) => {
32
+ return lodash_1.default.get(attribute, keyName) == tag;
33
+ });
34
+ return results.map((result) => lodash_1.default.get(result, dataName)).join('; ');
35
+ }
36
+ toIntermediateObject(jsonixData) {
37
+ const asset = {
38
+ role: lodash_1.default.get(jsonixData, 'value.asset.role'),
39
+ assettype: lodash_1.default.get(jsonixData, 'value.asset.assettype'),
40
+ hostname: lodash_1.default.get(jsonixData, 'value.asset.hostname'),
41
+ hostip: lodash_1.default.get(jsonixData, 'value.asset.hostip'),
42
+ hostmac: lodash_1.default.get(jsonixData, 'value.asset.hostmac'),
43
+ hostfqdn: lodash_1.default.get(jsonixData, 'value.asset.hostfqdn'),
44
+ marking: lodash_1.default.get(jsonixData, 'value.asset.marking'),
45
+ targetcomment: lodash_1.default.get(jsonixData, 'value.asset.targetcomment'),
46
+ techarea: lodash_1.default.get(jsonixData, 'value.asset.techarea'),
47
+ targetkey: lodash_1.default.get(jsonixData, 'value.asset.targetkey'),
48
+ webordatabase: lodash_1.default.get(jsonixData, 'value.asset.webordatabase'),
49
+ webdbsite: lodash_1.default.get(jsonixData, 'value.asset.webdbsite'),
50
+ webdbinstance: lodash_1.default.get(jsonixData, 'value.asset.webdbinstance')
51
+ };
52
+ const rawStigs = lodash_1.default.get(jsonixData, 'value.stigs.istig');
53
+ const stigs = [];
54
+ for (const stig of rawStigs) {
55
+ const stigInfo = lodash_1.default.get(stig, 'stiginfo.sidata');
56
+ const header = {
57
+ version: this.getValueFromAttributeName(stigInfo, 'version'),
58
+ classification: this.getValueFromAttributeName(stigInfo, 'classification'),
59
+ customname: this.getValueFromAttributeName(stigInfo, 'customname'),
60
+ stigid: this.getValueFromAttributeName(stigInfo, 'stigid'),
61
+ description: this.getValueFromAttributeName(stigInfo, 'description'),
62
+ filename: this.getValueFromAttributeName(stigInfo, 'filename'),
63
+ releaseinfo: this.getValueFromAttributeName(stigInfo, 'releaseinfo'),
64
+ title: this.getValueFromAttributeName(stigInfo, 'title'),
65
+ uuid: this.getValueFromAttributeName(stigInfo, 'uuid'),
66
+ notice: this.getValueFromAttributeName(stigInfo, 'notice'),
67
+ source: this.getValueFromAttributeName(stigInfo, 'source')
68
+ };
69
+ const checklistVulns = [];
70
+ const vulns = lodash_1.default.get(stig, 'vuln');
71
+ for (const vuln of vulns) {
72
+ const stigdata = lodash_1.default.get(vuln, 'stigdata');
73
+ const checklistVuln = {
74
+ status: StatusMapping[lodash_1.default.get(vuln, 'status')],
75
+ findingdetails: lodash_1.default.get(vuln, 'findingdetails'),
76
+ comments: lodash_1.default.get(vuln, 'comments'),
77
+ severityoverride: lodash_1.default.get(vuln, 'severityoverride'),
78
+ severityjustification: lodash_1.default.get(vuln, 'severityjustification'),
79
+ vulnNum: this.getValueFromAttributeName(stigdata, 'Vuln_Num'),
80
+ severity: this.getValueFromAttributeName(stigdata, 'Severity'),
81
+ groupTitle: this.getValueFromAttributeName(stigdata, 'Group_Title'),
82
+ ruleId: this.getValueFromAttributeName(stigdata, 'Rule_ID'),
83
+ ruleVersion: this.getValueFromAttributeName(stigdata, 'Rule_Ver'),
84
+ ruleTitle: this.getValueFromAttributeName(stigdata, 'Rule_Title'),
85
+ vulnDiscuss: this.getValueFromAttributeName(stigdata, 'Vuln_Discuss'),
86
+ iaControls: this.getValueFromAttributeName(stigdata, 'IA_Controls'),
87
+ checkContent: this.getValueFromAttributeName(stigdata, 'Check_Content'),
88
+ fixText: this.getValueFromAttributeName(stigdata, 'Fix_Text'),
89
+ falsePositives: this.getValueFromAttributeName(stigdata, 'False_Positives'),
90
+ falseNegatives: this.getValueFromAttributeName(stigdata, 'False_Negatives'),
91
+ documentable: this.getValueFromAttributeName(stigdata, 'Documentable'),
92
+ mitigations: this.getValueFromAttributeName(stigdata, 'Mitigations'),
93
+ potentialImpact: this.getValueFromAttributeName(stigdata, 'Potential_Impact'),
94
+ thirdPartyTools: this.getValueFromAttributeName(stigdata, 'Third_Party_Tools'),
95
+ mitigationControl: this.getValueFromAttributeName(stigdata, 'Mitigation_Control'),
96
+ responsibility: this.getValueFromAttributeName(stigdata, 'Responsibility'),
97
+ securityOverrideGuidance: this.getValueFromAttributeName(stigdata, 'Security_Override_Guidance'),
98
+ checkContentRef: this.getValueFromAttributeName(stigdata, 'Check_Content_Ref'),
99
+ weight: this.getValueFromAttributeName(stigdata, 'Weight'),
100
+ class: this.getValueFromAttributeName(stigdata, 'Class'),
101
+ stigRef: this.getValueFromAttributeName(stigdata, 'STIGRef'),
102
+ targetKey: this.getValueFromAttributeName(stigdata, 'TargetKey'),
103
+ stigUuid: this.getValueFromAttributeName(stigdata, 'STIG_UUID'),
104
+ legacyId: this.getValueFromAttributeName(stigdata, 'LEGACY_ID'),
105
+ cciRef: this.getValueFromAttributeName(stigdata, 'CCI_REF')
106
+ };
107
+ checklistVulns.push(checklistVuln);
108
+ }
109
+ stigs.push({
110
+ header: header,
111
+ vulns: checklistVulns
112
+ });
113
+ }
114
+ const checklistObject = {
115
+ asset: asset,
116
+ stigs: stigs,
117
+ jsonixData: jsonixData
118
+ };
119
+ return checklistObject;
120
+ }
121
+ }
122
+ exports.ChecklistJsonixConverter = ChecklistJsonixConverter;
123
+ //# sourceMappingURL=checklist-jsonix-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checklist-jsonix-converter.js","sourceRoot":"","sources":["../../../src/ckl-mapper/checklist-jsonix-converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { ExecJSON } from 'inspecjs';
2
+ import { Checklist } from '../../types/checklistJsonix';
3
+ import { BaseConverter, ILookupPath, MappedTransform } from '../base-converter';
4
+ import { ChecklistJsonixConverter, ChecklistObject } from './checklist-jsonix-converter';
5
+ export declare class ChecklistResults extends ChecklistJsonixConverter {
6
+ checklistXml: string;
7
+ jsonixData: Checklist;
8
+ checklistObject: ChecklistObject;
9
+ withRaw: boolean;
10
+ constructor(checklistXml: string, withRaw?: boolean);
11
+ toHdf(): ExecJSON.Execution;
12
+ }
13
+ export declare class ChecklistMapper extends BaseConverter {
14
+ withRaw: boolean;
15
+ mappings: MappedTransform<ExecJSON.Execution & {
16
+ passthrough: unknown;
17
+ }, ILookupPath>;
18
+ constructor(checklistObject: ChecklistObject, withRaw?: boolean);
19
+ }
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.ChecklistMapper = exports.ChecklistResults = void 0;
30
+ const inspecjs_1 = require("inspecjs");
31
+ const lodash_1 = __importDefault(require("lodash"));
32
+ const package_json_1 = require("../../package.json");
33
+ const base_converter_1 = require("../base-converter");
34
+ const CciNistMapping_1 = require("../mappings/CciNistMapping");
35
+ const global_1 = require("../utils/global");
36
+ const checklist_jsonix_converter_1 = require("./checklist-jsonix-converter");
37
+ const checklistMapping = __importStar(require("./jsonixMapping"));
38
+ var ImpactMapping;
39
+ (function (ImpactMapping) {
40
+ ImpactMapping[ImpactMapping["high"] = 0.7] = "high";
41
+ ImpactMapping[ImpactMapping["medium"] = 0.5] = "medium";
42
+ ImpactMapping[ImpactMapping["low"] = 0.3] = "low";
43
+ })(ImpactMapping || (ImpactMapping = {}));
44
+ const CCI_NIST_MAPPING = new CciNistMapping_1.CciNistMapping();
45
+ function cciRef(input) {
46
+ return input.split('; ');
47
+ }
48
+ function nistTag(input) {
49
+ const identifiers = cciRef(input);
50
+ return CCI_NIST_MAPPING.nistFilter(identifiers, global_1.DEFAULT_STATIC_CODE_ANALYSIS_NIST_TAGS);
51
+ }
52
+ function findSeverity(vuln) {
53
+ if (vuln.severityoverride) {
54
+ return vuln.severityoverride;
55
+ }
56
+ return vuln.severity;
57
+ }
58
+ function transformImpact(vuln) {
59
+ if (vuln.status === 'Not Applicable')
60
+ return 0.0;
61
+ const severity = findSeverity(vuln);
62
+ const impact = ImpactMapping[severity.toLowerCase()];
63
+ if (!impact)
64
+ throw new Error(`Severity "${severity}" does not match low, medium, or high, please check severity for ${vuln.vulnNum}`);
65
+ return impact;
66
+ }
67
+ function getStatus(input) {
68
+ const status = input.toLowerCase();
69
+ switch (status) {
70
+ case 'notafinding':
71
+ case 'passed':
72
+ return inspecjs_1.ExecJSON.ControlResultStatus.Passed;
73
+ case 'open':
74
+ case 'failed':
75
+ return inspecjs_1.ExecJSON.ControlResultStatus.Failed;
76
+ case 'error':
77
+ return inspecjs_1.ExecJSON.ControlResultStatus.Error;
78
+ default:
79
+ return inspecjs_1.ExecJSON.ControlResultStatus.Skipped;
80
+ }
81
+ }
82
+ function parseFindingDetails(input) {
83
+ const findings = input;
84
+ const results = [];
85
+ const statusSet = ['passed', 'failed', 'skipped', 'error'];
86
+ for (const finding of findings) {
87
+ if (!finding.code_desc) {
88
+ results.push({
89
+ status: finding.status,
90
+ code_desc: finding.code_desc,
91
+ start_time: finding.start_time
92
+ });
93
+ }
94
+ else {
95
+ for (const details of finding.code_desc.split('--------------------------------\n')) {
96
+ let code_desc;
97
+ let status;
98
+ let message = '';
99
+ const [findingStatus, descAndMessage] = details.split(/\n(.*)/s, 2);
100
+ if (statusSet.includes(findingStatus)) {
101
+ const indexOfExpected = descAndMessage.indexOf('\nexpected');
102
+ if (indexOfExpected > 0) {
103
+ code_desc = descAndMessage.slice(0, indexOfExpected - 1);
104
+ message = descAndMessage.slice(indexOfExpected);
105
+ status = getStatus(findingStatus);
106
+ }
107
+ else {
108
+ code_desc = descAndMessage;
109
+ status = getStatus(findingStatus);
110
+ }
111
+ }
112
+ else {
113
+ code_desc = details;
114
+ status = finding.status;
115
+ }
116
+ results.push({
117
+ code_desc,
118
+ status,
119
+ message: message ? message : null,
120
+ start_time: ''
121
+ });
122
+ }
123
+ }
124
+ }
125
+ return results;
126
+ }
127
+ class ChecklistResults extends checklist_jsonix_converter_1.ChecklistJsonixConverter {
128
+ constructor(checklistXml, withRaw = false) {
129
+ super(checklistXml);
130
+ this.checklistXml = checklistXml;
131
+ this.withRaw = withRaw;
132
+ this.jsonixData = super.toJsonix(checklistMapping.jsonixMapping);
133
+ this.checklistObject = super.toIntermediateObject(this.jsonixData);
134
+ }
135
+ toHdf() {
136
+ var _a;
137
+ const numberOfStigs = this.checklistObject.stigs.length;
138
+ if (numberOfStigs === 1) {
139
+ const defaultChecklist = new ChecklistMapper(this.checklistObject);
140
+ return defaultChecklist.toHdf();
141
+ }
142
+ else {
143
+ const checklist = new ChecklistMapper(this.checklistObject);
144
+ const original = checklist.toHdf();
145
+ const parentProfileName = 'Parent Profile';
146
+ const parent_profile = {
147
+ name: parentProfileName,
148
+ version: package_json_1.version,
149
+ supports: [],
150
+ attributes: [],
151
+ groups: [],
152
+ depends: [],
153
+ controls: [],
154
+ sha256: ''
155
+ };
156
+ for (const profile of original.profiles) {
157
+ (_a = parent_profile.depends) === null || _a === void 0 ? void 0 : _a.push({ name: profile.name });
158
+ parent_profile.controls.push(...profile.controls);
159
+ profile.parent_profile = parentProfileName;
160
+ profile.sha256 = (0, base_converter_1.generateHash)(JSON.stringify(profile));
161
+ }
162
+ parent_profile.sha256 = (0, base_converter_1.generateHash)(JSON.stringify(parent_profile));
163
+ original.profiles.unshift(parent_profile);
164
+ return original;
165
+ }
166
+ }
167
+ }
168
+ exports.ChecklistResults = ChecklistResults;
169
+ class ChecklistMapper extends base_converter_1.BaseConverter {
170
+ constructor(checklistObject, withRaw = false) {
171
+ super(checklistObject);
172
+ this.mappings = {
173
+ platform: {
174
+ name: 'Heimdall Tools',
175
+ release: package_json_1.version
176
+ },
177
+ version: package_json_1.version,
178
+ statistics: {},
179
+ profiles: [
180
+ {
181
+ path: 'stigs',
182
+ name: { path: 'header.title' },
183
+ version: { path: 'header.version' },
184
+ title: { path: 'header.title' },
185
+ summary: { path: 'header.description' },
186
+ license: { path: 'header.notice' },
187
+ supports: [],
188
+ attributes: [],
189
+ groups: [],
190
+ status: 'loaded',
191
+ controls: [
192
+ {
193
+ path: 'vulns',
194
+ key: 'id',
195
+ tags: {
196
+ gtitle: { path: 'groupTitle' },
197
+ rid: { path: 'ruleId' },
198
+ gid: { path: 'vulnNum' },
199
+ stig_id: { path: 'ruleVersion' },
200
+ cci: {
201
+ path: 'cciRef',
202
+ transformer: cciRef
203
+ },
204
+ nist: {
205
+ path: 'cciRef',
206
+ transformer: nistTag
207
+ },
208
+ weight: { path: 'weight' },
209
+ transformer: (input) => {
210
+ const tags = [
211
+ ['IA Controls', 'iaControls'],
212
+ ['Legacy ID', 'legacyId'],
213
+ ['False Positives', 'falsePositives'],
214
+ ['False Negatives', 'falseNegatives'],
215
+ ['Mitigations', 'mitigations'],
216
+ ['Mitigation Controls', 'mitigationControl'],
217
+ ['Potential Impact', 'potentialImpact'],
218
+ ['Responsibility', 'responsibility'],
219
+ ['STIGRef', 'stigRef'],
220
+ ['Security Override Guidance', 'securityOverrideGuidance'],
221
+ ['Severity Justification', 'severityJustification']
222
+ ];
223
+ const fullTags = {};
224
+ for (const [key, path] of tags) {
225
+ const tagValue = lodash_1.default.get(input, path);
226
+ if (tagValue && tagValue !== '; ') {
227
+ fullTags[key] = tagValue;
228
+ }
229
+ }
230
+ return fullTags;
231
+ }
232
+ },
233
+ refs: [],
234
+ source_location: {},
235
+ title: { path: 'ruleTitle' },
236
+ id: { path: 'vulnNum' },
237
+ desc: { path: 'vulnDiscuss' },
238
+ descriptions: [
239
+ {
240
+ data: { path: 'checkContent' },
241
+ label: 'check'
242
+ },
243
+ {
244
+ data: { path: 'fixText' },
245
+ label: 'fix'
246
+ },
247
+ {
248
+ data: { path: 'comments' },
249
+ label: 'comments'
250
+ }
251
+ ],
252
+ impact: {
253
+ transformer: (vulnerability) => transformImpact(vulnerability)
254
+ },
255
+ code: {
256
+ transformer: (vulnerability) => JSON.stringify(vulnerability, null, 2)
257
+ },
258
+ results: [
259
+ {
260
+ arrayTransformer: parseFindingDetails,
261
+ status: {
262
+ path: 'status',
263
+ transformer: getStatus
264
+ },
265
+ code_desc: { path: 'findingdetails' },
266
+ start_time: ''
267
+ }
268
+ ]
269
+ }
270
+ ],
271
+ sha256: ''
272
+ }
273
+ ],
274
+ passthrough: {
275
+ transformer: (data) => {
276
+ return {
277
+ ...{
278
+ checklist: {
279
+ asset: data.asset,
280
+ stigs: data.stigs
281
+ }
282
+ },
283
+ ...(this.withRaw && { raw: data.jsonixData })
284
+ };
285
+ }
286
+ }
287
+ };
288
+ this.withRaw = withRaw;
289
+ }
290
+ }
291
+ exports.ChecklistMapper = ChecklistMapper;
292
+ //# sourceMappingURL=checklist-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checklist-mapper.js","sourceRoot":"","sources":["../../../src/ckl-mapper/checklist-mapper.ts"],"names":[],"mappings":"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"}