Skip to content

Commit 6328d93

Browse files
committed
Change models
Signed-off-by: Tushar Goel <[email protected]>
1 parent 1cafd40 commit 6328d93

File tree

2 files changed

+22
-30
lines changed

2 files changed

+22
-30
lines changed

vulnerabilities/pipelines/fill_vulnerability_summary_pipeline.py

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,51 +17,43 @@
1717
from vulnerabilities.pipelines import VulnerableCodePipeline
1818

1919

20-
class FillVulnerabilitySummariesPipeline(VulnerableCodePipeline):
21-
"""Pipeline to fill missing vulnerability summaries from advisories."""
20+
class PopulateVulnerabilitySummariesPipeline(VulnerableCodePipeline):
21+
"""Pipeline to populate missing vulnerability summaries from advisories."""
2222

23-
pipeline_id = "fill_vulnerability_summaries"
23+
pipeline_id = "populate_vulnerability_summaries"
2424

2525
@classmethod
2626
def steps(cls):
27-
return (cls.fill_missing_summaries,)
27+
return (cls.populate_missing_summaries,)
2828

29-
def fill_missing_summaries(self):
30-
"""Find vulnerabilities without summaries and fill them using advisories with the same aliases."""
29+
def populate_missing_summaries(self):
30+
"""Find vulnerabilities with missing summaries and populate them using advisories with the same aliases."""
3131
vulnerabilities_qs = Vulnerability.objects.filter(summary="")
3232
self.log(
3333
f"Processing {vulnerabilities_qs.count()} vulnerabilities without summaries",
3434
level=logging.INFO,
3535
)
36-
nvd_importer_advisories = Advisory.objects.filter(
37-
created_by="nvd_importer", summary__isnull=False
38-
).exclude(summary="")
39-
self.log(
40-
f"Found {nvd_importer_advisories.count()} advisories with summaries from NVD importer",
41-
level=logging.INFO,
42-
)
36+
# nvd_importer_advisories = Advisory.objects.filter(created_by="nvd_importer").exclude(summary="")
37+
# self.log(
38+
# f"Found {nvd_importer_advisories.count()} advisories with summaries from NVD importer",
39+
# level=logging.INFO,
40+
# )
4341

4442
progress = LoopProgress(total_iterations=vulnerabilities_qs.count(), logger=self.log)
4543

46-
for vulnerability in progress.iter(vulnerabilities_qs.paginated()):
47-
aliases = vulnerability.aliases.values_list("alias", flat=True)
48-
# get alias that start with CVE- with filter
49-
alias = aliases.filter(alias__startswith="CVE-").first()
44+
for vulnerability in progress.iter(vulnerabilities_qs.iterator()):
45+
cve_alias = vulnerability.aliases.filter(alias__startswith="CVE-").first()
5046

51-
# check if the vulnerability has an alias
52-
if not alias:
47+
if not cve_alias:
5348
self.log(
54-
f"Vulnerability {vulnerability.vulnerability_id} has no alias",
49+
f"Vulnerability {vulnerability.vulnerability_id} has no CVE alias",
5550
level=logging.INFO,
5651
)
5752
continue
5853

59-
# check if the vulnerability has an alias that matches an advisory
60-
matching_advisories = nvd_importer_advisories.filter(Q(aliases__contains=alias))
54+
matching_advisories = Advisory.objects.filter(aliases=cve_alias)
6155

6256
if matching_advisories.exists():
63-
# Take the first matching advisory with a summary
64-
# get the advisory that was collected the most recently
6557
best_advisory = matching_advisories.order_by("-date_collected").first()
6658
# Note: we filtered above to only get non-empty summaries
6759
vulnerability.summary = best_advisory.summary

vulnerabilities/tests/pipelines/test_fill_vulnerability_summary_pipeline.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from vulnerabilities.models import Alias
1818
from vulnerabilities.models import Vulnerability
1919
from vulnerabilities.pipelines.fill_vulnerability_summary_pipeline import (
20-
FillVulnerabilitySummariesPipeline,
20+
PopulateVulnerabilitySummariesPipeline,
2121
)
2222

2323

@@ -46,7 +46,7 @@ def test_fill_missing_summaries_from_nvd(self):
4646
)
4747

4848
# Run the pipeline
49-
pipeline = FillVulnerabilitySummariesPipeline()
49+
pipeline = PopulateVulnerabilitySummariesPipeline()
5050
pipeline.fill_missing_summaries()
5151

5252
# Check that the vulnerability now has a summary
@@ -65,7 +65,7 @@ def test_no_matching_advisory(self):
6565
Alias.objects.create(alias="CVE-2024-1234", vulnerability=vulnerability)
6666

6767
# Run the pipeline
68-
pipeline = FillVulnerabilitySummariesPipeline()
68+
pipeline = PopulateVulnerabilitySummariesPipeline()
6969
pipeline.fill_missing_summaries()
7070

7171
# Check that the vulnerability still has no summary
@@ -84,7 +84,7 @@ def test_vulnerability_without_alias(self):
8484
)
8585

8686
# Run the pipeline
87-
pipeline = FillVulnerabilitySummariesPipeline()
87+
pipeline = PopulateVulnerabilitySummariesPipeline()
8888
pipeline.fill_missing_summaries()
8989

9090
# Check that the vulnerability still has no summary
@@ -112,7 +112,7 @@ def test_non_nvd_advisory_ignored(self):
112112
)
113113

114114
# Run the pipeline
115-
pipeline = FillVulnerabilitySummariesPipeline()
115+
pipeline = PopulateVulnerabilitySummariesPipeline()
116116
pipeline.fill_missing_summaries()
117117

118118
# Check that the vulnerability still has no summary
@@ -145,7 +145,7 @@ def test_multiple_matching_advisories(self):
145145
)
146146

147147
# Run the pipeline
148-
pipeline = FillVulnerabilitySummariesPipeline()
148+
pipeline = PopulateVulnerabilitySummariesPipeline()
149149
pipeline.fill_missing_summaries()
150150

151151
# Check that the vulnerability now has the most recent summary

0 commit comments

Comments
 (0)