Skip to content

Commit 8f3dfe3

Browse files
committed
Migrate EPSS importer for advisory V2
Signed-off-by: ziad hany <ziadhany2016@gmail.com>
1 parent 32d9724 commit 8f3dfe3

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

vulnerabilities/importers/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from vulnerabilities.importers import debian
1616
from vulnerabilities.importers import debian_oval
1717
from vulnerabilities.importers import elixir_security
18-
from vulnerabilities.importers import epss
1918
from vulnerabilities.importers import fireeye
2019
from vulnerabilities.importers import gentoo
2120
from vulnerabilities.importers import github_osv
@@ -41,7 +40,7 @@
4140
from vulnerabilities.pipelines import nvd_importer
4241
from vulnerabilities.pipelines import pypa_importer
4342
from vulnerabilities.pipelines import pysec_importer
44-
from vulnerabilities.pipelines.v2_importers import aosp_importer as aosp_importer_v2
43+
from vulnerabilities.pipelines.v2_importers import aosp_importer as aosp_importer_v2, epss_importer_v2
4544
from vulnerabilities.pipelines.v2_importers import apache_httpd_importer as apache_httpd_v2
4645
from vulnerabilities.pipelines.v2_importers import archlinux_importer as archlinux_importer_v2
4746
from vulnerabilities.pipelines.v2_importers import curl_importer as curl_importer_v2
@@ -83,6 +82,7 @@
8382
github_osv_importer_v2.GithubOSVImporterPipeline,
8483
redhat_importer_v2.RedHatImporterPipeline,
8584
aosp_importer_v2.AospImporterPipeline,
85+
epss_importer_v2.EPSSImporterPipeline,
8686
nvd_importer.NVDImporterPipeline,
8787
github_importer.GitHubAPIImporterPipeline,
8888
gitlab_importer.GitLabImporterPipeline,
@@ -95,7 +95,6 @@
9595
postgresql.PostgreSQLImporter,
9696
debian.DebianImporter,
9797
curl.CurlImporter,
98-
epss.EPSSImporter,
9998
vulnrichment.VulnrichImporter,
10099
alpine_linux_importer.AlpineLinuxImporterPipeline,
101100
ruby.RubyImporter,

vulnerabilities/importers/epss.py renamed to vulnerabilities/pipelines/v2_importers/epss_importer_v2.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,31 @@
1515

1616
from vulnerabilities import severity_systems
1717
from vulnerabilities.importer import AdvisoryData
18-
from vulnerabilities.importer import Importer
19-
from vulnerabilities.importer import Reference
18+
from vulnerabilities.importer import ReferenceV2
2019
from vulnerabilities.importer import VulnerabilitySeverity
20+
from vulnerabilities.pipelines import VulnerableCodeBaseImporterPipelineV2
2121

2222
logger = logging.getLogger(__name__)
2323

2424

25-
class EPSSImporter(Importer):
25+
class EPSSImporterPipeline(VulnerableCodeBaseImporterPipelineV2):
2626
"""Exploit Prediction Scoring System (EPSS) Importer"""
2727

2828
advisory_url = "https://epss.cyentia.com/epss_scores-current.csv.gz"
29+
pipeline_id = "epss_importer_v2"
2930
spdx_license_expression = "unknown"
3031
importer_name = "EPSS Importer"
3132

32-
def advisory_data(self) -> Iterable[AdvisoryData]:
33+
def advisories_count(self):
34+
return 1 # FIXME
35+
36+
@classmethod
37+
def steps(cls):
38+
return (
39+
cls.collect_and_store_advisories,
40+
)
41+
42+
def collect_advisories(self) -> Iterable[AdvisoryData]:
3343
response = urllib.request.urlopen(self.advisory_url)
3444
with gzip.open(response, "rb") as f:
3545
lines = [l.decode("utf-8") for l in f.readlines()]
@@ -55,13 +65,13 @@ def advisory_data(self) -> Iterable[AdvisoryData]:
5565
published_at=published_at,
5666
)
5767

58-
references = Reference(
68+
references = ReferenceV2(
5969
url=f"https://api.first.org/data/v1/epss?cve={cve}",
60-
severities=[severity],
6170
)
6271

6372
yield AdvisoryData(
64-
aliases=[cve],
65-
references=[references],
73+
advisory_id=cve,
74+
severities=[severity],
75+
references_v2=[references],
6676
url=self.advisory_url,
6777
)

0 commit comments

Comments
 (0)