providers/rbs/schema/schema.go (126 lines of code) (raw):
// Copyright (c) Facebook, Inc. and its affiliates.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package schema
type VulnerabilityResult struct {
TotalEntries int `json:"total_entries"`
CurrentPage int `json:"current_page"`
TotalPages int `json:"total_pages"`
Vulnerabilities []*Vulnerability `json:"results"`
}
type Vulnerability struct {
VulndbID int `json:"vulndb_id"`
Title string `json:"title"`
VulndbPublishedDate string `json:"vulndb_published_date"`
VulndbLastModified string `json:"vulndb_last_modified"`
DisclosureDate string `json:"disclosure_date"`
DiscoveryDate string `json:"discovery_date"`
ExploitPublishDate string `json:"exploit_publish_date"`
Keywords string `json:"keywords"`
Description string `json:"description"`
Solution string `json:"solution"`
ManualNotes string `json:"manual_notes"`
TDescription string `json:"t_description"`
SolutionDate string `json:"solution_date"`
VendorInformedDate string `json:"vendor_informed_date"`
VendorAckDate string `json:"vendor_ack_date"`
ThirdPartySolutionDate string `json:"third_party_solution_date"`
Changelogs []*Changelog `json:"changelog"`
Classifications []*Classification `json:"classifications"`
Authors []*Author `json:"authors"`
ExtReferences []*ExtReference `json:"ext_references"`
CVSSMetrics []*CVSSMetric `json:"cvss_metrics"`
CVSS3Metrics []*CVSS3Metric `json:"cvss_version_three_metrics"`
Vendors []*Vendor `json:"vendors"`
Packages []*Package `json:"packages"`
NVDAdditionalInfo []*NVDAdditionalInfo `json:"nvd_additional_information"`
}
type Changelog struct {
Date string `json:"date"`
Description string `json:"description"`
}
type Classification struct {
ID int `json:"id"`
Name string `json:"name"`
Longname string `json:"longname"`
Description string `json:"description"`
}
type Author struct {
ID int `json:"id"`
Name string `json:"name"`
Company string `json:"company"`
Email string `json:"email"`
CompanyURL string `json:"company_url"`
Country string `json:"country"`
}
type ExtReference struct {
Value string `json:"value"`
Type string `json:"type"`
}
type CVSSMetric struct {
ID int `json:"id"`
AccessVector string `json:"access_vector"`
AccessComplexity string `json:"access_complexity"`
Authentication string `json:"authentication"`
ConfidentialityImpact string `json:"confidentiality_impact"`
IntegrityImpact string `json:"integrity_impact"`
AvailabilityImpact string `json:"availability_impact"`
Source string `json:"source"`
GeneratedOn string `json:"generated_on"`
CVEID string `json:"cve_id"`
Score float64 `json:"score"`
CalculatedCVSSBaseScore float64 `json:"calculated_cvss_base_score"`
}
type CVSS3Metric struct {
ID int `json:"id"`
AttackVector string `json:"attack_vector"`
AttackComplexity string `json:"attack_complexity"`
PrivilegesRequired string `json:"privileges_required"`
UserInteraction string `json:"user_interaction"`
Scope string `json:"scope"`
ConfidentialityImpact string `json:"confidentiality_impact"`
IntegrityImpact string `json:"integrity_impact"`
AvailabilityImpact string `json:"availability_impact"`
Source string `json:"source"`
GeneratedOn string `json:"generated_on"`
CVEID string `json:"cve_id"`
Score float64 `json:"score"`
CalculatedCVSSBaseScore float64 `json:"calculated_cvss_base_score"`
}
type Vendor struct {
ID int `json:"id"`
Name string `json:"name"`
Products []*Product `json:"products"`
}
type Product struct {
ID int `json:"id"`
Name string `json:"name"`
Versions []*Version `json:"versions"`
}
type Version struct {
ID int `json:"id"`
Name string `json:"name"`
Affected string `json:"affected"`
CPEs []*CPE `json:"cpe"`
}
type CPE struct {
CPE string `json:"cpe"`
Type string `json:"type"`
}
type Package struct {
OS string `json:"OS"`
OSVersion string `json:"OSVersion"`
OSArchitecture string `json:"OSArchitecture"`
PackageName string `json:"packageName"`
PackageVersion string `json:"packageVersion"`
Operator string `json:"operator"`
PackageFileName string `json:"packageFileName"`
Purl string `json:"purl"`
}
type NVDAdditionalInfo struct {
CVEID string `json:"cve_id"`
Summary string `json:"summary"`
CWEID string `json:"cwe_id"`
// dropped cvss_score, it's already included in the vulndb
References []struct {
Source string `json:"source"`
Name string `json:"name"`
URL string `json:"url"`
} `json:"references"`
// droppped vulnerable configurations, as we construct it from vendors.products.versions.cpe
}