airbyte-faros-destination 0.9.61 → 0.9.63
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/lib/converters/jira/faros_sprints.js +1 -1
- package/lib/converters/jira/faros_sprints.js.map +1 -1
- package/lib/converters/vanta/types.d.ts +7 -4
- package/lib/converters/vanta/types.js.map +1 -1
- package/lib/converters/vanta/vulnerabilities.d.ts +12 -4
- package/lib/converters/vanta/vulnerabilities.js +157 -39
- package/lib/converters/vanta/vulnerabilities.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -34,7 +34,7 @@ class FarosSprints extends common_1.JiraConverter {
|
|
|
34
34
|
model: 'tms_SprintBoardRelationship',
|
|
35
35
|
record: {
|
|
36
36
|
sprint: { uid, source },
|
|
37
|
-
board: { uid: (0, lodash_1.toString)(sprint.
|
|
37
|
+
board: { uid: (0, lodash_1.toString)(sprint.boardId), source },
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
40
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faros_sprints.js","sourceRoot":"","sources":["../../../src/converters/jira/faros_sprints.ts"],"names":[],"mappings":";;;AACA,qDAAsC;AACtC,mCAAuD;AAGvD,qCAAuC;AAEvC,MAAa,YAAa,SAAQ,sBAAa;IAA/C;;QACW,sBAAiB,GAAoC;YAC5D,YAAY;YACZ,6BAA6B;SAC9B,CAAC;IA+BJ,CAAC;IA9BC,KAAK,CAAC,OAAO,CACX,MAAqB,EACrB,GAAkB;QAElB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACtC,MAAM,GAAG,GAAG,IAAA,iBAAQ,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO;YACL;gBACE,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE;oBACN,GAAG;oBACH,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,IAAA,mBAAU,EAAC,IAAA,kBAAS,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1C,SAAS,EAAE,uBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;oBACzC,QAAQ,EAAE,uBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;oBAC5C,OAAO,EAAE,uBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oBACrC,QAAQ,EAAE,uBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;oBAC3C,MAAM;iBACP;aACF;YACD;gBACE,KAAK,EAAE,6BAA6B;gBACpC,MAAM,EAAE;oBACN,MAAM,EAAE,EAAC,GAAG,EAAE,MAAM,EAAC;oBACrB,KAAK,EAAE,EAAC,GAAG,EAAE,IAAA,iBAAQ,EAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"faros_sprints.js","sourceRoot":"","sources":["../../../src/converters/jira/faros_sprints.ts"],"names":[],"mappings":";;;AACA,qDAAsC;AACtC,mCAAuD;AAGvD,qCAAuC;AAEvC,MAAa,YAAa,SAAQ,sBAAa;IAA/C;;QACW,sBAAiB,GAAoC;YAC5D,YAAY;YACZ,6BAA6B;SAC9B,CAAC;IA+BJ,CAAC;IA9BC,KAAK,CAAC,OAAO,CACX,MAAqB,EACrB,GAAkB;QAElB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QACtC,MAAM,GAAG,GAAG,IAAA,iBAAQ,EAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO;YACL;gBACE,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE;oBACN,GAAG;oBACH,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,KAAK,EAAE,IAAA,mBAAU,EAAC,IAAA,kBAAS,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC1C,SAAS,EAAE,uBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;oBACzC,QAAQ,EAAE,uBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;oBAC5C,OAAO,EAAE,uBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;oBACrC,QAAQ,EAAE,uBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;oBAC3C,MAAM;iBACP;aACF;YACD;gBACE,KAAK,EAAE,6BAA6B;gBACpC,MAAM,EAAE;oBACN,MAAM,EAAE,EAAC,GAAG,EAAE,MAAM,EAAC;oBACrB,KAAK,EAAE,EAAC,GAAG,EAAE,IAAA,iBAAQ,EAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAC;iBAC/C;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAnCD,oCAmCC"}
|
|
@@ -2,7 +2,7 @@ type OptString = string | null | undefined;
|
|
|
2
2
|
type OptBool = boolean | null | undefined;
|
|
3
3
|
type OptNumber = number | null | undefined;
|
|
4
4
|
export interface BaseVulnerabilityType {
|
|
5
|
-
uid:
|
|
5
|
+
uid: string;
|
|
6
6
|
displayName: OptString;
|
|
7
7
|
createdAt: OptString;
|
|
8
8
|
externalURL: OptString;
|
|
@@ -19,7 +19,7 @@ export interface GithubSecurityAdvisory {
|
|
|
19
19
|
ghsaId: OptString;
|
|
20
20
|
}
|
|
21
21
|
export interface GithubVulnerabilityData {
|
|
22
|
-
uid:
|
|
22
|
+
uid: string;
|
|
23
23
|
displayName: OptString;
|
|
24
24
|
createdAt: OptString;
|
|
25
25
|
externalURL: OptString;
|
|
@@ -35,7 +35,7 @@ export interface AWSFindings {
|
|
|
35
35
|
name: OptString;
|
|
36
36
|
}
|
|
37
37
|
export interface AWSVulnerabilityData {
|
|
38
|
-
uid:
|
|
38
|
+
uid: string;
|
|
39
39
|
displayName: OptString;
|
|
40
40
|
createdAt: OptString;
|
|
41
41
|
externalURL: OptString;
|
|
@@ -46,6 +46,7 @@ export interface AWSVulnerabilityData {
|
|
|
46
46
|
repositoryName: OptString;
|
|
47
47
|
repositoryArn: OptString;
|
|
48
48
|
findings: AWSFindings[];
|
|
49
|
+
imageTags: string[];
|
|
49
50
|
}
|
|
50
51
|
export interface AWSV2Ignored {
|
|
51
52
|
ignoreReason: OptString;
|
|
@@ -56,11 +57,12 @@ export interface AWSV2Asset {
|
|
|
56
57
|
displayName: OptString;
|
|
57
58
|
}
|
|
58
59
|
export interface AWSV2VulnerabilityData {
|
|
59
|
-
uid:
|
|
60
|
+
uid: string;
|
|
60
61
|
displayName: OptString;
|
|
61
62
|
createdAt: OptString;
|
|
62
63
|
externalURL: OptString;
|
|
63
64
|
severity: OptString;
|
|
65
|
+
externalVulnerabilityId: OptString;
|
|
64
66
|
packageName: OptString;
|
|
65
67
|
packageIdentifier: OptString;
|
|
66
68
|
description: OptString;
|
|
@@ -72,6 +74,7 @@ export interface AWSV2VulnerabilityData {
|
|
|
72
74
|
imageTags: string[];
|
|
73
75
|
imageDigest: OptString;
|
|
74
76
|
}
|
|
77
|
+
export type BaseAWSVuln = AWSVulnerabilityData | AWSV2VulnerabilityData;
|
|
75
78
|
export declare const vulnTypeOptions: string[];
|
|
76
79
|
export interface VcsOrgKey {
|
|
77
80
|
uid: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/converters/vanta/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/converters/vanta/types.ts"],"names":[],"mappings":";;;AAwFa,QAAA,eAAe,GAAa,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AirbyteRecord } from 'faros-airbyte-cdk';
|
|
2
2
|
import { FarosClient } from 'faros-js-client';
|
|
3
3
|
import { Converter, DestinationModel, DestinationRecord, StreamContext } from '../converter';
|
|
4
|
-
import { AWSV2VulnerabilityData, AWSVulnerabilityData, CicdArtifactKey, ExtendedVulnerabilityType, FarosObjectKey, GithubVulnerabilityData, VcsRepoKey, VulnerabilityInfo } from './types';
|
|
4
|
+
import { AWSV2VulnerabilityData, AWSVulnerabilityData, BaseAWSVuln, CicdArtifactKey, ExtendedVulnerabilityType, FarosObjectKey, GithubVulnerabilityData, VcsRepoKey, VulnerabilityInfo } from './types';
|
|
5
5
|
export declare abstract class Vulnerabilities extends Converter {
|
|
6
6
|
source: string;
|
|
7
7
|
readonly destinationModels: ReadonlyArray<DestinationModel>;
|
|
@@ -16,6 +16,7 @@ export declare abstract class Vulnerabilities extends Converter {
|
|
|
16
16
|
awsV2ContainerNamesToUids: Record<string, string[]>;
|
|
17
17
|
gitUidsToVulns: Record<string, GithubVulnerabilityData>;
|
|
18
18
|
awsUidsToVulns: Record<string, AWSVulnerabilityData>;
|
|
19
|
+
duplicateAwsV2Uids: Set<string>;
|
|
19
20
|
duplicateAwsUids: Set<string>;
|
|
20
21
|
vcsRepositoryQuery: string;
|
|
21
22
|
cicdArtifactQueryByCommitSha: string;
|
|
@@ -54,10 +55,17 @@ export declare abstract class Vulnerabilities extends Converter {
|
|
|
54
55
|
getVCSMappingsFromGit(gitRepoNamesToUIDs: Record<string, string[]>, fc: FarosClient, ctx: StreamContext): Promise<DestinationRecord[]>;
|
|
55
56
|
getAWSV2VulnStatusDetail(vuln: AWSV2VulnerabilityData): string;
|
|
56
57
|
getAWSV2VulnStatusCategory(vuln: AWSV2VulnerabilityData): string;
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
getCICDMappingsFromAWSByCommitSha(fc: FarosClient, ctx: StreamContext): Promise<[DestinationRecord[], Set<string>]>;
|
|
59
|
+
getCICDMappingsFromAWSByRepoName(fc: FarosClient, ctx: StreamContext, vulnUidsToCheck: Set<string>): Promise<DestinationRecord[]>;
|
|
60
|
+
getCommitShasFromAWSVulns(vulns: BaseAWSVuln[], ctx: StreamContext): [Set<string>, Record<string, BaseAWSVuln>];
|
|
61
|
+
getCommitShaDataFromAWSVulns(aws_vulns: BaseAWSVuln[], fc: FarosClient, ctx: StreamContext): Promise<[
|
|
62
|
+
Set<string>,
|
|
63
|
+
Record<string, BaseAWSVuln>,
|
|
64
|
+
Record<string, CicdArtifactKey>
|
|
65
|
+
]>;
|
|
66
|
+
encodeURL(url: string): string;
|
|
59
67
|
getCICDMappingsFromAWSV2(aws_vulns: AWSV2VulnerabilityData[], fc: FarosClient, ctx: StreamContext): Promise<DestinationRecord[]>;
|
|
60
|
-
|
|
68
|
+
getUidFromAWSVuln(vuln: BaseAWSVuln): string;
|
|
61
69
|
getVulnRecordsFromAwsV2(data: AWSV2VulnerabilityData[]): DestinationRecord[];
|
|
62
70
|
combineAwsVulns(aws_v1_vulns: DestinationRecord[], aws_v2_vulns: DestinationRecord[], ctx: StreamContext): DestinationRecord[];
|
|
63
71
|
getSecVulnerabilityRecordFromData(data: ExtendedVulnerabilityType): DestinationRecord;
|
|
@@ -31,6 +31,7 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
31
31
|
this.awsV2ContainerNamesToUids = {};
|
|
32
32
|
this.gitUidsToVulns = {};
|
|
33
33
|
this.awsUidsToVulns = {};
|
|
34
|
+
this.duplicateAwsV2Uids = new Set();
|
|
34
35
|
this.duplicateAwsUids = new Set();
|
|
35
36
|
// We read from file synchronously to get query from file
|
|
36
37
|
this.vcsRepositoryQuery = (0, utils_1.getQueryFromName)('vcsRepositoryQuery');
|
|
@@ -106,6 +107,13 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
106
107
|
}
|
|
107
108
|
vuln['description'] = vuln.securityAdvisory.description;
|
|
108
109
|
this.addUIDToMapping(vuln.repositoryName, vuln.uid, this.repositoryNamesToUids);
|
|
110
|
+
const cveId = vuln.securityAdvisory.cveId
|
|
111
|
+
? vuln.securityAdvisory.cveId
|
|
112
|
+
: '';
|
|
113
|
+
const ghsaId = vuln.securityAdvisory.ghsaId
|
|
114
|
+
? vuln.securityAdvisory.ghsaId
|
|
115
|
+
: '';
|
|
116
|
+
vuln['externalIds'] = [cveId, ghsaId];
|
|
109
117
|
vuln_data.push(this.getSecVulnerabilityRecordFromData(vuln));
|
|
110
118
|
this.gitUidsToVulns[vuln.uid] = vuln;
|
|
111
119
|
}
|
|
@@ -122,9 +130,11 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
122
130
|
for (const finding of vuln.findings) {
|
|
123
131
|
// We copy vuln data and add the finding data to it
|
|
124
132
|
const new_vuln = { ...vuln };
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
133
|
+
// In the case of AWS vuln objects as provided by Vanta,
|
|
134
|
+
// the name field contains the CVE string at the beginning
|
|
135
|
+
const pre_cve_str = finding['name'] ? finding['name'] : '';
|
|
136
|
+
const cve_str = pre_cve_str.split(' ')[0];
|
|
137
|
+
new_vuln['externalIds'] = [cve_str];
|
|
128
138
|
new_vuln['description'] = finding['description']
|
|
129
139
|
? finding['description']
|
|
130
140
|
: 'No description found';
|
|
@@ -204,6 +214,8 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
204
214
|
}
|
|
205
215
|
async getVCSMappingsFromGit(gitRepoNamesToUIDs, fc, ctx) {
|
|
206
216
|
// Faros Client is passed in as an argument in case we want to change it in the future
|
|
217
|
+
// In this function we associate the repo vulns to the repositories in faros.
|
|
218
|
+
// We can grab all the repositories from the names in the vuln data
|
|
207
219
|
const vuln_data = [];
|
|
208
220
|
const allRepoNames = Object.keys(gitRepoNamesToUIDs);
|
|
209
221
|
const allRepoKeys = await this.getVCSRepositoriesFromNamesBatches(allRepoNames, fc, ctx, 100);
|
|
@@ -221,13 +233,18 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
221
233
|
source: this.source,
|
|
222
234
|
};
|
|
223
235
|
const vuln = this.gitUidsToVulns[uid];
|
|
236
|
+
if (!vuln) {
|
|
237
|
+
ctx.logger.debug(`Could not find vulnerability with uid "${uid}" in gitUidsToVulns`);
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
224
240
|
vuln_data.push({
|
|
225
241
|
model: 'vcs_RepositoryVulnerability',
|
|
226
242
|
record: {
|
|
227
243
|
repository: repoKey,
|
|
228
244
|
vulnerability: vulnKey,
|
|
229
|
-
url: vuln.externalURL,
|
|
245
|
+
url: this.encodeURL(vuln.externalURL),
|
|
230
246
|
dueAt: vuln.slaDeadline,
|
|
247
|
+
createdAt: vuln.createdAt,
|
|
231
248
|
},
|
|
232
249
|
});
|
|
233
250
|
}
|
|
@@ -256,7 +273,41 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
256
273
|
return 'Open';
|
|
257
274
|
}
|
|
258
275
|
}
|
|
259
|
-
async
|
|
276
|
+
async getCICDMappingsFromAWSByCommitSha(fc, ctx) {
|
|
277
|
+
const aws_vulns = Object.values(this.awsUidsToVulns);
|
|
278
|
+
const [allCommitShas, commitShasToVulns, commitShaToArtifact] = await this.getCommitShaDataFromAWSVulns(aws_vulns, fc, ctx);
|
|
279
|
+
const res = [];
|
|
280
|
+
for (const commitSha of allCommitShas) {
|
|
281
|
+
const CicdArtifactKey = commitShaToArtifact[commitSha];
|
|
282
|
+
if (CicdArtifactKey) {
|
|
283
|
+
const vuln = commitShasToVulns[commitSha];
|
|
284
|
+
res.push({
|
|
285
|
+
model: 'cicd_ArtifactVulnerability',
|
|
286
|
+
record: {
|
|
287
|
+
artifact: CicdArtifactKey,
|
|
288
|
+
vulnerability: {
|
|
289
|
+
uid: this.getUidFromAWSVuln(vuln),
|
|
290
|
+
source: this.source,
|
|
291
|
+
},
|
|
292
|
+
url: this.encodeURL(vuln.externalURL),
|
|
293
|
+
dueAt: vuln.slaDeadline,
|
|
294
|
+
createdAt: vuln.createdAt,
|
|
295
|
+
acknowledgedAt: vuln.createdAt,
|
|
296
|
+
status: null,
|
|
297
|
+
},
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Now we get the list of vulns that we did not get cicd artifacts for
|
|
302
|
+
const missing_uids = new Set(Object.keys(this.awsUidsToVulns));
|
|
303
|
+
for (const vuln of Object.values(commitShasToVulns)) {
|
|
304
|
+
missing_uids.delete(vuln.uid);
|
|
305
|
+
}
|
|
306
|
+
ctx.logger.info(`Total count of missing uids: ${missing_uids.size} out of ` +
|
|
307
|
+
`${Object.keys(this.awsUidsToVulns).length} total AWS uids.`);
|
|
308
|
+
return [res, missing_uids];
|
|
309
|
+
}
|
|
310
|
+
async getCICDMappingsFromAWSByRepoName(fc, ctx, vulnUidsToCheck) {
|
|
260
311
|
// We iterate through the key-value pairs of awsUidsToVulns
|
|
261
312
|
// We get the repository name from the vuln, and we take the most
|
|
262
313
|
// recent cicd_Artifact, rather than getting the cicd_Artifact by commit sha
|
|
@@ -265,6 +316,9 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
265
316
|
const repoNames = new Set();
|
|
266
317
|
const uidsToRepoNames = {};
|
|
267
318
|
for (const [uid, vuln] of Object.entries(this.awsUidsToVulns)) {
|
|
319
|
+
if (!vulnUidsToCheck.has(uid)) {
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
268
322
|
let repoName = vuln.repositoryName;
|
|
269
323
|
if (!repoName) {
|
|
270
324
|
ctx.logger.debug(`Could not find repository name for vulnerability with uid "${uid}"`);
|
|
@@ -280,13 +334,14 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
280
334
|
uidsToRepoNames[uid] = repoName;
|
|
281
335
|
}
|
|
282
336
|
const repoKeys = await this.getAWSCicdArtifactsFromRepoNamesByBatches(Array.from(repoNames), fc, ctx);
|
|
283
|
-
|
|
337
|
+
// Note - for cicd Repositories, the uid is the repository name
|
|
338
|
+
const repoUidsToKeys = {};
|
|
284
339
|
for (const repoKey of repoKeys) {
|
|
285
|
-
|
|
340
|
+
repoUidsToKeys[repoKey.repository.uid] = repoKey;
|
|
286
341
|
}
|
|
287
342
|
for (const [uid, vuln] of Object.entries(this.awsUidsToVulns)) {
|
|
288
343
|
const repoName = uidsToRepoNames[uid];
|
|
289
|
-
const repoKey =
|
|
344
|
+
const repoKey = repoUidsToKeys[repoName];
|
|
290
345
|
res.push({
|
|
291
346
|
model: 'cicd_ArtifactVulnerability',
|
|
292
347
|
record: {
|
|
@@ -295,7 +350,7 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
295
350
|
uid: uid,
|
|
296
351
|
source: this.source,
|
|
297
352
|
},
|
|
298
|
-
url: vuln.externalURL,
|
|
353
|
+
url: this.encodeURL(vuln.externalURL),
|
|
299
354
|
dueAt: vuln.slaDeadline,
|
|
300
355
|
createdAt: vuln.createdAt,
|
|
301
356
|
acknowledgedAt: vuln.createdAt,
|
|
@@ -304,7 +359,8 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
304
359
|
}
|
|
305
360
|
return res;
|
|
306
361
|
}
|
|
307
|
-
|
|
362
|
+
getCommitShasFromAWSVulns(vulns, ctx) {
|
|
363
|
+
//
|
|
308
364
|
const seenUids = new Set();
|
|
309
365
|
const allCommitShas = new Set();
|
|
310
366
|
const commitShasToVulns = {};
|
|
@@ -312,18 +368,17 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
312
368
|
let totalMissed = 0;
|
|
313
369
|
for (const vuln of vulns) {
|
|
314
370
|
// First we check for dup uids
|
|
315
|
-
const uid = this.
|
|
371
|
+
const uid = this.getUidFromAWSVuln(vuln);
|
|
316
372
|
const title = vuln.displayName ? vuln.displayName : uid;
|
|
317
373
|
if (seenUids.has(uid)) {
|
|
318
|
-
ctx.logger.debug('Found duplicate vuln id: ' + uid);
|
|
319
|
-
this.
|
|
374
|
+
ctx.logger.debug('Found duplicate vuln id (commit sha from AWS V2): ' + uid);
|
|
375
|
+
this.duplicateAwsV2Uids.add(uid);
|
|
320
376
|
continue;
|
|
321
377
|
}
|
|
322
378
|
seenUids.add(uid);
|
|
323
379
|
// We need to do the following for each vuln:
|
|
324
380
|
// Get the image tags. For each image tag, check if it is a github commit sha
|
|
325
|
-
//
|
|
326
|
-
// If you get a cicd_Artifact, add the mapping to the cicd_ArtifactVulnerability table
|
|
381
|
+
// if it is, add it to the set of commit shas to use later to query for cicd artifacts
|
|
327
382
|
const imageTags = vuln.imageTags;
|
|
328
383
|
if (!imageTags || imageTags.length === 0) {
|
|
329
384
|
totalMissed += 1;
|
|
@@ -349,14 +404,36 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
349
404
|
ctx.logger.info(`For commit shas, total missed: ${totalMissed}, total vulns: ${vulns.length}`);
|
|
350
405
|
return [allCommitShas, commitShasToVulns];
|
|
351
406
|
}
|
|
352
|
-
async
|
|
353
|
-
|
|
354
|
-
const [allCommitShas, commitShasToVulns] = this.getCommitShasFromAWSV2Vulns(aws_vulns, ctx);
|
|
407
|
+
async getCommitShaDataFromAWSVulns(aws_vulns, fc, ctx) {
|
|
408
|
+
const [allCommitShas, commitShasToVulns] = this.getCommitShasFromAWSVulns(aws_vulns, ctx);
|
|
355
409
|
const cicdArtifactKeys = await this.getCICDArtifactFromCommitShaBatches(allCommitShas, fc, ctx);
|
|
356
410
|
const commitShaToArtifact = {};
|
|
357
411
|
for (const artifact of cicdArtifactKeys) {
|
|
358
412
|
commitShaToArtifact[artifact.uid] = artifact;
|
|
359
413
|
}
|
|
414
|
+
return [allCommitShas, commitShasToVulns, commitShaToArtifact];
|
|
415
|
+
}
|
|
416
|
+
encodeURL(url) {
|
|
417
|
+
// We split by 'findingArn=' and encode the second part and add to the first:
|
|
418
|
+
const split = url.split('findingArn=');
|
|
419
|
+
if (split.length !== 2) {
|
|
420
|
+
return encodeURIComponent(url);
|
|
421
|
+
}
|
|
422
|
+
const arn = split[1];
|
|
423
|
+
const encodedArn = encodeURIComponent(arn);
|
|
424
|
+
const encodedUrl = split[0] + 'findingArn=' + encodedArn;
|
|
425
|
+
return encodedUrl;
|
|
426
|
+
}
|
|
427
|
+
async getCICDMappingsFromAWSV2(aws_vulns, fc, ctx) {
|
|
428
|
+
// Within this function, we first get all the potential commit shas from
|
|
429
|
+
// the AWS V2 Container Vulnerability data. We create a mapping from
|
|
430
|
+
// commit Sha to Vuln Data in order to use it later.
|
|
431
|
+
// We then get the cicd_Artifact keys from the commit shas we collected.
|
|
432
|
+
// Within the cicdArtifactKeys, note that the "uid" is the commit sha for the artifact.
|
|
433
|
+
// Finally, for each commit sha we have, we can now create an association between
|
|
434
|
+
// the cicdArtifact and the AWS V2 container vulnerability.
|
|
435
|
+
// * Sidenote: Faros Client is passed in as an argument in case we want to change it in the future
|
|
436
|
+
const [allCommitShas, commitShasToVulns, commitShaToArtifact] = await this.getCommitShaDataFromAWSVulns(aws_vulns, fc, ctx);
|
|
360
437
|
const res = [];
|
|
361
438
|
for (const commitSha of allCommitShas) {
|
|
362
439
|
const CicdArtifactKey = commitShaToArtifact[commitSha];
|
|
@@ -367,10 +444,10 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
367
444
|
record: {
|
|
368
445
|
artifact: CicdArtifactKey,
|
|
369
446
|
vulnerability: {
|
|
370
|
-
uid: this.
|
|
447
|
+
uid: this.getUidFromAWSVuln(vuln),
|
|
371
448
|
source: this.source,
|
|
372
449
|
},
|
|
373
|
-
url: vuln.externalURL,
|
|
450
|
+
url: this.encodeURL(vuln.externalURL),
|
|
374
451
|
dueAt: vuln.remediateBy,
|
|
375
452
|
createdAt: vuln.createdAt,
|
|
376
453
|
acknowledgedAt: vuln.createdAt,
|
|
@@ -384,7 +461,7 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
384
461
|
}
|
|
385
462
|
return res;
|
|
386
463
|
}
|
|
387
|
-
|
|
464
|
+
getUidFromAWSVuln(vuln) {
|
|
388
465
|
// We keep the uid retreival in this function because if we choose to modify
|
|
389
466
|
// the uid in the future, it will remain consistent in all cases.
|
|
390
467
|
return vuln.uid;
|
|
@@ -404,7 +481,7 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
404
481
|
else {
|
|
405
482
|
sevString = sev.toString();
|
|
406
483
|
}
|
|
407
|
-
const uid = this.
|
|
484
|
+
const uid = this.getUidFromAWSVuln(vuln);
|
|
408
485
|
const vuln_copy = {
|
|
409
486
|
uid,
|
|
410
487
|
createdAt: vuln.createdAt,
|
|
@@ -412,30 +489,58 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
412
489
|
severity: sevString,
|
|
413
490
|
description: vuln.description,
|
|
414
491
|
displayName: vuln.displayName,
|
|
492
|
+
vulnerabilityIds: [vuln.externalVulnerabilityId],
|
|
415
493
|
};
|
|
416
494
|
vuln_data.push(this.getSecVulnerabilityRecordFromData(vuln_copy));
|
|
417
495
|
}
|
|
418
496
|
return vuln_data;
|
|
419
497
|
}
|
|
420
498
|
combineAwsVulns(aws_v1_vulns, aws_v2_vulns, ctx) {
|
|
421
|
-
|
|
499
|
+
// We want to remove the vulns that appear in both AWS v1 and AWS v2 lists
|
|
500
|
+
// keeping the AWS v2 vuln if there is an overlap
|
|
501
|
+
const seenV2Uids = new Set();
|
|
502
|
+
const seenV1Uids = new Set();
|
|
422
503
|
const combined = [];
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
504
|
+
let v2Overlap = 0;
|
|
505
|
+
let v1v2Overlap = 0;
|
|
506
|
+
let v1Overlap = 0;
|
|
507
|
+
for (const vuln of aws_v2_vulns) {
|
|
508
|
+
if (!seenV2Uids.has(vuln.record.uid)) {
|
|
509
|
+
combined.push(vuln);
|
|
510
|
+
seenV2Uids.add(vuln.record.uid);
|
|
511
|
+
}
|
|
512
|
+
else {
|
|
513
|
+
v2Overlap += 1;
|
|
514
|
+
this.duplicateAwsUids.add(vuln.record.uid);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
for (const vuln of aws_v1_vulns) {
|
|
518
|
+
if (!seenV2Uids.has(vuln.record.uid) &&
|
|
519
|
+
!seenV1Uids.has(vuln.record.uid)) {
|
|
520
|
+
combined.push(vuln);
|
|
521
|
+
seenV1Uids.add(vuln.record.uid);
|
|
522
|
+
}
|
|
523
|
+
else {
|
|
524
|
+
if (seenV2Uids.has(vuln.record.uid)) {
|
|
525
|
+
v1v2Overlap += 1;
|
|
428
526
|
}
|
|
429
527
|
else {
|
|
430
|
-
|
|
431
|
-
this.duplicateAwsUids.add(vuln.record.uid);
|
|
528
|
+
v1Overlap += 1;
|
|
432
529
|
}
|
|
530
|
+
this.duplicateAwsUids.add(vuln.record.uid);
|
|
433
531
|
}
|
|
434
532
|
}
|
|
533
|
+
// We expect the overlap to only exist in v1/v2 overlap, rather
|
|
534
|
+
// than overlapping within their categories
|
|
535
|
+
let log_str = `AWS v1 and v2 vuln overlap: ${v1v2Overlap}`;
|
|
536
|
+
log_str += `, AWS v2 vuln overlap: ${v2Overlap}`;
|
|
537
|
+
log_str += `, AWS v1 vuln overlap: ${v1Overlap}.\n`;
|
|
538
|
+
log_str += `Total duplicate AWS UIDs (after combining AWS v1 and v2): ${this.duplicateAwsUids.size}`;
|
|
539
|
+
ctx.logger.info(log_str);
|
|
435
540
|
return combined;
|
|
436
541
|
}
|
|
437
542
|
getSecVulnerabilityRecordFromData(data) {
|
|
438
|
-
// The
|
|
543
|
+
// The required fields (ones which cannot be null) are uid and source
|
|
439
544
|
if (!data.uid || !this.source) {
|
|
440
545
|
throw new Error('Vulnerability data must have a uid and source. Data: ' +
|
|
441
546
|
JSON.stringify(data) +
|
|
@@ -449,7 +554,7 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
449
554
|
title: data.displayName,
|
|
450
555
|
description: data.description,
|
|
451
556
|
severity: data.severity,
|
|
452
|
-
url: data.externalURL,
|
|
557
|
+
url: this.encodeURL(data.externalURL),
|
|
453
558
|
discoveredAt: data.createdAt,
|
|
454
559
|
vulnerabilityIds: data.externalIds,
|
|
455
560
|
},
|
|
@@ -575,20 +680,29 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
575
680
|
this.nUpdatedCicdVulns = await this.updateCICDVulnsToResolved(ctx);
|
|
576
681
|
}
|
|
577
682
|
async onProcessingComplete(ctx) {
|
|
578
|
-
//
|
|
579
|
-
// to
|
|
580
|
-
|
|
683
|
+
// Within the onProcessingComplete function, we perform queries to match
|
|
684
|
+
// vulnerabilities to their associated vcs repositories and cicd artifacts.
|
|
685
|
+
// In order to do this, we need to find the key fields which we can
|
|
686
|
+
// use to query the graph. In the case of vcs Repositories, we use the
|
|
687
|
+
// repository name. In the case of cicd artifacts, we use the commit sha,
|
|
688
|
+
// and if we cannot get the commit sha for cicd artifacts, we use the cicd
|
|
689
|
+
// repository name. We then create the associations between the vulnerabilities
|
|
690
|
+
// and the vcs repositories and cicd artifacts.
|
|
691
|
+
// Additionally, we update the existing vulnerabilities in the graph to be resolved
|
|
692
|
+
// if they are not in the current set of vulnerabilities.
|
|
581
693
|
ctx.logger.debug('Running onProcessing Complete. Total number of records to process: ' +
|
|
582
|
-
|
|
694
|
+
this.getTotalNumberOfRecords());
|
|
583
695
|
const res = [];
|
|
584
|
-
// Getting sec_Vulnerability records
|
|
696
|
+
// Getting sec_Vulnerability records (no association)
|
|
697
|
+
// We combine the records from AWS and AWS V2 because there
|
|
698
|
+
// is overlap between the two lists.
|
|
585
699
|
res.push(...this.getVulnRecordsFromGit(this.git_vulns));
|
|
586
700
|
const aws_v1_vulns = this.getVulnRecordsFromAws(this.aws_vulns);
|
|
587
701
|
const aws_v2_vulns = this.getVulnRecordsFromAwsV2(this.awsv2_vulns);
|
|
588
702
|
const combined_aws_vulns = this.combineAwsVulns(aws_v1_vulns, aws_v2_vulns, ctx);
|
|
589
703
|
res.push(...combined_aws_vulns);
|
|
590
704
|
// In the following functions we query Faros for the related VCS and CICD data.
|
|
591
|
-
//
|
|
705
|
+
// Ideally, each vuln will be associated with either a VCS repository or a CICD artifact.
|
|
592
706
|
if (!ctx.farosClient) {
|
|
593
707
|
throw new Error('Faros client not found in context');
|
|
594
708
|
}
|
|
@@ -598,7 +712,11 @@ class Vulnerabilities extends converter_1.Converter {
|
|
|
598
712
|
// Getting cicd_ArtifactVulnerability records
|
|
599
713
|
const cicdArtifactMappingsAWSV2 = await this.getCICDMappingsFromAWSV2(this.awsv2_vulns, ctx.farosClient, ctx);
|
|
600
714
|
res.push(...cicdArtifactMappingsAWSV2);
|
|
601
|
-
|
|
715
|
+
// For AWS v1 vulns, we try to get the associations by commit sha first,
|
|
716
|
+
// and then by repository name if we cannot find the commit sha.
|
|
717
|
+
const [cicdArtifactMappingsAWSV1, missingAWSCommitShaUids] = await this.getCICDMappingsFromAWSByCommitSha(ctx.farosClient, ctx);
|
|
718
|
+
res.push(...cicdArtifactMappingsAWSV1);
|
|
719
|
+
const cicdArtifactMappingsAWS = await this.getCICDMappingsFromAWSByRepoName(ctx.farosClient, ctx, missingAWSCommitShaUids);
|
|
602
720
|
res.push(...cicdArtifactMappingsAWS);
|
|
603
721
|
await this.updateExistingVulnerabilities(ctx);
|
|
604
722
|
this.printReport(ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vulnerabilities.js","sourceRoot":"","sources":["../../../src/converters/vanta/vulnerabilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vulnerabilities.js","sourceRoot":"","sources":["../../../src/converters/vanta/vulnerabilities.ts"],"names":[],"mappings":"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"}
|