File tree Expand file tree Collapse file tree 3 files changed +16
-8
lines changed
Expand file tree Collapse file tree 3 files changed +16
-8
lines changed Original file line number Diff line number Diff line change 1717from vulnerabilities .pipelines import enhance_with_exploitdb
1818from vulnerabilities .pipelines import enhance_with_kev
1919from vulnerabilities .pipelines import enhance_with_metasploit
20- from vulnerabilities .pipelines import fill_vulnerability_summary_pipeline
2120from vulnerabilities .pipelines import flag_ghost_packages
21+ from vulnerabilities .pipelines import populate_vulnerability_summary_pipeline
2222from vulnerabilities .pipelines import remove_duplicate_advisories
2323
2424IMPROVERS_REGISTRY = [
4848 collect_commits .CollectFixCommitsPipeline ,
4949 add_cvss31_to_CVEs .CVEAdvisoryMappingPipeline ,
5050 remove_duplicate_advisories .RemoveDuplicateAdvisoriesPipeline ,
51- fill_vulnerability_summary_pipeline .PopulateVulnerabilitySummariesPipeline ,
51+ populate_vulnerability_summary_pipeline .PopulateVulnerabilitySummariesPipeline ,
5252]
5353
5454IMPROVERS_REGISTRY = {
Original file line number Diff line number Diff line change @@ -36,13 +36,15 @@ def populate_missing_summaries(self):
3636
3737 progress = LoopProgress (total_iterations = vulnerabilities_qs .count (), logger = self .log )
3838
39+ vulnerabilities_to_be_updated = []
40+
3941 for vulnerability in progress .iter (vulnerabilities_qs .iterator ()):
4042 cve_alias = vulnerability .aliases .filter (alias__startswith = "CVE-" ).first ()
4143
4244 if not cve_alias :
4345 self .log (
4446 f"Vulnerability { vulnerability .vulnerability_id } has no CVE alias" ,
45- level = logging .INFO ,
47+ level = logging .DEBUG ,
4648 )
4749 continue
4850
@@ -54,10 +56,16 @@ def populate_missing_summaries(self):
5456 best_advisory = matching_advisories .order_by ("-date_collected" ).first ()
5557 # Note: we filtered above to only get non-empty summaries
5658 vulnerability .summary = best_advisory .summary
57- vulnerability . save ( )
59+ vulnerabilities_to_be_updated . append ( vulnerability )
5860 self .log (
5961 f"Updated summary for vulnerability { vulnerability .vulnerability_id } " ,
6062 level = logging .INFO ,
6163 )
6264 else :
63- self .log (f"No advisory found for alias { cve_alias } " , level = logging .INFO )
65+ self .log (f"No advisory found for alias { cve_alias } " , level = logging .DEBUG )
66+ Vulnerability .objects .bulk_update (vulnerabilities_to_be_updated , ["summary" ])
67+ self .log (
68+ f"Successfully populated { len (vulnerabilities_to_be_updated )} vulnerabilities with summary" ,
69+ level = logging .INFO ,
70+ )
71+ self .log ("Pipeline completed" , level = logging .INFO )
Original file line number Diff line number Diff line change 1616from vulnerabilities .models import Advisory
1717from vulnerabilities .models import Alias
1818from vulnerabilities .models import Vulnerability
19- from vulnerabilities .pipelines .fill_vulnerability_summary_pipeline import (
19+ from vulnerabilities .pipelines .populate_vulnerability_summary_pipeline import (
2020 PopulateVulnerabilitySummariesPipeline ,
2121)
2222
2323
24- class FillVulnerabilitySummariesPipelineTest (TestCase ):
24+ class PopulateVulnerabilitySummariesPipelineTest (TestCase ):
2525 def setUp (self ):
2626 self .data = Path (__file__ ).parent .parent / "test_data"
2727
28- def test_fill_missing_summaries_from_nvd (self ):
28+ def test_populate_missing_summaries_from_nvd (self ):
2929 """
3030 Test that vulnerabilities without summaries get them from NVD advisories.
3131 """
You can’t perform that action at this time.
0 commit comments