Skip to content

Commit 9a3167a

Browse files
Jino-TMaffooch
andauthored
Vulnerability IDs: Do not allow users to import empty strings (#14017)
* added code to remove unwanted vulnerability ids * Update dojo/finding/helper.py --------- Co-authored-by: Cody Maffucci <46459665+Maffooch@users.noreply.github.com>
1 parent 3627081 commit 9a3167a

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

dojo/finding/helper.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -775,13 +775,20 @@ def add_endpoints(new_finding, form):
775775
endpoint=endpoint, defaults={"date": form.cleaned_data["date"] or timezone.now()})
776776

777777

778+
def sanitize_vulnerability_ids(vulnerability_ids) -> None:
779+
"""Remove undisired vulnerability id values"""
780+
vulnerability_ids = [x for x in vulnerability_ids if x.strip()]
781+
782+
778783
def save_vulnerability_ids(finding, vulnerability_ids):
779784
# Remove duplicates
780785
vulnerability_ids = list(dict.fromkeys(vulnerability_ids))
781786

782787
# Remove old vulnerability ids
783788
Vulnerability_Id.objects.filter(finding=finding).delete()
784789

790+
# Remove undisired vulnerability ids
791+
sanitize_vulnerability_ids(vulnerability_ids)
785792
# Save new vulnerability ids
786793
# Using bulk create throws Django 50 warnings about unsaved models...
787794
for vulnerability_id in vulnerability_ids:

dojo/importers/base_importer.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -797,6 +797,11 @@ def process_endpoints(
797797
logger.debug("endpoints_to_add: %s", endpoints_to_add)
798798
self.endpoint_manager.chunk_endpoints_and_disperse(finding, endpoints_to_add)
799799

800+
def sanitize_vulnerability_ids(self, finding) -> None:
801+
"""Remove undisired vulnerability id values"""
802+
if finding.unsaved_vulnerability_ids:
803+
finding.unsaved_vulnerability_ids = [x for x in finding.unsaved_vulnerability_ids if x.strip()]
804+
800805
def process_cve(
801806
self,
802807
finding: Finding,
@@ -805,6 +810,8 @@ def process_cve(
805810
# Synchronize the cve field with the unsaved_vulnerability_ids
806811
# We do this to be as flexible as possible to handle the fields until
807812
# the cve field is not needed anymore and can be removed.
813+
# Remove undisired vulnerability ids
814+
self.sanitize_vulnerability_ids(finding)
808815
if finding.unsaved_vulnerability_ids and finding.cve:
809816
# Make sure the first entry of the list is the value of the cve field
810817
finding.unsaved_vulnerability_ids.insert(0, finding.cve)
@@ -825,6 +832,8 @@ def process_vulnerability_ids(
825832
Parse the `unsaved_vulnerability_ids` field from findings after they are parsed
826833
to create `Vulnerability_Id` objects with the finding associated correctly
827834
"""
835+
# Remove undisired vulnerability ids
836+
self.sanitize_vulnerability_ids(finding)
828837
if finding.unsaved_vulnerability_ids:
829838
# Remove old vulnerability ids - keeping this call only because of flake8
830839
Vulnerability_Id.objects.filter(finding=finding).delete()

0 commit comments

Comments
 (0)