Skip to content

Commit a3dad7d

Browse files
committed
add a test case
1 parent 344a3e1 commit a3dad7d

File tree

4 files changed

+295
-15
lines changed

4 files changed

+295
-15
lines changed

detector/vuls2/vendor.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,8 @@ func cveContentSourceLink(ccType models.CveContentType, v vulnerabilityTypes.Vul
486486
return fmt.Sprintf("https://ubuntu.com/security/%s", v.Content.ID)
487487
case models.Nvd:
488488
return fmt.Sprintf("https://nvd.nist.gov/vuln/detail/%s", v.Content.ID)
489+
case models.SUSE:
490+
return fmt.Sprintf("https://www.suse.com/security/cve/%s", v.Content.ID)
489491
default:
490492
return ""
491493
}
@@ -772,7 +774,7 @@ func toVuls0Confidence(e ecosystemTypes.Ecosystem, s sourceTypes.SourceID) model
772774
DetectionMethod: models.DetectionMethod("EPELMatch"),
773775
SortOrder: 1,
774776
}
775-
case ecosystemTypes.EcosystemTypeRedHat, ecosystemTypes.EcosystemTypeFedora, ecosystemTypes.EcosystemTypeAlma, ecosystemTypes.EcosystemTypeRocky, ecosystemTypes.EcosystemTypeOracle, ecosystemTypes.EcosystemTypeAlpine:
777+
case ecosystemTypes.EcosystemTypeRedHat, ecosystemTypes.EcosystemTypeFedora, ecosystemTypes.EcosystemTypeAlma, ecosystemTypes.EcosystemTypeRocky, ecosystemTypes.EcosystemTypeOracle, ecosystemTypes.EcosystemTypeAlpine, ecosystemTypes.EcosystemTypeSUSEEnterpriseServer, ecosystemTypes.EcosystemTypeSUSEEnterpriseDesktop, ecosystemTypes.EcosystemTypeSUSEEnterpriseMicro, ecosystemTypes.EcosystemTypeOpenSUSE, ecosystemTypes.EcosystemTypeOpenSUSELeap, ecosystemTypes.EcosystemTypeOpenSUSELeapMicro, ecosystemTypes.EcosystemTypeOpenSUSETumbleweed:
776778
return models.OvalMatch
777779
case ecosystemTypes.EcosystemTypeUbuntu:
778780
switch s {

detector/vuls2/vuls2.go

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import (
3535
"github.com/MaineK00n/vuls2/pkg/version"
3636

3737
"github.com/future-architect/vuls/config"
38-
"github.com/future-architect/vuls/constant"
3938
"github.com/future-architect/vuls/logging"
4039
"github.com/future-architect/vuls/models"
4140
)
@@ -123,18 +122,10 @@ func preConvert(sr *models.ScanResult) scanTypes.ScanResult {
123122
pkgs[p.Name] = base
124123
}
125124

126-
family := func() string {
127-
switch sr.Family {
128-
case constant.OpenSUSE, constant.OpenSUSELeap, constant.SUSEEnterpriseServer, constant.SUSEEnterpriseDesktop:
129-
return strings.ReplaceAll(sr.Family, ".", "-")
130-
default:
131-
return sr.Family
132-
}
133-
}()
134125
return scanTypes.ScanResult{
135126
JSONVersion: 0,
136127
ServerName: sr.ServerName,
137-
Family: ecosystemTypes.Ecosystem(family),
128+
Family: ecosystemTypes.Ecosystem(sr.Family),
138129
Release: sr.Release,
139130

140131
Kernel: scanTypes.Kernel{

detector/vuls2/vuls2_test.go

Lines changed: 291 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6202,6 +6202,297 @@ func Test_postConvert(t *testing.T) {
62026202
},
62036203
},
62046204
},
6205+
{
6206+
name: "suse (prefer unfixed to fixed)",
6207+
args: args{
6208+
scanned: scanTypes.ScanResult{
6209+
Kernel: scanTypes.Kernel{
6210+
Release: "5.3.18-59.37-default",
6211+
},
6212+
OSPackages: []scanTypes.OSPackage{
6213+
{
6214+
Name: "binutils",
6215+
Version: "2.37",
6216+
Release: "7.26.1",
6217+
Arch: "x86_64",
6218+
},
6219+
{
6220+
Name: "sles-release",
6221+
Version: "15.3",
6222+
Release: "55.4.1",
6223+
Arch: "x86_64",
6224+
},
6225+
},
6226+
},
6227+
detected: detectTypes.DetectResult{
6228+
Detected: []detectTypes.VulnerabilityData{
6229+
{
6230+
ID: "CVE-2022-4285",
6231+
Advisories: []dbTypes.VulnerabilityDataAdvisory{
6232+
{
6233+
ID: "SUSE-CU-2023:3179-1",
6234+
Contents: map[sourceTypes.SourceID]map[dataTypes.RootID][]advisoryTypes.Advisory{
6235+
sourceTypes.SUSEOVAL: {
6236+
dataTypes.RootID("CVE-2022-4285"): {
6237+
{
6238+
Content: advisoryContentTypes.Content{
6239+
ID: "SUSE-CU-2023:3179-1",
6240+
},
6241+
Segments: []segmentTypes.Segment{
6242+
{
6243+
Ecosystem: ecosystemTypes.Ecosystem("suse.linux.enterprise.server:15"),
6244+
},
6245+
},
6246+
},
6247+
},
6248+
},
6249+
},
6250+
},
6251+
},
6252+
Vulnerabilities: []dbTypes.VulnerabilityDataVulnerability{
6253+
{
6254+
ID: "CVE-2022-4285",
6255+
Contents: map[sourceTypes.SourceID]map[dataTypes.RootID][]vulnerabilityTypes.Vulnerability{
6256+
sourceTypes.SUSEOVAL: {
6257+
dataTypes.RootID("CVE-2022-4285"): {
6258+
{
6259+
Content: vulnerabilityContentTypes.Content{
6260+
ID: "CVE-2022-4285",
6261+
Severity: []severityTypes.Severity{
6262+
{
6263+
Type: severityTypes.SeverityTypeCVSSv31,
6264+
Source: "SUSE",
6265+
CVSSv31: toPtr(cvssV31Types.CVSSv31{
6266+
Vector: "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H",
6267+
BaseScore: 5.5,
6268+
BaseSeverity: "MEDIUM",
6269+
TemporalScore: 5.5,
6270+
TemporalSeverity: "MEDIUM",
6271+
EnvironmentalScore: 5.5,
6272+
EnvironmentalSeverity: "MEDIUM",
6273+
}),
6274+
},
6275+
},
6276+
},
6277+
Segments: []segmentTypes.Segment{
6278+
{
6279+
Ecosystem: ecosystemTypes.Ecosystem("suse.linux.enterprise.server:15"),
6280+
},
6281+
},
6282+
},
6283+
},
6284+
},
6285+
},
6286+
},
6287+
},
6288+
Detections: []detectTypes.VulnerabilityDataDetection{
6289+
{
6290+
Ecosystem: ecosystemTypes.Ecosystem("suse.linux.enterprise.server:15"),
6291+
Contents: map[sourceTypes.SourceID][]conditionTypes.FilteredCondition{
6292+
sourceTypes.SUSEOVAL: {
6293+
{
6294+
Criteria: criteriaTypes.FilteredCriteria{
6295+
Operator: criteriaTypes.CriteriaOperatorTypeOR,
6296+
Criterias: []criteriaTypes.FilteredCriteria{
6297+
{
6298+
Operator: criteriaTypes.CriteriaOperatorTypeAND,
6299+
Criterias: []criteriaTypes.FilteredCriteria{
6300+
{
6301+
Operator: criteriaTypes.CriteriaOperatorTypeOR,
6302+
Criterions: []criterionTypes.FilteredCriterion{
6303+
{
6304+
Criterion: criterionTypes.Criterion{
6305+
Type: criterionTypes.CriterionTypeVersion,
6306+
Version: toPtr(versioncriterionTypes.Criterion{
6307+
Vulnerable: false,
6308+
Package: vcPackageTypes.Package{
6309+
Type: vcPackageTypes.PackageTypeBinary,
6310+
Binary: &vcBinaryPackageTypes.Package{
6311+
Name: "sles-release",
6312+
},
6313+
},
6314+
Affected: &vcAffectedTypes.Affected{
6315+
Type: vcAffectedRangeTypes.RangeTypeRPMVersionOnly,
6316+
Range: []vcAffectedRangeTypes.Range{
6317+
{
6318+
Equal: "15.3",
6319+
},
6320+
},
6321+
},
6322+
}),
6323+
},
6324+
Accepts: criterionTypes.AcceptQueries{
6325+
Version: []int{1},
6326+
},
6327+
},
6328+
},
6329+
},
6330+
{
6331+
Operator: criteriaTypes.CriteriaOperatorTypeOR,
6332+
Criterions: []criterionTypes.FilteredCriterion{
6333+
{
6334+
Criterion: criterionTypes.Criterion{
6335+
Type: criterionTypes.CriterionTypeVersion,
6336+
Version: toPtr(versioncriterionTypes.Criterion{
6337+
Vulnerable: true,
6338+
FixStatus: toPtr(vcFixStatusTypes.FixStatus{
6339+
Class: vcFixStatusTypes.ClassFixed,
6340+
}),
6341+
Package: vcPackageTypes.Package{
6342+
Type: vcPackageTypes.PackageTypeBinary,
6343+
Binary: &vcBinaryPackageTypes.Package{
6344+
Name: "binutils",
6345+
Architectures: []string{
6346+
"aarch64",
6347+
"ppc64le",
6348+
"s390x",
6349+
"x86_64",
6350+
},
6351+
},
6352+
},
6353+
Affected: &vcAffectedTypes.Affected{
6354+
Type: vcAffectedRangeTypes.RangeTypeRPM,
6355+
Range: []vcAffectedRangeTypes.Range{
6356+
{
6357+
LessThan: "0:2.41-150100.7.46.1",
6358+
},
6359+
},
6360+
Fixed: []string{"0:2.41-150100.7.46.1"},
6361+
},
6362+
}),
6363+
},
6364+
Accepts: criterionTypes.AcceptQueries{
6365+
Version: []int{0},
6366+
},
6367+
},
6368+
},
6369+
},
6370+
},
6371+
},
6372+
{
6373+
Operator: criteriaTypes.CriteriaOperatorTypeAND,
6374+
Criterias: []criteriaTypes.FilteredCriteria{
6375+
{
6376+
Operator: criteriaTypes.CriteriaOperatorTypeOR,
6377+
Criterions: []criterionTypes.FilteredCriterion{
6378+
{
6379+
Criterion: criterionTypes.Criterion{
6380+
Type: criterionTypes.CriterionTypeVersion,
6381+
Version: toPtr(versioncriterionTypes.Criterion{
6382+
Vulnerable: false,
6383+
Package: vcPackageTypes.Package{
6384+
Type: vcPackageTypes.PackageTypeBinary,
6385+
Binary: &vcBinaryPackageTypes.Package{
6386+
Name: "sles-release",
6387+
},
6388+
},
6389+
Affected: &vcAffectedTypes.Affected{
6390+
Type: vcAffectedRangeTypes.RangeTypeRPMVersionOnly,
6391+
Range: []vcAffectedRangeTypes.Range{
6392+
{
6393+
Equal: "15.3",
6394+
},
6395+
},
6396+
},
6397+
}),
6398+
},
6399+
Accepts: criterionTypes.AcceptQueries{
6400+
Version: []int{1},
6401+
},
6402+
},
6403+
},
6404+
},
6405+
{
6406+
Operator: criteriaTypes.CriteriaOperatorTypeOR,
6407+
Criterions: []criterionTypes.FilteredCriterion{
6408+
{
6409+
Criterion: criterionTypes.Criterion{
6410+
Type: criterionTypes.CriterionTypeVersion,
6411+
Version: toPtr(versioncriterionTypes.Criterion{
6412+
Vulnerable: true,
6413+
FixStatus: toPtr(vcFixStatusTypes.FixStatus{
6414+
Class: vcFixStatusTypes.ClassUnfixed,
6415+
}),
6416+
Package: vcPackageTypes.Package{
6417+
Type: vcPackageTypes.PackageTypeBinary,
6418+
Binary: &vcBinaryPackageTypes.Package{
6419+
Name: "binutils",
6420+
Architectures: []string{
6421+
"aarch64",
6422+
"ppc64le",
6423+
"s390x",
6424+
"x86_64",
6425+
},
6426+
},
6427+
},
6428+
Affected: &vcAffectedTypes.Affected{
6429+
Type: vcAffectedRangeTypes.RangeTypeRPM,
6430+
},
6431+
}),
6432+
},
6433+
Accepts: criterionTypes.AcceptQueries{
6434+
Version: []int{0},
6435+
},
6436+
},
6437+
},
6438+
},
6439+
},
6440+
},
6441+
},
6442+
},
6443+
},
6444+
},
6445+
},
6446+
},
6447+
},
6448+
},
6449+
},
6450+
},
6451+
},
6452+
want: models.VulnInfos{
6453+
"CVE-2022-4285": {
6454+
CveID: "CVE-2022-4285",
6455+
Confidences: models.Confidences{models.OvalMatch},
6456+
AffectedPackages: models.PackageFixStatuses{
6457+
{
6458+
Name: "binutils",
6459+
NotFixedYet: true,
6460+
},
6461+
},
6462+
DistroAdvisories: models.DistroAdvisories{
6463+
{
6464+
AdvisoryID: "SUSE-CU-2023:3179-1",
6465+
Issued: time.Date(1000, time.January, 1, 0, 0, 0, 0, time.UTC),
6466+
Updated: time.Date(1000, time.January, 1, 0, 0, 0, 0, time.UTC),
6467+
},
6468+
},
6469+
CveContents: models.CveContents{
6470+
models.SUSE: []models.CveContent{
6471+
{
6472+
Type: models.SUSE,
6473+
CveID: "CVE-2022-4285",
6474+
Cvss3Score: 5.5,
6475+
Cvss3Vector: "CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H",
6476+
Cvss3Severity: "MEDIUM",
6477+
SourceLink: "https://www.suse.com/security/cve/CVE-2022-4285",
6478+
References: models.References{
6479+
{
6480+
Link: "https://www.suse.com/security/cve/SUSE-CU-2023:3179-1.html",
6481+
Source: "SUSE",
6482+
RefID: "SUSE-CU-2023:3179-1",
6483+
},
6484+
},
6485+
Published: time.Date(1000, time.January, 1, 0, 0, 0, 0, time.UTC),
6486+
LastModified: time.Date(1000, time.January, 1, 0, 0, 0, 0, time.UTC),
6487+
Optional: map[string]string{
6488+
"vuls2-sources": "[{\"root_id\":\"CVE-2022-4285\",\"source_id\":\"suse-oval\",\"segment\":{\"ecosystem\":\"suse.linux.enterprise.server:15\"}}]",
6489+
},
6490+
},
6491+
},
6492+
},
6493+
},
6494+
},
6495+
},
62056496
}
62066497
for _, tt := range tests {
62076498
t.Run(tt.name, func(t *testing.T) {

go.mod

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,3 @@ require (
398398
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
399399
sigs.k8s.io/yaml v1.6.0 // indirect
400400
)
401-
402-
replace github.com/MaineK00n/vuls-data-update => ../vuls-data-update
403-
404-
replace github.com/MaineK00n/vuls2 => ../vuls2

0 commit comments

Comments
 (0)