Skip to content

Commit 4e39be6

Browse files
fix: update CVE's severity and store multiple same CVE's in multiple packages (#5168)
* introducing new col in image scan result table and deprecating in cve-store table and handling backward compatibility * fix * migration number changed
1 parent 4cf44b2 commit 4e39be6

6 files changed

+17
-1
lines changed

internal/sql/repository/security/CveStoreRepository.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type CveStore struct {
3030
tableName struct{} `sql:"cve_store" pg:",discard_unknown_columns"`
3131
Name string `sql:"name,pk"`
3232
Severity Severity `sql:"severity,notnull"`
33-
Package string `sql:"package,notnull"`
33+
Package string `sql:"package,notnull"` // deprecated
3434
Version string `sql:"version,notnull"`
3535
FixedVersion string `sql:"fixed_version,notnull"`
3636
sql.AuditLog

internal/sql/repository/security/ImageScanResultRepository.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ type ImageScanExecutionResult struct {
2727
CveStoreName string `sql:"cve_store_name,notnull"`
2828
ImageScanExecutionHistoryId int `sql:"image_scan_execution_history_id"`
2929
ScanToolId int `sql:"scan_tool_id"`
30+
Package string `sql:"package"`
3031
CveStore CveStore
3132
ImageScanExecutionHistory ImageScanExecutionHistory
3233
}

pkg/security/ImageScanService.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,10 @@ func (impl ImageScanServiceImpl) FetchExecutionDetailResult(request *ImageScanRe
372372
Severity: item.CveStore.Severity.String(),
373373
//Permission: "BLOCK", TODO
374374
}
375+
if len(item.Package) > 0 {
376+
// data already migrated hence get package from image_scan_execution_result
377+
vulnerability.Package = item.Package
378+
}
375379
if item.CveStore.Severity == security.Critical {
376380
highCount = highCount + 1
377381
} else if item.CveStore.Severity == security.Medium {

pkg/security/policyService.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,8 +242,10 @@ func (impl *PolicyServiceImpl) VerifyImage(verifyImageRequest *VerifyImageReques
242242
impl.logger.Errorw("error in fetching vulnerability ", "err", err)
243243
return nil, err
244244
}
245+
cveNameToScanResultPackageNameMapping := make(map[string]string)
245246
var cveStores []*security.CveStore
246247
for _, scanResult := range scanResults {
248+
cveNameToScanResultPackageNameMapping[scanResult.CveStoreName] = scanResult.Package
247249
cveStores = append(cveStores, &scanResult.CveStore)
248250
if _, ok := scanResultsIdMap[scanResult.ImageScanExecutionHistoryId]; !ok {
249251
scanResultsIdMap[scanResult.ImageScanExecutionHistoryId] = scanResult.ImageScanExecutionHistoryId
@@ -259,6 +261,13 @@ func (impl *PolicyServiceImpl) VerifyImage(verifyImageRequest *VerifyImageReques
259261
Version: cve.Version,
260262
FixedVersion: cve.FixedVersion,
261263
}
264+
if packageName, ok := cveNameToScanResultPackageNameMapping[cve.Name]; ok {
265+
if len(packageName) > 0 {
266+
// fetch package name from image_scan_execution_result table
267+
vr.Package = packageName
268+
}
269+
270+
}
262271
imageBlockedCves[image] = append(imageBlockedCves[image], vr)
263272
}
264273
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE "image_scan_execution_result" DROP COLUMN "package";
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ALTER TABLE "image_scan_execution_result" ADD COLUMN "package" text;

0 commit comments

Comments
 (0)