@@ -693,15 +693,24 @@ func summaryReport(
693693 scsScanOverviewWrapper wrappers.ScanOverviewWrapper ,
694694 featureFlagsWrapper wrappers.FeatureFlagsWrapper ,
695695 results * wrappers.ScanResultsCollection ,
696+ resultsParams map [string ]string ,
696697) (* wrappers.ResultSummary , error ) {
697698 if summary .HasAPISecurity () {
699+ apiSecFilterRisks , err := getFilterResultsForAPISecScanner (risksOverviewWrapper , summary .ScanID , resultsParams )
700+ if err != nil {
701+ return nil , err
702+ }
703+ if apiSecFilterRisks != nil {
704+ summary .APISecurity = * apiSecFilterRisks
705+ }
698706 apiSecRisks , err := getResultsForAPISecScanner (risksOverviewWrapper , summary .ScanID )
699707 if err != nil {
700708 return nil , err
701709 }
702- summary .APISecurity = * apiSecRisks
710+ if apiSecRisks != nil {
711+ summary .APISecurity .APICount = apiSecRisks .APICount
712+ }
703713 }
704-
705714 if summary .HasSCS () {
706715 // Getting the base SCS overview. Results counts are overwritten in enhanceWithScanSummary->countResult
707716 SCSOverview , err := getScanOverviewForSCSScanner (scsScanOverviewWrapper , summary .ScanID )
@@ -770,13 +779,13 @@ func enhanceWithScanSummary(summary *wrappers.ResultSummary, results *wrappers.S
770779 flagResponse , _ := wrappers .GetSpecificFeatureFlag (featureFlagsWrapper , wrappers .CVSSV3Enabled )
771780 criticalEnabled := flagResponse .Status
772781 if summary .HasAPISecurity () {
773- summary .EnginesResult [commonParams .APISecType ].Low = summary .APISecurity .Risks [ 3 ]
774- summary .EnginesResult [commonParams .APISecType ].Medium = summary .APISecurity .Risks [ 2 ]
775- summary .EnginesResult [commonParams .APISecType ].High = summary .APISecurity .Risks [ 1 ]
782+ summary .EnginesResult [commonParams .APISecType ].Low = summary .APISecurity .SeverityCount [ "low" ]
783+ summary .EnginesResult [commonParams .APISecType ].Medium = summary .APISecurity .SeverityCount [ "medium" ]
784+ summary .EnginesResult [commonParams .APISecType ].High = summary .APISecurity .SeverityCount [ "high" ]
776785 if ! criticalEnabled {
777786 summary .EnginesResult [commonParams .APISecType ].Critical = notAvailableNumber
778787 } else {
779- summary .EnginesResult [commonParams .APISecType ].Critical = summary .APISecurity .Risks [ 0 ]
788+ summary .EnginesResult [commonParams .APISecType ].Critical = summary .APISecurity .SeverityCount [ "critical" ]
780789 }
781790 }
782791
@@ -1211,7 +1220,7 @@ func CreateScanReport(
12111220 }
12121221 isSummaryNeeded := verifyFormatsByReportList (reportList , summaryFormats ... )
12131222 if isSummaryNeeded && ! scanPending {
1214- summary , err = summaryReport (summary , policyResponseModel , risksOverviewWrapper , scsScanOverviewWrapper , featureFlagsWrapper , results )
1223+ summary , err = summaryReport (summary , policyResponseModel , risksOverviewWrapper , scsScanOverviewWrapper , featureFlagsWrapper , results , resultsParams )
12151224 if err != nil {
12161225 return nil , err
12171226 }
@@ -2888,3 +2897,44 @@ func parseURI(summaryBaseURI string) (hostName string) {
28882897func printWarningIfIgnorePolicyOmiited () {
28892898 fmt .Printf ("\n Warning: The --ignore-policy flag was not implemented because you don’t have the required permission.\n Only users with 'override-policy-management' permission can use this flag. \n \n " )
28902899}
2900+
2901+ func getFilterResultsForAPISecScanner (risksOverviewWrapper wrappers.RisksOverviewWrapper , scanID string , resultsParams map [string ]string ) (aPISecSeveritySummary * wrappers.APISecFilteredResult , err error ) {
2902+ var apiSecRiskEntriesResult wrappers.APISecRiskEntriesResult
2903+ var errorModel * wrappers.WebError
2904+
2905+ apiSecRiskEntriesResult , errorModel , err = risksOverviewWrapper .GetFilterResultForAPISecByScanID (scanID , resultsParams )
2906+ if err != nil {
2907+ return nil , errors .Wrapf (err , "%s" , failedListingResults )
2908+ }
2909+ if errorModel != nil {
2910+ return nil , errors .Errorf ("%s: CODE: %d, %s" , failedListingResults , errorModel .Code , errorModel .Message )
2911+ }
2912+ if len (apiSecRiskEntriesResult .Entries ) > 0 {
2913+ entries := apiSecRiskEntriesResult .Entries
2914+ severityCount := make (map [string ]int )
2915+ originCount := make (map [string ]int )
2916+ totalRecords := 0
2917+ for _ , entry := range entries {
2918+ if isExploitable (entry .State ) {
2919+ sev := strings .ToLower (entry .Severity )
2920+ severityCount [sev ]++
2921+ orig := strings .ToLower (entry .Origin )
2922+ originCount [orig ]++
2923+ totalRecords ++
2924+ }
2925+ }
2926+ var riskDistribution []wrappers.RiskDistributionEntry
2927+ if originCount ["code" ] > 0 {
2928+ riskDistribution = append (riskDistribution , wrappers.RiskDistributionEntry {Origin : "code" , Total : originCount ["code" ]})
2929+ }
2930+ if originCount ["documentation" ] > 0 {
2931+ riskDistribution = append (riskDistribution , wrappers.RiskDistributionEntry {Origin : "documentation" , Total : originCount ["documentation" ]})
2932+ }
2933+ return & wrappers.APISecFilteredResult {
2934+ SeverityCount : severityCount ,
2935+ RiskDistribution : riskDistribution ,
2936+ TotalRisksCount : totalRecords ,
2937+ }, nil
2938+ }
2939+ return nil , nil
2940+ }
0 commit comments