Documentation
¶
Overview ¶
Package detector provides the interface for security-related detection plugins.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Advisory ¶
type Advisory struct {
// A unique ID for the finding.
ID *AdvisoryID
Type TypeEnum
// Title, short description and recommendation steps for the finding. Users should be able to rely
// on these fields to understand the vulnerability and remediate it.
// Title of the finding, e.g. "CVE-2024-1234 - RCE Vulnerability on Foo".
Title string
// Description of the finding, e.g. "Foo prior to version 1.2.3 is affected by a Remote Code
// Execution vulnerability.".
Description string
// Recommendation for how to remediate the finding, e.g. "Upgrade Foo to version 1.2.4 or
// higher.".
Recommendation string
Sev *Severity
}
Advisory describes a security finding and how to remediate it. It should not contain any information specific to the target (e.g. which files were found vulnerable).
type AdvisoryID ¶
type AdvisoryID struct {
Publisher string // e.g. "CVE".
Reference string // e.g. "CVE-2023-1234".
}
AdvisoryID is a unique identifier per advisory.
type Detector ¶
type Detector interface {
plugin.Plugin
// RequiredExtractors returns a list of Extractors that need to be enabled for this
// Detector to run.
RequiredExtractors() []string
// Scan performs the security scan, considering scanRoot to be the root directory.
// Implementations may use PackageIndex to check if a relevant software package is installed and
// terminate early if it's not.
Scan(c context.Context, scanRoot *scalibrfs.ScanRoot, px *packageindex.PackageIndex) ([]*Finding, error)
}
Detector is the interface for a security detector plugin, used to scan for security findings such as vulnerabilities.
type Finding ¶
type Finding struct {
// Info specific to the finding. Should always be the same for the same type of finding.
Adv *Advisory
// Instance-specific info such as location of the vulnerable files.
Target *TargetDetails
// Additional free-text info.
Extra string
// The name of the Detectors that found this finding. Set by the core library.
Detectors []string
}
Finding is the security finding found by a detector. It could describe things like a CVE or a CIS non-compliance. TODO(b/400910349): Move from detector into a separate package such as inventory.
func Run ¶
func Run(ctx context.Context, c stats.Collector, detectors []Detector, scanRoot *scalibrfs.ScanRoot, index *packageindex.PackageIndex) ([]*Finding, []*plugin.Status, error)
Run runs the specified detectors and returns their findings, as well as info about whether the plugin runs completed successfully.
type Severity ¶
type Severity struct {
// Required severity enum. Can be used for e.g. prioritizing filed bugs.
Severity SeverityEnum
// Optional CVSS scores, only set for vulns with CVEs.
CVSSV2 *CVSS
CVSSV3 *CVSS
}
Severity of the vulnerability.
type SeverityEnum ¶
type SeverityEnum int
SeverityEnum is an enum-based representation of the finding's severity. Some findings don't have a CVE associated so we use this enum instead to signal the urgency of the remediation.
const ( SeverityUnspecified SeverityEnum = iota SeverityMinimal SeverityLow SeverityMedium SeverityHigh SeverityCritical )
SeverityEnum values.
type TargetDetails ¶
type TargetDetails struct {
// The software affected by the finding. Taken from the Package extraction results.
Package *extractor.Package
// Location of vulnerable files not related to the package,
// e.g. config files with misconfigurations.
Location []string
}
TargetDetails contains instance-specific details about the security finding.
Directories
¶
| Path | Synopsis |
|---|---|
|
cis
|
|
|
generic_linux/etcpasswdpermissions
Package etcpasswdpermissions implements a detector for the "Ensure permissions on /etc/passwd- are configured" CIS check.
|
Package etcpasswdpermissions implements a detector for the "Ensure permissions on /etc/passwd- are configured" CIS check. |
|
cve
|
|
|
untested/cve202011978
Package cve202011978 implements a detector for CVE-2020-11978.
|
Package cve202011978 implements a detector for CVE-2020-11978. |
|
untested/cve202016846
Package cve202016846 implements a detector for CVE-2020-16846.
|
Package cve202016846 implements a detector for CVE-2020-16846. |
|
untested/cve202233891
Package cve202233891 implements a detector for CVE-2022-33891.
|
Package cve202233891 implements a detector for CVE-2022-33891. |
|
untested/cve202338408
Package cve202338408 implements a detector for CVE-2023-38408.
|
Package cve202338408 implements a detector for CVE-2023-38408. |
|
untested/cve20236019
Package cve20236019 implements a SCALIBR Detector for CVE-2023-6019 To test, install a vulnerable Ray version: python3 -m pip install ray==2.6.3 Start the Ray dashboard: python3 -c "import ray; context = ray.init(); print(context)" Run the detector
|
Package cve20236019 implements a SCALIBR Detector for CVE-2023-6019 To test, install a vulnerable Ray version: python3 -m pip install ray==2.6.3 Start the Ray dashboard: python3 -c "import ray; context = ray.init(); print(context)" Run the detector |
|
untested/cve20242912
Package cve20242912 implements a detector for CVE-2024-2912.
|
Package cve20242912 implements a detector for CVE-2024-2912. |
|
govulncheck
|
|
|
binary
Package binary implements a detector that uses govulncheck to scan for vulns on Go binaries found on the filesystem.
|
Package binary implements a detector that uses govulncheck to scan for vulns on Go binaries found on the filesystem. |
|
Package list provides a public list of SCALIBR-internal detection plugins.
|
Package list provides a public list of SCALIBR-internal detection plugins. |
|
weakcredentials
|
|
|
codeserver
Package codeserver contains a detector for weak credentials in Code-Server https://github.com/coder/code-server/.
|
Package codeserver contains a detector for weak credentials in Code-Server https://github.com/coder/code-server/. |
|
etcshadow
Package etcshadow implements a detector for weak/guessable passwords stored in /etc/shadow.
|
Package etcshadow implements a detector for weak/guessable passwords stored in /etc/shadow. |
|
filebrowser
Package filebrowser implements a detector for weak/guessable passwords on a filebrowser instance.
|
Package filebrowser implements a detector for weak/guessable passwords on a filebrowser instance. |
|
winlocal
Package winlocal implements a weak passwords detector for local accounts on Windows.
|
Package winlocal implements a weak passwords detector for local accounts on Windows. |
|
winlocal/samreg
Package samreg provides a wrapper around the SAM registry.
|
Package samreg provides a wrapper around the SAM registry. |
|
winlocal/systemreg
Package systemreg provides a wrapper around the SYSTEM registry.
|
Package systemreg provides a wrapper around the SYSTEM registry. |