mirror of
https://github.com/kubescape/kubescape.git
synced 2026-03-03 10:10:36 +00:00
52 lines
1.6 KiB
Go
52 lines
1.6 KiB
Go
package containerscan
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/armosec/armoapi-go/armotypes"
|
|
)
|
|
|
|
func (layer *ScanResultLayer) GetFilesByPackage(pkgname string) (files *PkgFiles) {
|
|
for _, pkg := range layer.Packages {
|
|
if pkg.PackageName == pkgname {
|
|
return &pkg.Files
|
|
}
|
|
}
|
|
|
|
return &PkgFiles{}
|
|
}
|
|
|
|
func (layer *ScanResultLayer) GetPackagesNames() []string {
|
|
pkgsNames := []string{}
|
|
for _, pkg := range layer.Packages {
|
|
pkgsNames = append(pkgsNames, pkg.PackageName)
|
|
}
|
|
return pkgsNames
|
|
}
|
|
|
|
func (scanresult *ScanResultReport) GetDesignatorsNContext() (*armotypes.PortalDesignator, []armotypes.ArmoContext) {
|
|
designatorsObj := armotypes.AttributesDesignatorsFromWLID(scanresult.WLID)
|
|
designatorsObj.Attributes["containerName"] = scanresult.ContainerName
|
|
designatorsObj.Attributes["customerGUID"] = scanresult.CustomerGUID
|
|
contextObj := armotypes.DesignatorToArmoContext(designatorsObj, "designators")
|
|
return designatorsObj, contextObj
|
|
}
|
|
|
|
func (scanresult *ScanResultReport) Validate() bool {
|
|
if scanresult.CustomerGUID == "" || (scanresult.ImgHash == "" && scanresult.ImgTag == "") || scanresult.Timestamp <= 0 {
|
|
return false
|
|
}
|
|
|
|
//TODO validate layers & vuls
|
|
|
|
return true
|
|
}
|
|
|
|
func (v *Vulnerability) IsRCE() bool {
|
|
desc := strings.ToLower(v.Description)
|
|
|
|
isRCE := strings.Contains(v.Description, "RCE")
|
|
|
|
return isRCE || strings.Contains(desc, "remote code execution") || strings.Contains(desc, "remote command execution") || strings.Contains(desc, "arbitrary code") || strings.Contains(desc, "code execution") || strings.Contains(desc, "code injection") || strings.Contains(desc, "command injection") || strings.Contains(desc, "inject arbitrary commands")
|
|
}
|