Documentation
¶
Index ¶
- func Ptr[T any](v T) *T
- type BaseMetricV3Data
- type CPEInfo
- type CPEMatchData
- type CVE
- type CVEData
- type CVEDataMetaData
- type CVEResponse
- type CVSSV3Data
- type ConfigurationsData
- type DescriptionData
- type DescriptionDataItem
- type EKVJson
- type EPSS
- type EPSSCsv
- type GetVulnerabilityRequest
- type GetVulnerabilityResponse
- type ImpactData
- type ImportRequest
- type ImportResponse
- type KEV
- type ListProductVulnerabilityRequest
- type ListProductVulnerabilityResponse
- type ListVulnerabilityRequest
- type ListVulnerabilityResponse
- type NVDAPI20Configuration
- type NVDAPI20CpeMatch
- type NVDAPI20CvssDataV2
- type NVDAPI20CvssDataV31
- type NVDAPI20CvssMetricV2
- type NVDAPI20CvssMetricV31
- type NVDAPI20Description
- type NVDAPI20Metrics
- type NVDAPI20Node
- type NVDAPI20Vulnerability
- type NodeData
- type PoC
- type Repository
- type Vulnerability
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BaseMetricV3Data ¶
type BaseMetricV3Data struct {
CVSSV3 CVSSV3Data `json:"cvssV3,omitempty"`
}
type CPEInfo ¶
type CPEInfo struct {
CPEPrefix *string `json:"cpe_prefix"`
CPEVersion *string `json:"cpe_version"`
CPEPart *string `json:"cpe_part"`
CPEVendor *string `json:"cpe_vendor"`
CPEProduct *string `json:"cpe_product" gorm:"column:cpe_product"`
CPEProductVersion *string `json:"cpe_product_version"`
CPEUpdate *string `json:"cpe_update"`
CPEEdition *string `json:"cpe_edition"`
CPELanguage *string `json:"cpe_language"`
CPESWEdition *string `json:"cpe_sw_edition"`
CPETargetSW *string `json:"cpe_target_sw" gorm:"column:cpe_target_sw"`
CPETargetHW *string `json:"cpe_target_hw"`
CPEOther *string `json:"cpe_other"`
}
CPEInfo [CPE 2.3 format] cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
type CPEMatchData ¶
type CPEMatchData struct {
Vulnerable bool `json:"vulnerable"`
CPE23Uri string `json:"cpe23Uri"`
VersionStartIncluding string `json:"versionStartIncluding,omitempty"`
VersionStartExcluding string `json:"versionStartExcluding,omitempty"`
VersionEndIncluding string `json:"versionEndIncluding,omitempty"`
VersionEndExcluding string `json:"versionEndExcluding,omitempty"`
}
func (*CPEMatchData) MatchVersion ¶
func (c *CPEMatchData) MatchVersion(cpeVendor, cpeProduct, versionStr string) bool
type CVE ¶
type CVE struct {
CVEID *string `json:"cve_id,omitempty" gorm:"column:cve_id;primaryKey"`
Assigner *string `json:"assigner,omitempty" gorm:"column:assigner"`
Description *string `json:"description,omitempty" gorm:"column:description"`
PublishedDate *string `json:"published_date,omitempty" gorm:"column:published_date"`
LastModifiedDate *string `json:"last_modified_date,omitempty" gorm:"column:last_modified_date"`
BaseScore *float64 `json:"base_score,omitempty" gorm:"column:base_score"`
BaseSeverity *string `json:"base_severity,omitempty" gorm:"column:base_severity"`
VectorString *string `json:"vector_string,omitempty" gorm:"column:vector_string"`
CPEProduct *string `json:"cpe_product,omitempty" gorm:"column:cpe_product"`
CPETargetSW *string `json:"cpe_target_sw,omitempty" gorm:"column:cpe_target_sw"`
Data *string `json:"data,omitempty" gorm:"column:data"`
CreatedAt *time.Time `json:"created_at,omitempty" gorm:"column:created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty" gorm:"column:updated_at"`
}
func ConvertCVEJsonToCVE ¶
func ConvertCVEJsonToCVE(cveJson *Vulnerability) (*CVE, error)
type CVEData ¶
type CVEData struct {
DataType string `json:"data_type"`
DataFormat string `json:"data_format"`
DataVersion string `json:"data_version"`
CVEDataMeta CVEDataMetaData `json:"CVE_data_meta"`
Description DescriptionData `json:"description"`
}
type CVEDataMetaData ¶
type CVEResponse ¶
type CVEResponse struct {
// Processed vulnerabilities (populated from CveItems)
Vulnerabilities []*Vulnerability `json:"CVE_Items"`
// fkie-cad/nvd-json-data-feeds format fields
Timestamp *string `json:"timestamp"`
CveCount *int `json:"cve_count"`
FeedName *string `json:"feed_name"`
Source *string `json:"source"`
CveItems []*NVDAPI20Vulnerability `json:"cve_items"`
}
type CVSSV3Data ¶
type ConfigurationsData ¶
type ConfigurationsData struct {
Nodes []NodeData `json:"nodes,omitempty"`
}
func (*ConfigurationsData) MatchVersion ¶
func (c *ConfigurationsData) MatchVersion(cpeVendor, cpeProduct, versionStr string) bool
type DescriptionData ¶
type DescriptionData struct {
DescriptionData []DescriptionDataItem `json:"description_data"`
}
type DescriptionDataItem ¶
type EPSS ¶
type EPSS struct {
CVEID *string `json:"cve_id,omitempty" gorm:"column:cve_id;primaryKey"`
Epss *float64 `json:"epss,omitempty" gorm:"column:epss"`
Percentile *float64 `json:"percentile,omitempty" gorm:"column:percentile"`
CreatedAt *time.Time `json:"created_at,omitempty" gorm:"column:created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty" gorm:"column:updated_at"`
}
type GetVulnerabilityRequest ¶
type GetVulnerabilityResponse ¶
type GetVulnerabilityResponse struct {
Vulnerability *Vulnerability `json:"vulnerability,omitempty"`
}
type ImpactData ¶
type ImpactData struct {
BaseMetricV3 BaseMetricV3Data `json:"baseMetricV3,omitempty"`
}
type ImportRequest ¶
type ImportRequest struct {
Modified *bool `form:"modified" json:"modified" binding:"omitempty"`
Year *int `form:"year" json:"year" binding:"omitempty,min=2002"`
SkipEPSS *bool `form:"skip_epss" json:"skip_epss" binding:"omitempty"`
SkipKEV *bool `form:"skip_kev" json:"skip_kev" binding:"omitempty"`
}
type ImportResponse ¶
type ImportResponse struct {
Message string `json:"message"`
}
type KEV ¶
type KEV struct {
CveID *string `json:"cveID,omitempty" gorm:"column:cve_id;primary_key"`
VenderProject *string `json:"vendorProject,omitempty" gorm:"column:vender_project"`
Product *string `json:"product,omitempty" gorm:"column:product"`
VulnerabilityName *string `json:"vulnerabilityName,omitempty" gorm:"column:vulnerability_name"`
DateAdded *string `json:"dateAdded,omitempty" gorm:"column:date_added"`
ShortDescription *string `json:"shortDescription,omitempty" gorm:"column:short_description"`
RequiredAction *string `json:"requiredAction,omitempty" gorm:"column:required_action"`
DueDate *string `json:"dueDate,omitempty" gorm:"column:due_date"`
KnownRansomewareCampaignUse *string `json:"knownRansomwareCampaignUse,omitempty" gorm:"column:known_ransomeware_campaign_use"`
Notes *string `json:"notes,omitempty" gorm:"column:notes"`
CWEs *string `json:"-" gorm:"column:cwes"`
CWEArray []string `json:"cwes,omitempty" gorm:"-"` // for JSON parsing
CreatedAt *time.Time `json:"created_at,omitempty" gorm:"column:created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty" gorm:"column:updated_at"`
}
type ListProductVulnerabilityRequest ¶
type ListProductVulnerabilityRequest struct {
CPEVendor *string `form:"cpe_vendor" json:"cpe_vendor" binding:"required"`
CPEProduct *string `form:"cpe_product" json:"cpe_product" binding:"required"`
CPETargetSw *string `form:"cpe_target_sw" json:"cpe_target_sw" binding:"omitempty"`
Version *string `form:"version" json:"version" binding:"required"`
// Amount of information in the response
Full *bool `form:"full" json:"full" binding:"omitempty"`
}
type ListProductVulnerabilityResponse ¶
type ListProductVulnerabilityResponse struct {
Total int64 `json:"total"`
Vulnerabilities []*Vulnerability `json:"vulnerabilities"`
}
type ListVulnerabilityRequest ¶
type ListVulnerabilityRequest struct {
// Filter
CVEID *string `form:"cve_id" json:"cve_id" binding:"omitempty,min=13"`
BaseSeverity *string `form:"base_severity" json:"base_severity" binding:"omitempty"`
BaseScore *string `form:"base_score" json:"base_score" binding:"omitempty,min=0,max=10"`
CPEPart *string `form:"cpe_part" json:"cpe_part" binding:"omitempty,oneof=a h p"`
CPEVendor *string `form:"cpe_vendor" json:"cpe_vendor" binding:"omitempty"`
CPEProduct *string `form:"cpe_product" json:"cpe_product" binding:"omitempty"`
CPETargetSw *string `form:"cpe_target_sw" json:"cpe_target_sw" binding:"omitempty"`
Description *string `form:"description" json:"description" binding:"omitempty"`
PublishedDateFrom *string `form:"published_date_from" json:"published_date_from" binding:"omitempty,datetime=2006-01-02T15:04:05Z"`
PublishedDateTo *string `form:"published_date_to" json:"published_date_to" binding:"omitempty,datetime=2006-01-02T15:04:05Z"`
LastModifiedDateFrom *string `form:"last_modified_date_from" json:"last_modified_date_from" binding:"omitempty,datetime=2006-01-02T15:04:05Z"`
LastModifiedDateTo *string `form:"last_modified_date_to" json:"last_modified_date_to" binding:"omitempty,datetime=2006-01-02T15:04:05Z"`
// Pagination
Limit *int `form:"limit" json:"limit" binding:"omitempty,min=1,max=1000"`
Offset *int `form:"offset" json:"offset" binding:"omitempty,min=0"`
// Sort
Sort *string `` /* 159-byte string literal not displayed */
Order *string `form:"order" json:"order" binding:"omitempty,oneof=asc desc"`
// Amount of information in the response
Full *bool `form:"full" json:"full" binding:"omitempty"`
}
type ListVulnerabilityResponse ¶
type ListVulnerabilityResponse struct {
Total int64 `json:"total"`
Limit int64 `json:"limit"`
Offset int64 `json:"offset"`
Vulnerabilities []*Vulnerability `json:"vulnerabilities,omitempty"`
}
type NVDAPI20Configuration ¶
type NVDAPI20Configuration struct {
Nodes []NVDAPI20Node `json:"nodes"`
}
type NVDAPI20CpeMatch ¶
type NVDAPI20CpeMatch struct {
Vulnerable bool `json:"vulnerable"`
Criteria string `json:"criteria"`
VersionStartIncluding string `json:"versionStartIncluding,omitempty"`
VersionStartExcluding string `json:"versionStartExcluding,omitempty"`
VersionEndIncluding string `json:"versionEndIncluding,omitempty"`
VersionEndExcluding string `json:"versionEndExcluding,omitempty"`
}
type NVDAPI20CvssDataV2 ¶
type NVDAPI20CvssDataV31 ¶
type NVDAPI20CvssMetricV2 ¶
type NVDAPI20CvssMetricV2 struct {
Source string `json:"source"`
Type string `json:"type"`
CvssData NVDAPI20CvssDataV2 `json:"cvssData"`
}
type NVDAPI20CvssMetricV31 ¶
type NVDAPI20CvssMetricV31 struct {
Source string `json:"source"`
Type string `json:"type"`
CvssData NVDAPI20CvssDataV31 `json:"cvssData"`
}
type NVDAPI20Description ¶
type NVDAPI20Metrics ¶
type NVDAPI20Metrics struct {
CvssMetricV31 []NVDAPI20CvssMetricV31 `json:"cvssMetricV31,omitempty"`
CvssMetricV2 []NVDAPI20CvssMetricV2 `json:"cvssMetricV2,omitempty"`
}
type NVDAPI20Node ¶
type NVDAPI20Node struct {
Operator string `json:"operator"`
Negate bool `json:"negate"`
CpeMatch []NVDAPI20CpeMatch `json:"cpeMatch"`
}
type NVDAPI20Vulnerability ¶
type NVDAPI20Vulnerability struct {
ID string `json:"id"`
SourceIdentifier string `json:"sourceIdentifier"`
Published string `json:"published"`
LastModified string `json:"lastModified"`
VulnStatus string `json:"vulnStatus"`
Descriptions []NVDAPI20Description `json:"descriptions"`
Metrics *NVDAPI20Metrics `json:"metrics,omitempty"`
Configurations []NVDAPI20Configuration `json:"configurations,omitempty"`
}
NVDAPI20Vulnerability represents CVE data in NVD API 2.0 format (used by fkie-cad)
type NodeData ¶
type NodeData struct {
CPEMatch []CPEMatchData `json:"cpe_match,omitempty"`
}
type PoC ¶
type PoC struct {
CVEID string `json:"cve_id" gorm:"column:cve_id;primary_key"`
RepositoryID uint64 `json:"repository_id" gorm:"column:repository_id;primary_key"`
RepoName *string `json:"repo_name,omitempty" gorm:"column:repo_name"`
FullName *string `json:"full_name,omitempty" gorm:"column:full_name"`
URL *string `json:"url,omitempty" gorm:"column:url"`
Description *string `json:"description,omitempty" gorm:"column:description"`
PushedAt *string `json:"pushed_at,omitempty" gorm:"column:pushed_at"`
Readme *string `json:"readme,omitempty" gorm:"column:readme"`
CreatedAt *time.Time `json:"created_at,omitempty" gorm:"column:created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty" gorm:"column:updated_at"`
}
type Repository ¶
type Vulnerability ¶
type Vulnerability struct {
CVE *CVEData `json:"cve,omitempty"`
Configurations *ConfigurationsData `json:"configurations,omitempty"`
Impact *ImpactData `json:"impact,omitempty"`
PublishedDate *string `json:"publishedDate,omitempty"`
LastModifiedDate *string `json:"lastModifiedDate,omitempty"`
EPSS *float64 `json:"epss,omitempty"`
KEV *KEV `json:"kev,omitempty"`
PoC []*PoC `json:"poc,omitempty"`
}
func ConvertNVDAPI20ToVulnerability ¶
func ConvertNVDAPI20ToVulnerability(nvdVul *NVDAPI20Vulnerability) (*Vulnerability, error)
ConvertNVDAPI20ToVulnerability converts NVD API 2.0 format to legacy Vulnerability format
func FormatVulnerability ¶
Click to show internal directories.
Click to hide internal directories.