@mitre/hdf-converters 2.5.3 → 2.6.6

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 (115) hide show
  1. package/lib/data/aws-config-mapping.json +638 -0
  2. package/lib/data/cci-nist-mapping.json +3553 -0
  3. package/lib/data/converters/csv2json.d.ts +1 -0
  4. package/lib/data/converters/csv2json.js +36 -0
  5. package/lib/data/converters/csv2json.js.map +1 -0
  6. package/lib/data/converters/csv2json.ts +36 -0
  7. package/lib/data/converters/xml2json.d.ts +14 -0
  8. package/lib/data/converters/xml2json.js +42 -0
  9. package/lib/data/converters/xml2json.js.map +1 -0
  10. package/lib/data/converters/xml2json.ts +57 -0
  11. package/lib/data/cwe-nist-mapping.json +1416 -0
  12. package/lib/data/nessus-plugins-nist-mapping.json +644 -0
  13. package/lib/data/nikto-nist-mapping.json +53648 -0
  14. package/lib/data/owasp-nist-mapping.json +72 -0
  15. package/lib/data/scoutsuite-nist-mapping.json +558 -0
  16. package/lib/index.d.ts +4 -0
  17. package/lib/index.js +4 -0
  18. package/lib/index.js.map +1 -1
  19. package/lib/package.json +16 -6
  20. package/lib/src/asff-mapper.d.ts +15 -0
  21. package/lib/src/asff-mapper.js +508 -0
  22. package/lib/src/asff-mapper.js.map +1 -0
  23. package/lib/src/aws-config-mapper.d.ts +28 -0
  24. package/lib/src/aws-config-mapper.js +369 -0
  25. package/lib/src/aws-config-mapper.js.map +1 -0
  26. package/lib/src/base-converter.d.ts +7 -10
  27. package/lib/src/base-converter.js +62 -15
  28. package/lib/src/base-converter.js.map +1 -1
  29. package/lib/src/burpsuite-mapper.js +2 -13
  30. package/lib/src/burpsuite-mapper.js.map +1 -1
  31. package/lib/src/converters-from-hdf/asff/asff-types.d.ts +88 -0
  32. package/lib/src/converters-from-hdf/asff/asff-types.js +3 -0
  33. package/lib/src/converters-from-hdf/asff/asff-types.js.map +1 -0
  34. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.d.ts +31 -0
  35. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js +132 -0
  36. package/lib/src/converters-from-hdf/asff/reverse-asff-mapper.js.map +1 -0
  37. package/lib/src/converters-from-hdf/asff/transformers.d.ts +44 -0
  38. package/lib/src/converters-from-hdf/asff/transformers.js +397 -0
  39. package/lib/src/converters-from-hdf/asff/transformers.js.map +1 -0
  40. package/lib/src/converters-from-hdf/reverse-base-converter.d.ts +24 -0
  41. package/lib/src/converters-from-hdf/reverse-base-converter.js +111 -0
  42. package/lib/src/converters-from-hdf/reverse-base-converter.js.map +1 -0
  43. package/lib/src/dbprotect-mapper.js +1 -10
  44. package/lib/src/dbprotect-mapper.js.map +1 -1
  45. package/lib/src/fortify-mapper.js +1 -10
  46. package/lib/src/fortify-mapper.js.map +1 -1
  47. package/lib/src/jfrog-xray-mapper.js +1 -3
  48. package/lib/src/jfrog-xray-mapper.js.map +1 -1
  49. package/lib/src/mappings/AwsConfigMapping.d.ts +6 -0
  50. package/lib/src/mappings/AwsConfigMapping.js +39 -0
  51. package/lib/src/mappings/AwsConfigMapping.js.map +1 -0
  52. package/lib/src/mappings/AwsConfigMappingItem.d.ts +7 -0
  53. package/lib/src/mappings/AwsConfigMappingItem.js +28 -0
  54. package/lib/src/mappings/AwsConfigMappingItem.js.map +1 -0
  55. package/lib/src/mappings/CciNistMapping.d.ts +1 -1
  56. package/lib/src/mappings/CciNistMapping.js +5 -24
  57. package/lib/src/mappings/CciNistMapping.js.map +1 -1
  58. package/lib/src/mappings/CweNistMapping.d.ts +8 -1
  59. package/lib/src/mappings/CweNistMapping.js +4 -27
  60. package/lib/src/mappings/CweNistMapping.js.map +1 -1
  61. package/lib/src/mappings/CweNistMappingItem.d.ts +2 -1
  62. package/lib/src/mappings/CweNistMappingItem.js +9 -9
  63. package/lib/src/mappings/CweNistMappingItem.js.map +1 -1
  64. package/lib/src/mappings/NessusPluginsNistMapping.d.ts +7 -1
  65. package/lib/src/mappings/NessusPluginsNistMapping.js +4 -8
  66. package/lib/src/mappings/NessusPluginsNistMapping.js.map +1 -1
  67. package/lib/src/mappings/NessusPluginsNistMappingItem.d.ts +2 -1
  68. package/lib/src/mappings/NessusPluginsNistMappingItem.js +16 -6
  69. package/lib/src/mappings/NessusPluginsNistMappingItem.js.map +1 -1
  70. package/lib/src/mappings/NiktoNistMapping.d.ts +7 -1
  71. package/lib/src/mappings/NiktoNistMapping.js +4 -8
  72. package/lib/src/mappings/NiktoNistMapping.js.map +1 -1
  73. package/lib/src/mappings/NiktoNistMappingItem.d.ts +2 -1
  74. package/lib/src/mappings/NiktoNistMappingItem.js +7 -7
  75. package/lib/src/mappings/NiktoNistMappingItem.js.map +1 -1
  76. package/lib/src/mappings/OwaspNistMapping.d.ts +8 -1
  77. package/lib/src/mappings/OwaspNistMapping.js +4 -8
  78. package/lib/src/mappings/OwaspNistMapping.js.map +1 -1
  79. package/lib/src/mappings/OwaspNistMappingItem.d.ts +2 -1
  80. package/lib/src/mappings/OwaspNistMappingItem.js +9 -9
  81. package/lib/src/mappings/OwaspNistMappingItem.js.map +1 -1
  82. package/lib/src/mappings/ScoutsuiteNistMapping.d.ts +5 -1
  83. package/lib/src/mappings/ScoutsuiteNistMapping.js +4 -10
  84. package/lib/src/mappings/ScoutsuiteNistMapping.js.map +1 -1
  85. package/lib/src/mappings/ScoutsuiteNistMappingItem.d.ts +2 -1
  86. package/lib/src/mappings/ScoutsuiteNistMappingItem.js +4 -4
  87. package/lib/src/mappings/ScoutsuiteNistMappingItem.js.map +1 -1
  88. package/lib/src/nessus-mapper.js +3 -15
  89. package/lib/src/nessus-mapper.js.map +1 -1
  90. package/lib/src/netsparker-mapper.js +3 -15
  91. package/lib/src/netsparker-mapper.js.map +1 -1
  92. package/lib/src/nikto-mapper.js +1 -3
  93. package/lib/src/nikto-mapper.js.map +1 -1
  94. package/lib/src/sarif-mapper.js +1 -3
  95. package/lib/src/sarif-mapper.js.map +1 -1
  96. package/lib/src/scoutsuite-mapper.js +1 -3
  97. package/lib/src/scoutsuite-mapper.js.map +1 -1
  98. package/lib/src/snyk-mapper.js +1 -6
  99. package/lib/src/snyk-mapper.js.map +1 -1
  100. package/lib/src/sonarqube-mapper.d.ts +54 -0
  101. package/lib/src/sonarqube-mapper.js +196 -0
  102. package/lib/src/sonarqube-mapper.js.map +1 -0
  103. package/lib/src/xccdf-results-mapper.js +293 -92
  104. package/lib/src/xccdf-results-mapper.js.map +1 -1
  105. package/lib/src/zap-mapper.d.ts +1 -1
  106. package/lib/src/zap-mapper.js +7 -4
  107. package/lib/src/zap-mapper.js.map +1 -1
  108. package/package.json +16 -6
  109. package/lib/data/U_CCI_List.xml +0 -38403
  110. package/lib/data/aws-config-mapping.csv +0 -107
  111. package/lib/data/cwe-nist-mapping.csv +0 -203
  112. package/lib/data/nessus-plugins-nist-mapping.csv +0 -108
  113. package/lib/data/nikto-nist-mapping.csv +0 -8942
  114. package/lib/data/owasp-nist-mapping.csv +0 -11
  115. package/lib/data/scoutsuite-nist-mapping.csv +0 -140
@@ -0,0 +1,196 @@
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.SonarQubeMapper = exports.SonarQubeResults = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const inspecjs_1 = require("inspecjs");
9
+ const package_json_1 = require("../package.json");
10
+ const base_converter_1 = require("./base-converter");
11
+ const CweNistMapping_1 = require("./mappings/CweNistMapping");
12
+ const OwaspNistMapping_1 = require("./mappings/OwaspNistMapping");
13
+ const IMPACT_MAPPING = new Map([
14
+ ['blocker', 1.0],
15
+ ['critical', 0.7],
16
+ ['major', 0.5],
17
+ ['minor', 0.3],
18
+ ['info', 0.0]
19
+ ]);
20
+ const CWE_NIST_MAPPING = new CweNistMapping_1.CweNistMapping();
21
+ const OWASP_NIST_MAPPING = new OwaspNistMapping_1.OwaspNistMapping();
22
+ function formatCodeDesc(vulnerability) {
23
+ const typedVulnerability = vulnerability;
24
+ if (typedVulnerability.textRange) {
25
+ const snipHtml = `StartLine: ${typedVulnerability.textRange.startLine}, EndLine: ${typedVulnerability.textRange.endLine}<br>Code:<pre>${typedVulnerability.snip}</pre>`;
26
+ return `Path:${typedVulnerability.component}:${typedVulnerability.textRange.startLine}:${typedVulnerability.textRange.endLine} ${snipHtml}`;
27
+ }
28
+ else {
29
+ return '';
30
+ }
31
+ }
32
+ function parseNistTags(issue) {
33
+ var _a, _b;
34
+ const tags = [];
35
+ (_a = issue.sysTags) === null || _a === void 0 ? void 0 : _a.forEach((sysTag) => {
36
+ if (sysTag.toLowerCase().startsWith('owasp-')) {
37
+ const identifier = [
38
+ sysTag.toLowerCase().replace('owasp-', '').toUpperCase()
39
+ ];
40
+ tags.push(...OWASP_NIST_MAPPING.nistFilterNoDefault(identifier));
41
+ }
42
+ });
43
+ (_b = issue.summary.match(/CWE-\d\d\d?\d?\d?\d?\d/gi)) === null || _b === void 0 ? void 0 : _b.forEach((match) => {
44
+ tags.push(...CWE_NIST_MAPPING.nistFilter(match.split('-')[1]));
45
+ });
46
+ return tags;
47
+ }
48
+ class SonarQubeResults {
49
+ constructor(sonarQubeHost, projectId, userToken) {
50
+ this.data = {
51
+ issues: []
52
+ };
53
+ this.sonarQubeHost = '';
54
+ this.projectId = '';
55
+ this.userToken = '';
56
+ this.sonarQubeHost = sonarQubeHost;
57
+ this.projectId = projectId;
58
+ this.userToken = userToken;
59
+ }
60
+ async toHdf() {
61
+ return this.getProjectData();
62
+ }
63
+ async getProjectData() {
64
+ var _a, _b;
65
+ let paging = true;
66
+ let page = 1;
67
+ while (paging) {
68
+ await axios_1.default
69
+ .get(`${this.sonarQubeHost}/api/issues/search`, {
70
+ auth: { username: this.userToken, password: '' },
71
+ params: {
72
+ componentKeys: this.projectId,
73
+ types: 'VULNERABILITY',
74
+ p: page
75
+ }
76
+ })
77
+ .then(({ data }) => {
78
+ var _a;
79
+ if (data.issues) {
80
+ this.data.issues.push(...data.issues);
81
+ }
82
+ paging = ((_a = data.paging) === null || _a === void 0 ? void 0 : _a.total) === 100;
83
+ page += 1;
84
+ });
85
+ }
86
+ let requests = [];
87
+ (_a = this.data.issues) === null || _a === void 0 ? void 0 : _a.forEach((issue) => {
88
+ requests.push(axios_1.default.get(`${this.sonarQubeHost}/api/sources/raw`, {
89
+ auth: { username: this.userToken, password: '' },
90
+ params: {
91
+ key: issue.component
92
+ }
93
+ }));
94
+ });
95
+ await axios_1.default.all(requests).then(axios_1.default.spread((...responses) => {
96
+ responses.forEach((response, index) => {
97
+ var _a, _b;
98
+ this.data.issues[index].snip = response.data
99
+ .split('\n')
100
+ .slice(((_a = this.data.issues[index].textRange) === null || _a === void 0 ? void 0 : _a.startLine) - 3, ((_b = this.data.issues[index].textRange) === null || _b === void 0 ? void 0 : _b.endLine) + 3)
101
+ .join('\n');
102
+ });
103
+ }));
104
+ requests = [];
105
+ (_b = this.data.issues) === null || _b === void 0 ? void 0 : _b.forEach((issue) => {
106
+ requests.push(axios_1.default.get(`${this.sonarQubeHost}/api/rules/show`, {
107
+ auth: { username: this.userToken, password: '' },
108
+ params: {
109
+ key: issue.rule
110
+ }
111
+ }));
112
+ });
113
+ await axios_1.default.all(requests).then(axios_1.default.spread((...responses) => {
114
+ responses.forEach((response, index) => {
115
+ this.data.issues[index].sysTags = response.data.rule.sysTags;
116
+ this.data.issues[index].name = response.data.rule.name;
117
+ this.data.issues[index].summary = response.data.rule.htmlDesc;
118
+ });
119
+ }));
120
+ const result = new SonarQubeMapper(this.data, this.projectId);
121
+ return result.toHdf();
122
+ }
123
+ setMappings(customMapping) {
124
+ this.customMapping = customMapping;
125
+ }
126
+ }
127
+ exports.SonarQubeResults = SonarQubeResults;
128
+ class SonarQubeMapper extends base_converter_1.BaseConverter {
129
+ constructor(issuesJSON, projectName) {
130
+ super(issuesJSON);
131
+ this.projectName = '';
132
+ this.mappings = {
133
+ platform: {
134
+ name: 'Heimdall Tools',
135
+ release: package_json_1.version,
136
+ target_id: this.projectName
137
+ },
138
+ version: package_json_1.version,
139
+ statistics: {
140
+ duration: null
141
+ },
142
+ profiles: [
143
+ {
144
+ name: 'Sonarqube Scan',
145
+ version: '',
146
+ title: `SonarQube Scan of Project ${this.projectName}`,
147
+ maintainer: null,
148
+ summary: `SonarQube Scan of Project ${this.projectName}`,
149
+ license: null,
150
+ copyright: null,
151
+ copyright_email: null,
152
+ supports: [],
153
+ attributes: [],
154
+ depends: [],
155
+ groups: [],
156
+ status: 'loaded',
157
+ controls: [
158
+ {
159
+ path: 'issues',
160
+ key: 'id',
161
+ desc: { path: 'summary' },
162
+ descriptions: [],
163
+ refs: [],
164
+ source_location: {},
165
+ id: { path: 'rule' },
166
+ title: { path: 'name' },
167
+ impact: {
168
+ path: 'severity',
169
+ transformer: (0, base_converter_1.impactMapping)(IMPACT_MAPPING)
170
+ },
171
+ code: null,
172
+ tags: {
173
+ nist: { transformer: parseNistTags }
174
+ },
175
+ results: [
176
+ {
177
+ status: inspecjs_1.ExecJSON.ControlResultStatus.Failed,
178
+ code_desc: { transformer: formatCodeDesc },
179
+ run_time: 0,
180
+ start_time: ''
181
+ }
182
+ ]
183
+ }
184
+ ],
185
+ sha256: ''
186
+ }
187
+ ]
188
+ };
189
+ this.projectName = projectName;
190
+ }
191
+ setMappings(customMappings) {
192
+ super.setMappings(customMappings);
193
+ }
194
+ }
195
+ exports.SonarQubeMapper = SonarQubeMapper;
196
+ //# sourceMappingURL=sonarqube-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonarqube-mapper.js","sourceRoot":"","sources":["../../src/sonarqube-mapper.ts"],"names":[],"mappings":"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"}