govex

package module
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 25, 2024 License: MIT Imports: 19 Imported by: 2

README

GoVEX

Build Status Go Report Card Docs LOC License

govex is a Go package with various VEX helpers, including the following:

  1. Definition of govex structs for vulnerabilities. There is no standard format for "VEX", and there are many standards well-developed for specific purposes, so this package defines its own format. The format used here is prioritized for use cases supported by this package, currently writing tabular and text reports.
  2. Conversion of Vulnerabilities slice to a GoCharts Table via Vulnerabilities.Table() with customizable columns. This can then be exported as a CSV or XLSX file.

Contributing

  1. By contributing to this repository, you agree that your contributions will be licensed under the MIT License.
  2. Commits style uses Conventional Commits conventions available here: https://www.conventionalcommits.org/

Documentation

Index

Constants

View Source
const (
	// Vulnerability source category.
	CategoryAntiVirus = "Anti-Virus"
	CategoryContainer = "Container"
	CategoryDAST      = "DAST"
	CategoryPentest   = "Pentest"
	CategorySAST      = "SAST"
	CategorySCA       = "SCA"
	CategorySecret    = "Secret"

	Priority1 = "Priority 1"
	Priority2 = "Priority 2"
	Priority3 = "Priority 3"

	P1DoNow  = "P1 - Do Now"
	P2DoNext = "P2 - Do Next"
)
View Source
const (
	// Status categories
	StatusWithinSLA      = "Within SLA"
	StatusApproachingSLA = "Approaching SLA"
	StatusOutOfSLA       = "Out of SLA"
)
View Source
const (
	// Status fields. See `docs/status.md` for more.
	StatusIdentified    = "Identified"
	StatusAnalyzing     = "Analyzing"
	StatusValidated     = "Validated"
	StatusMitigated     = "Mitigated"
	StatusInProgress    = "In Progress"
	StatusResolved      = "Resolved"
	StatusRemediated    = "Remediated"
	StatusClosed        = "Closed"
	StatusReopened      = "Reopened"
	StatusNotApplicable = "Not Applicable"
	StatusFalsePositive = "False Positive"
	StatusDeferred      = "Deferred"      // aka postponed
	StatusRiskAccepted  = "Risk Accepted" // aka ignored
)
View Source
const (
	FieldAcceptedTime        = "Accepted Time"
	FieldAcceptedTimeRFC3339 = "Start Date"
	FieldAgeDays             = "Age"
	FieldCategory            = "Category"
	FieldDescription         = "Description"
	FieldFixVersion          = "Fixed Version"
	FieldID                  = "ID"
	FieldLibraryName         = "Library"
	FieldLibraryVersion      = "Library Version"
	FieldLibraryVersionFixed = "Library Version Fixed"
	FieldLocationPath        = "Location"
	FieldLocationLineStart   = "Location Start Line"
	FieldLocationLineEnd     = "Location End Line"
	FieldName                = "Name"
	FieldNameAndDesc         = "Name+Desc"
	FieldNameWithURL         = "Name+URL"
	FieldReferenceURL        = "Reference URL"
	FieldReferences          = "References"
	FieldResolution          = "Resolution"
	FieldSeverity            = "Severity"
	FieldSLAOpenStatus       = "Open SLA Status"
	FieldStatus              = "Status"
)
View Source
const (
	NameUnnamedVulerability = "Unnamed Vulnerability"
)

Variables

This section is empty.

Functions

func ParseField

func ParseField(field string) string

func TableColumnDefinitionSetSAST

func TableColumnDefinitionSetSAST() table.ColumnDefinitionSet

func TableColumnDefinitionSetSASTSCA added in v0.5.0

func TableColumnDefinitionSetSASTSCA() table.ColumnDefinitionSet

func TableColumnDefinitionSetSCA added in v0.2.0

func TableColumnDefinitionSetSCA() table.ColumnDefinitionSet

Types

type Library added in v0.2.0

type Library struct {
	Name         string `json:"name"`
	Description  string `json:"description"`
	Version      string `json:"version"`
	VersionFixed string `json:"versionFixed"`
}

type Location

type Location struct {
	Path      *string
	LineStart *uint
	LineEnd   *uint
}

Location provides information on where a vulnerability occurs.

func (Location) LineEndString

func (l Location) LineEndString() string

func (Location) LineStartString

func (l Location) LineStartString() string

func (Location) PathString

func (l Location) PathString() string

type SLAMap

type SLAMap map[string]int64

SLAMap provides a commen representation of SLAs by severity and day.

func SLAMapFedRAMP

func SLAMapFedRAMP() SLAMap

func (SLAMap) MustSLAStatusTimesString

func (slaMap SLAMap) MustSLAStatusTimesString(severity string, startTime *time.Time, evalTime time.Time, unknownString string) string

func (SLAMap) SLAStatusOverdue

func (slaMap SLAMap) SLAStatusOverdue(sev string, dur time.Duration) (bool, error)

func (SLAMap) SLAStatusTimesString

func (slaMap SLAMap) SLAStatusTimesString(severity string, startTime *time.Time, evalTime time.Time, unknownString string) (string, error)

type ValueOpts

type ValueOpts struct {
	SLAMap *SLAMap
}

type Vulnerabilities

type Vulnerabilities []Vulnerability

func (*Vulnerabilities) CVE20Vulnerabilities

func (vs *Vulnerabilities) CVE20Vulnerabilities() cve20.Vulnerabilities

func (*Vulnerabilities) FilterFixedInVersion

func (vs *Vulnerabilities) FilterFixedInVersion(fixVersions []string, severity string) (Vulnerabilities, error)

FilterFixedInVersion returns a filtered subset with a fix version match, including empty string.

func (*Vulnerabilities) FilterFixedInVersionAge

func (vs *Vulnerabilities) FilterFixedInVersionAge(fixVersion, baseSeverity string, slaDays uint, slaElapsed bool) Vulnerabilities

FilterFixedInVersion returns a filtered subset with a fix version match, including empty string.

func (*Vulnerabilities) FilterFunc

func (vs *Vulnerabilities) FilterFunc(fnFilterIncl func(vn Vulnerability) (bool, error)) (Vulnerabilities, error)

func (*Vulnerabilities) FilterSeverities added in v0.2.0

func (vs *Vulnerabilities) FilterSeverities(severitiesIncl []string) (Vulnerabilities, error)

func (*Vulnerabilities) IDs

func (vs *Vulnerabilities) IDs(unique bool) []string

func (*Vulnerabilities) Len added in v0.4.0

func (vs *Vulnerabilities) Len() int

func (*Vulnerabilities) LenFunc added in v0.4.0

func (vs *Vulnerabilities) LenFunc(fnFilter func(v Vulnerability) (bool, error)) (int, error)

func (*Vulnerabilities) LenSeverities added in v0.4.0

func (vs *Vulnerabilities) LenSeverities(severitiesIncl ...string) (int, error)

func (*Vulnerabilities) OrderedListMarkdownBytes added in v0.4.0

func (vs *Vulnerabilities) OrderedListMarkdownBytes(opts *ValueOpts) []byte

func (*Vulnerabilities) OrderedListMarkdownLines added in v0.4.0

func (vs *Vulnerabilities) OrderedListMarkdownLines(opts *ValueOpts) []string

func (*Vulnerabilities) ReportMarkdownLinesFixedVersion

func (vs *Vulnerabilities) ReportMarkdownLinesFixedVersion(fixVersion string, releaseDate *time.Time) ([]string, error)

func (*Vulnerabilities) ReportMarkdownLinesVulnsFixed

func (vs *Vulnerabilities) ReportMarkdownLinesVulnsFixed(fixVersion string, releaseDate *time.Time, baseSeverity string) ([]string, error)

func (*Vulnerabilities) SeverityCounts added in v0.4.0

func (vs *Vulnerabilities) SeverityCounts() maputil.Records

func (*Vulnerabilities) SeverityHistogram added in v0.4.0

func (vs *Vulnerabilities) SeverityHistogram() histogram.Histogram

func (*Vulnerabilities) SortByID

func (vs *Vulnerabilities) SortByID()

func (*Vulnerabilities) Table

func (vs *Vulnerabilities) Table(colDefs table.ColumnDefinitionSet, opts *ValueOpts) (*table.Table, error)

func (*Vulnerabilities) TableSet added in v0.2.0

func (vs *Vulnerabilities) TableSet(colDefs table.ColumnDefinitionSet, filters VulnerabilitiesFilters, addCountsToNames bool, opts *ValueOpts) (*table.TableSet, error)

type VulnerabilitiesFilter added in v0.2.0

type VulnerabilitiesFilter struct {
	Name           string
	SeveritiesIncl []string
}

type VulnerabilitiesFilters added in v0.2.0

type VulnerabilitiesFilters []VulnerabilitiesFilter

func (VulnerabilitiesFilters) HasSeverityFullCoverage added in v0.2.0

func (vfs VulnerabilitiesFilters) HasSeverityFullCoverage() bool

type VulnerabilitiesSet added in v0.3.0

type VulnerabilitiesSet struct {
	Vulnerabilities Vulnerabilities `json:"vulnerabilities"`
}

func NewVulnerabilitiesSet added in v0.5.0

func NewVulnerabilitiesSet() VulnerabilitiesSet

func ReadFileVulnerabilitiesSet added in v0.3.0

func ReadFileVulnerabilitiesSet(filename string) (*VulnerabilitiesSet, error)

func ReadFilesVulnerabilitiesSet added in v0.3.0

func ReadFilesVulnerabilitiesSet(filenames []string) (*VulnerabilitiesSet, error)

func (*VulnerabilitiesSet) WriteFileJSON added in v0.3.0

func (vs *VulnerabilitiesSet) WriteFileJSON(filename string, prefix, indent string, perm os.FileMode) error

func (*VulnerabilitiesSet) WriteFileXLSX added in v0.3.0

func (vs *VulnerabilitiesSet) WriteFileXLSX(filename, sheetname string, colDefs table.ColumnDefinitionSet, opts *ValueOpts) error

type Vulnerability

type Vulnerability struct {
	App                 string         `json:"app,omitempty"`
	ID                  string         `json:"id,omitempty"`
	Category            string         `json:"category,omitempty"`
	CVSS3Score          *float32       `json:"cvss3Score"`
	CVSS3Vector         string         `json:"cvss3Vector"`
	Description         string         `json:"description,omitempty"`
	DescriptionLang     string         `json:"descriptionLanguage,omitempty"`
	Fixed               bool           `json:"fixed,omitempty"`
	Library             Library        `json:"library"`
	Location            *Location      `json:"location,omitempty"`
	Metrics             cve20.Metrics  `json:"metrics,omitempty"`
	Name                string         `json:"name,omitempty"`
	References          markdown.Links `json:"references,omitempty"`
	ReferenceURL        string         `json:"referenceURL,omitempty"`
	Resolution          string         `json:"resolution,omitempty"`
	ResolutionTime      *time.Time     `json:"resolutionDate,omitempty"`
	Severity            string         `json:"severity,omitempty"`
	SLATimeStart        *time.Time     `json:"slaTimeStart,omitempty"`
	SLAStatus           string         `json:"slaStatus,omitempty"`
	SourceIdentifier    string         `json:"sourceIdentifier"`
	StartTime           *time.Time     `json:"startDate,omitempty"`
	Status              string         `json:"status,omitempty"`
	VersionEndExcluding string         `json:"versionEndExcluding,omitempty"`

	ProcSLAEvalTime time.Time
}

func (*Vulnerability) AgeDays

func (vn *Vulnerability) AgeDays(evalTime time.Time, unknownDays int) int

func (*Vulnerability) BuildSLAStatusString

func (vn *Vulnerability) BuildSLAStatusString(slaMapDays SLAMap, slaEvalTime time.Time, unknownString string) string

func (*Vulnerability) CVE

func (vn *Vulnerability) CVE() cve20.CVE

func (*Vulnerability) InflateSeverity added in v0.2.0

func (vn *Vulnerability) InflateSeverity(sm severity.SeverityMap) error

func (*Vulnerability) StartTimeString

func (vn *Vulnerability) StartTimeString(layout string, unsetTimeString string) string

func (*Vulnerability) Value

func (vn *Vulnerability) Value(field, defaultValue string, opts *ValueOpts) string

func (*Vulnerability) Values

func (vn *Vulnerability) Values(colDefs table.ColumnDefinitions, opts *ValueOpts) []string

func (*Vulnerability) ValuesStrings

func (vn *Vulnerability) ValuesStrings(fields []string, opts *ValueOpts) []string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL