Skip to content

Commit ea4974b

Browse files
fix: group image vulnerabilities by base/os image (#5680)
* feat: add support for app and env sorting in scan list api and add medium, high and unknown severity support * fix: query fix for appName sort or envName sort * fix: sql script number change * fix: minor changes * fix: review fix * fix: remove dml on cve_store and handle it in code handling this versioning * fix: review comments * feat: storing target,class and type values in imageScanExecutionResults * feat: add sql script * feat: add sql script * fix: add new columns * fix: update script numbers * fix: correct down script * fix: minor fix * chore: script number update
1 parent 095d81c commit ea4974b

11 files changed

+71
-3
lines changed

internal/sql/repository/security/ImageScanDeployInfoRepository.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ func (impl ImageScanDeployInfoRepositoryImpl) scanListQueryWithoutObject(request
177177
query = query + " AND res.cve_store_name ILIKE '%" + request.CVEName + "%'"
178178
}
179179
if len(request.Severity) > 0 {
180-
severities := strings.Trim(strings.Join(strings.Fields(fmt.Sprintf("%d", request.Severity)), ","), "[]")
180+
severities := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(request.Severity)), ","), "[]")
181181
query = query + fmt.Sprintf(" AND (cs.standard_severity IN (%s) OR (cs.severity IN (%s) AND cs.standard_severity IS NULL))", severities, severities)
182182
}
183183
if len(request.EnvironmentIds) > 0 {
@@ -239,7 +239,7 @@ func (impl ImageScanDeployInfoRepositoryImpl) scanListQueryWithObject(request *s
239239
}
240240

241241
if len(request.Severity) > 0 {
242-
severities := strings.Trim(strings.Join(strings.Fields(fmt.Sprintf("%d", request.Severity)), ","), "[]")
242+
severities := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(request.Severity)), ","), "[]")
243243
query = query + fmt.Sprintf(" AND (cs.standard_severity IN (%s) OR (cs.severity IN (%s) AND cs.standard_severity IS NULL))", severities, severities)
244244
}
245245
if len(request.EnvironmentIds) > 0 {

internal/sql/repository/security/ImageScanResultRepository.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ type ImageScanExecutionResult struct {
3030
Package string `sql:"package"`
3131
Version string `sql:"version"`
3232
FixedVersion string `sql:"fixed_version"`
33+
Target string `sql:"target"`
34+
Type string `sql:"type"`
35+
Class string `sql:"class"`
3336
CveStore CveStore
3437
ImageScanExecutionHistory ImageScanExecutionHistory
3538
}

pkg/security/ImageScanService.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,9 @@ func (impl ImageScanServiceImpl) FetchExecutionDetailResult(request *bean3.Image
331331
FVersion: item.FixedVersion,
332332
Package: item.CveStore.Package,
333333
Severity: item.CveStore.GetSeverity().String(),
334+
Target: item.Target,
335+
Type: item.Type,
336+
Class: item.Class,
334337
//Permission: "BLOCK", TODO
335338
}
336339
// data already migrated hence get package, version and fixedVersion from image_scan_execution_result

pkg/security/bean/bean.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ type Vulnerabilities struct {
2525
CVersion string `json:"currentVersion"`
2626
FVersion string `json:"fixedVersion"`
2727
Permission string `json:"permission"`
28+
Target string `json:"target"`
29+
Class string `json:"class"`
30+
Type string `json:"type"`
2831
}
2932

3033
func (vul *Vulnerabilities) IsCritical() bool {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
UPDATE cve_policy_control
2+
SET deleted = true, updated_on = 'now()', updated_by = '1'
3+
WHERE severity = '3' OR severity = '5';

scripts/sql/276_scan_policies.up.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
2+
-- severity 3 is for high and 5 is for unknown
3+
INSERT INTO "public"."cve_policy_control" ("global", "cluster_id", "env_id", "app_id", "cve_store_id", "action", "severity", "deleted", "created_on", "created_by", "updated_on", "updated_by") VALUES
4+
('t', NULL, NULL, NULL, NULL, '1', '3', 'f', 'now()', '1', 'now()', '1'),
5+
('t', NULL, NULL, NULL, NULL, '1', '5', 'f', 'now()', '1', 'now()', '1');
6+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
UPDATE scan_tool_metadata
2+
SET image_scan_descriptor_template = '[
3+
{
4+
"pathToVulnerabilitiesArray": "Results.#.Vulnerabilities",
5+
"name": "VulnerabilityID",
6+
"package": "PkgName",
7+
"packageVersion": "InstalledVersion",
8+
"fixedInVersion": "FixedVersion",
9+
"severity": "Severity"
10+
}
11+
]', updated_on = 'now()'
12+
WHERE name = 'TRIVY'
13+
AND version = 'V1'
14+
AND scan_target = 'IMAGE'
15+
AND active = true
16+
AND deleted = false;
17+
18+
ALTER TABLE image_scan_execution_result
19+
DROP COLUMN class,
20+
DROP COLUMN type,
21+
DROP COLUMN target;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
UPDATE scan_tool_metadata SET result_descriptor_template = '[
2+
{
3+
"pathToResultArray": "Results",
4+
"pathToVulnerabilitiesArray": "Vulnerabilities",
5+
"vulnerabilityData":{
6+
"name": "VulnerabilityID",
7+
"package": "PkgName",
8+
"packageVersion": "InstalledVersion",
9+
"fixedInVersion": "FixedVersion",
10+
"severity": "Severity"
11+
},
12+
"resultData":{
13+
"target":"Target",
14+
"class":"Class",
15+
"type":"Type"
16+
}
17+
}
18+
]',updated_on = 'now()'
19+
20+
WHERE name = 'TRIVY'
21+
AND version = 'V1'
22+
AND scan_target = 'IMAGE'
23+
AND active = true
24+
AND deleted = false;
25+
26+
ALTER TABLE image_scan_execution_result
27+
ADD COLUMN class TEXT,
28+
ADD COLUMN type TEXT,
29+
ADD COLUMN target TEXT;

wire_gen.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)