Skip to content

Commit

Permalink
Merge pull request #11477 from DefectDojo/release/2.41.4
Browse files Browse the repository at this point in the history
Release: Merge release into master from: release/2.41.4
  • Loading branch information
rossops authored Dec 30, 2024
2 parents 0a93d5a + 1110923 commit a3d71d6
Show file tree
Hide file tree
Showing 9 changed files with 26 additions and 6 deletions.
2 changes: 1 addition & 1 deletion components/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "defectdojo",
"version": "2.41.3",
"version": "2.41.4",
"license" : "BSD-3-Clause",
"private": true,
"dependencies": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ These attributes are supported for CSV:
- Date: Date of the finding in mm/dd/yyyy format.
- Title: Title of the finding
- CweId: Cwe identifier, must be an integer value.
- epss_score: The probability of exploitation in the next 30 days, must be a float value between 0 and 1.0.
- epss_percentile: The proportion of all scored vulnerabilities with the same or a lower EPSS score, must be a float value between 0 and 1.0.
- Url: Url associated with the finding.
- Severity: Severity of the finding. Must be one of Info, Low, Medium, High, or Critical.
- Description: Description of the finding. Can be multiple lines if enclosed in double quotes.
Expand Down
2 changes: 1 addition & 1 deletion dojo/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@
# Django starts so that shared_task will use this app.
from .celery import app as celery_app # noqa: F401

__version__ = "2.41.3"
__version__ = "2.41.4"
__url__ = "https://github.com/DefectDojo/django-DefectDojo"
__docs__ = "https://documentation.defectdojo.com"
4 changes: 2 additions & 2 deletions dojo/api_v2/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -2087,10 +2087,10 @@ class CommonImportScanSerializer(serializers.Serializer):
help_text="Minimum severity level to be imported",
)
active = serializers.BooleanField(
help_text="Override the active setting from the tool.",
help_text="Force findings to be active/inactive or default to the original tool (None)", required=False,
)
verified = serializers.BooleanField(
help_text="Override the verified setting from the tool.",
help_text="Force findings to be verified/not verified or default to the original tool (None)", required=False,
)

# TODO: why do we allow only existing endpoints?
Expand Down
1 change: 1 addition & 0 deletions dojo/settings/settings.dist.py
Original file line number Diff line number Diff line change
Expand Up @@ -1776,6 +1776,7 @@ def saml2_attrib_map_format(dict):
"CWE": "https://cwe.mitre.org/data/definitions/&&.html", # e.g. https://cwe.mitre.org/data/definitions/79.html
"RLSA": "https://errata.rockylinux.org/", # e.g. https://errata.rockylinux.org/RLSA-2024:7001
"RLBA": "https://errata.rockylinux.org/", # e.g. https://errata.rockylinux.org/RLBA-2024:6968
"CGA": "https://images.chainguard.dev/security/", # e.g. https://images.chainguard.dev/security/CGA-24pq-h5fw-43v3
}
# List of acceptable file types that can be uploaded to a given object via arbitrary file upload
FILE_UPLOAD_TYPES = env("DD_FILE_UPLOAD_TYPES")
Expand Down
6 changes: 6 additions & 0 deletions dojo/tools/generic/csv_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,12 @@ def _get_findings_csv(self, filename):
if "CweId" in row:
finding.cwe = int(row["CweId"])

if "epss_score" in row:
finding.epss_score = float(row["epss_score"])

if "epss_percentile" in row:
finding.epss_percentile = float(row["epss_percentile"])

if "CVSSV3" in row:
cvss_objects = cvss_parser.parse_cvss_from_text(row["CVSSV3"])
if len(cvss_objects) > 0:
Expand Down
4 changes: 2 additions & 2 deletions helm/defectdojo/Chart.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
apiVersion: v2
appVersion: "2.41.3"
appVersion: "2.41.4"
description: A Helm chart for Kubernetes to install DefectDojo
name: defectdojo
version: 1.6.165
version: 1.6.166
icon: https://www.defectdojo.org/img/favicon.ico
maintainers:
- name: madchap
Expand Down
2 changes: 2 additions & 0 deletions unittests/scans/generic/generic_csv_with_epss.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Date,Title,CweId,epss_score,epss_percentile, Url,Severity,Description,Mitigation,Impact,References,Active,Verified,FalsePositive,Duplicate
01/30/2018,"Server leaks inodes via ETags, header found with file /, fields: 0xW/109b 0xpqG8TolgxCnpM/7cGOOI0GRS+rc ",0,.00042,.23474,https://192.168.1.1/,Low,"Server leaks inodes via ETags, header found with file /, fields: 0xW/109b 0xpqG8TolgxCnpM/7cGOOI0GRS+rc ",,,,False,False,False,False
9 changes: 9 additions & 0 deletions unittests/tools/test_generic_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -649,3 +649,12 @@ def test_parse_json_invalid_finding(self):
with self.assertRaisesMessage(ValueError,
"Not allowed fields are present: ['invalid_field', 'last_status_update']"):
parser.get_findings(file, Test())

def test_parse_csv_with_epss(self):
with open("unittests/scans/generic/generic_csv_with_epss.csv", encoding="utf-8") as file:
parser = GenericParser()
findings = parser.get_findings(file, self.test)
self.assertEqual(1, len(findings))
finding = findings[0]
self.assertEqual(.00042, finding.epss_score)
self.assertEqual(.23474, finding.epss_percentile)

0 comments on commit a3d71d6

Please sign in to comment.