Skip to content

Commit 3020744

Browse files
fix: scan list in global security page sql injection fix (#5808)
* scan list in global security page sql injection fix * comment
1 parent bd51187 commit 3020744

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

internal/sql/repository/security/ImageScanDeployInfoRepository.go

+9-5
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,13 @@ func (impl ImageScanDeployInfoRepositoryImpl) FindByTypeMetaAndTypeId(scanObject
147147

148148
func (impl ImageScanDeployInfoRepositoryImpl) ScanListingWithFilter(request *securityBean.ImageScanFilter, size int, offset int, deployInfoIds []int) ([]*ImageScanListingResponse, error) {
149149
var models []*ImageScanListingResponse
150+
var err error
150151
query := impl.scanListingQueryBuilder(request, size, offset, deployInfoIds)
151-
_, err := impl.dbConnection.Query(&models, query, size, offset)
152+
if len(request.Severity) > 0 {
153+
_, err = impl.dbConnection.Query(&models, query, pg.In(request.Severity), pg.In(request.Severity))
154+
} else {
155+
_, err = impl.dbConnection.Query(&models, query)
156+
}
152157
if err != nil {
153158
impl.logger.Error("err", err)
154159
return []*ImageScanListingResponse{}, err
@@ -177,8 +182,8 @@ func (impl ImageScanDeployInfoRepositoryImpl) scanListQueryWithoutObject(request
177182
query = query + " AND res.cve_store_name ILIKE '%" + request.CVEName + "%'"
178183
}
179184
if len(request.Severity) > 0 {
180-
severities := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(request.Severity)), ","), "[]")
181-
query = query + fmt.Sprintf(" AND (cs.standard_severity IN (%s) OR (cs.severity IN (%s) AND cs.standard_severity IS NULL))", severities, severities)
185+
// use pg.In to inject values here wherever calling this func in case severity exists, to avoid sql injections
186+
query = query + " AND (cs.standard_severity IN (?) OR (cs.severity IN (?) AND cs.standard_severity IS NULL))"
182187
}
183188
if len(request.EnvironmentIds) > 0 {
184189
envIds := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(request.EnvironmentIds)), ","), "[]")
@@ -239,8 +244,7 @@ func (impl ImageScanDeployInfoRepositoryImpl) scanListQueryWithObject(request *s
239244
}
240245

241246
if len(request.Severity) > 0 {
242-
severities := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(request.Severity)), ","), "[]")
243-
query = query + fmt.Sprintf(" AND (cs.standard_severity IN (%s) OR (cs.severity IN (%s) AND cs.standard_severity IS NULL))", severities, severities)
247+
query = query + " AND (cs.standard_severity IN (?) OR (cs.severity IN (?) AND cs.standard_severity IS NULL))"
244248
}
245249
if len(request.EnvironmentIds) > 0 {
246250
envIds := strings.Trim(strings.Join(strings.Fields(fmt.Sprint(request.EnvironmentIds)), ","), "[]")

0 commit comments

Comments
 (0)