Skip to content

Commit b5934a0

Browse files
authored
Merge pull request #1066 from TG1999/migrate/project_kb_msr_2019
Migrate projectkbmsr2019 importer
2 parents 2903edc + d8f32f8 commit b5934a0

File tree

8 files changed

+19703
-133
lines changed

8 files changed

+19703
-133
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Next release
88
- We re-enabled support for the mozilla vulnerabilities advisories importer.
99
- We re-enabled support for the gentoo vulnerabilities advisories importer.
1010
- We re-enabled support for the istio vulnerabilities advisories importer.
11+
- We re-enabled support for the kbmsr2019 vulnerabilities advisories importer.
1112

1213

1314
Version v31.1.1

vulnerabilities/importers/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from vulnerabilities.importers import nvd
2323
from vulnerabilities.importers import openssl
2424
from vulnerabilities.importers import postgresql
25+
from vulnerabilities.importers import project_kb_msr2019
2526
from vulnerabilities.importers import pypa
2627
from vulnerabilities.importers import pysec
2728
from vulnerabilities.importers import redhat
@@ -49,6 +50,7 @@
4950
mozilla.MozillaImporter,
5051
gentoo.GentooImporter,
5152
istio.IstioImporter,
53+
project_kb_msr2019.ProjectKBMSRImporter,
5254
]
5355

5456
IMPORTERS_REGISTRY = {x.qualified_name: x for x in IMPORTERS_REGISTRY}

vulnerabilities/importers/project_kb_msr2019.py

Lines changed: 13 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,9 @@
77
# See https://aboutcode.org for more information about nexB OSS projects.
88
#
99

10-
import csv
11-
import urllib.request
12-
1310
from vulnerabilities.importer import AdvisoryData
1411
from vulnerabilities.importer import Importer
1512
from vulnerabilities.importer import Reference
16-
from vulnerabilities.utils import create_etag
1713
from vulnerabilities.utils import is_cve
1814

1915
# Reading CSV file from a url using `requests` is bit too complicated.
@@ -23,42 +19,25 @@
2319
class ProjectKBMSRImporter(Importer):
2420

2521
url = "https://raw.githubusercontent.com/SAP/project-kb/master/MSR2019/dataset/vulas_db_msr2019_release.csv"
22+
spdx_license_expression = "Apache-2.0"
23+
license_url = "https://github.com/SAP/project-kb/blob/main/LICENSE.txt"
2624

27-
def updated_advisories(self):
28-
if create_etag(data_src=self, url=self.url, etag_key="ETag"):
29-
raw_data = self.fetch()
30-
advisories = self.to_advisories(raw_data)
31-
return self.batch_advisories(advisories)
32-
33-
return []
34-
35-
def fetch(self):
36-
response = urllib.request.urlopen(self.url)
37-
lines = [l.decode("utf-8") for l in response.readlines()]
38-
return csv.reader(lines)
25+
def advisory_data(self):
26+
raw_data = fetch_and_read_from_csv(self.url)
27+
yield from self.to_advisories(raw_data)
3928

40-
@staticmethod
41-
def to_advisories(csv_reader):
29+
def to_advisories(self, csv_reader):
4230
# Project KB MSR csv file has no header row
43-
advisories = []
4431
for row in csv_reader:
4532
vuln_id, proj_home, fix_commit, _ = row
4633
commit_link = proj_home + "/commit/" + fix_commit
4734

48-
if is_cve(vuln_id):
49-
reference = Reference(url=commit_link)
35+
if not is_cve(vuln_id):
36+
continue
5037

51-
else:
52-
reference = Reference(url=commit_link, reference_id=vuln_id)
53-
vuln_id = ""
54-
55-
advisories.append(
56-
AdvisoryData(
57-
summary="",
58-
affected_packages=[],
59-
references=[reference],
60-
vulnerability_id=vuln_id,
61-
)
38+
reference = Reference(url=commit_link)
39+
yield AdvisoryData(
40+
aliases=[vuln_id],
41+
summary="",
42+
references=[reference],
6243
)
63-
64-
return advisories

vulnerabilities/tests/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ def no_rmtree(monkeypatch):
3030
"test_api.py",
3131
"test_elixir_security.py",
3232
"test_models.py",
33-
"test_msr2019.py",
3433
"test_package_managers.py",
3534
"test_ruby.py",
3635
"test_rust.py",

0 commit comments

Comments
 (0)