Documentation ¶
Overview ¶
This package contains the OvalFetcher definition which is being used for fetching update information on OVAL format see: https://oval.mitre.org/about/faqs.html#a1
Example of an oval definition <oval_definitions xmlns=.....>
<definitions> <definition> <metadata> <title>CVE-1111-11</title> <description>blablabla</description> <reference source="CVE" ref_id="CVE-1111-11" ref_url="http...."/> <reference source="RHSA" ref_id="RHSA-111:11" ref_url="http...."/> </metadata> <criteria operator="AND"> <criterion test_ref="123" comment="glibc is ...."> </criterion> <criterion test_ref="456" comment=".... is signed with Red Hat...."> </criterion> </criteria> </definition> </definitions> <tests> ... </tests> <objects> ... </objects> <states> ... </states>
</oval_definitions> see more complete examples here https://oval.mitre.org/language/about/definition.html The methods here use an interface (see below) that must be implemented for each Distribution in updated/fetchers/
Index ¶
- type OSInfo
- type OvalFetcher
- func (f *OvalFetcher) Clean()
- func (f *OvalFetcher) Criterions(node criteria) [][]criterion
- func (f *OvalFetcher) FetchUpdate(datastore database.Datastore) (resp updater.FetcherResponse, err error)
- func (f *OvalFetcher) ParseOval(ovalReader io.Reader) (vulnerabilities []database.Vulnerability, err error)
- func (f *OvalFetcher) Possibilities(node criteria) [][]criterion
- func (f *OvalFetcher) ToFeatureVersions(possibilities [][]criterion) []database.FeatureVersion
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type OSInfo ¶
type OSInfo interface { // ParsePackageNameVersion should, given a comment in a criterion, return // the name and the version of the package. // For example, if the comment is // glibc is earlier than 3.2 // it should return glibc and 3.2. // // This is based on the assumption that the distributions generate the // comments automatically and they won't change (I know, not very // reliable...). ParsePackageNameVersion(comment string) (string, string) // ParseOsVersion should, given a comment in a criterion, return the // version of the Operating System. // For example, if the comment is // SUSE Linux Enterpise Server 12 is installed // should return 12 // // This is based on the assumption that the distributions generate the // comments automatically and they won't change it (I know, not very // reliable...). ParseOsVersion(comment string) string // Given a line, parse for the xml file that contains the oval definition // and returns the filename. // For example if the line contains // com.redhat.rhsa-2003.xml, this will be returned. // // This is being used in conjunction with OvalUri (see below). Oval Uri // contains a list of files, and you need ParseFilenameDist to get the // right ones. ParseFilenameDist(line string) string // OvalUri returns the url where the oval definitions are stored for given // distributions. See examples: // https://www.redhat.com/security/data/oval/ // http://ftp.suse.com/pub/projects/security/oval/ OvalURI() string // DistName returns the distribution name. Mostly used for debugging // purposes. DistName() string // IgnoredCriterions returns a list of strings that must be ignored when // parsing the criterions. // Oval parses parses all criterions by default trying to identify either // package name and version or distribution version. IgnoredCriterions() []string // SecToken returns a string that is compared with the value of // reference.source in order to know if that is a security reference for, // for example, using its url value. // Example return values: CVE, RHSA. SecToken() string // Namespace stores the namespace that will be used in clair to store the // vulnerabilities. Namespace() string }
OSInfo interface contains specifics methods for parsing OVAL definitions that must be implemented by each Linux Distribution that uses OVAL i.e. Red Hat and SUSE
type OvalFetcher ¶
type OvalFetcher struct { // OsInfo contains specifics to each Linux Distribution (see below) OsInfo OSInfo }
OvalFetcher implements updater.Fetcher.
func (*OvalFetcher) Criterions ¶
func (f *OvalFetcher) Criterions(node criteria) [][]criterion
Get Criterions elements from a criteria element
func (*OvalFetcher) FetchUpdate ¶
func (f *OvalFetcher) FetchUpdate(datastore database.Datastore) (resp updater.FetcherResponse, err error)
FetchUpdate gets vulnerability updates from the OVAL definitions.
func (*OvalFetcher) ParseOval ¶
func (f *OvalFetcher) ParseOval(ovalReader io.Reader) (vulnerabilities []database.Vulnerability, err error)
Parse an Oval file.
func (*OvalFetcher) Possibilities ¶
func (f *OvalFetcher) Possibilities(node criteria) [][]criterion
Get Possibilities from a criteria element
func (*OvalFetcher) ToFeatureVersions ¶
func (f *OvalFetcher) ToFeatureVersions(possibilities [][]criterion) []database.FeatureVersion
Parse criterions into an array of FeatureVersion for storing into the database