Skip to content

Commit f501bae

Browse files
authored
Fix improper reactivation in reimporter, using is_mitigated (DefectDojo#6885)
* Fix improper reactivation in reimporter, using is_mitigated DefectDojo#6452 * Update reimporter.py
1 parent 2f95713 commit f501bae

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

dojo/importers/reimporter/reimporter.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,22 @@ def process_parsed_findings(self, test, parsed_findings, scan_type, user, active
8484
if finding.false_p or finding.out_of_scope or finding.risk_accepted:
8585
logger.debug('%i: skipping existing finding (it is marked as false positive:%s and/or out of scope:%s or is a risk accepted:%s): %i:%s:%s:%s', i, finding.false_p, finding.out_of_scope, finding.risk_accepted, finding.id, finding, finding.component_name, finding.component_version)
8686
elif finding.is_mitigated:
87-
if item.mitigated:
88-
logger.debug("item mitigated time: " + str(item.mitigated.timestamp()))
89-
logger.debug("finding mitigated time: " + str(finding.mitigated.timestamp()))
90-
if item.mitigated.timestamp() == finding.mitigated.timestamp():
91-
logger.debug("New imported finding and already existing finding have the same mitigation date, will skip as they are the same.")
92-
continue
93-
if item.mitigated.timestamp() != finding.mitigated.timestamp():
94-
logger.debug("New imported finding and already existing finding are both mitigated but have different dates, not taking action")
95-
# TODO: implement proper date-aware reimporting mechanism, if an imported finding is closed more recently than the defectdojo finding, then there might be details in the scanner that should be added
87+
# if the reimported item has a mitigation time, we can compare
88+
if item.is_mitigated:
89+
if item.mitigated:
90+
logger.debug("item mitigated time: " + str(item.mitigated.timestamp()))
91+
logger.debug("finding mitigated time: " + str(finding.mitigated.timestamp()))
92+
if item.mitigated.timestamp() == finding.mitigated.timestamp():
93+
logger.debug("New imported finding and already existing finding have the same mitigation date, will skip as they are the same.")
94+
continue
95+
if item.mitigated.timestamp() != finding.mitigated.timestamp():
96+
logger.debug("New imported finding and already existing finding are both mitigated but have different dates, not taking action")
97+
# TODO: implement proper date-aware reimporting mechanism, if an imported finding is closed more recently than the defectdojo finding, then there might be details in the scanner that should be added
98+
continue
99+
else:
100+
# even if there is no mitigation time, skip it, because both the current finding and the reimported finding are is_mitigated
96101
continue
97-
if not item.mitigated:
102+
else:
98103
logger.debug('%i: reactivating: %i:%s:%s:%s', i, finding.id, finding, finding.component_name, finding.component_version)
99104
finding.mitigated = None
100105
finding.is_mitigated = False
@@ -139,7 +144,8 @@ def process_parsed_findings(self, test, parsed_findings, scan_type, user, active
139144
logger.debug('%i: updating existing finding: %i:%s:%s:%s', i, finding.id, finding, finding.component_name, finding.component_version)
140145
if not (finding.mitigated and finding.is_mitigated):
141146
logger.debug('Reimported item matches a finding that is currently open.')
142-
if item.mitigated:
147+
if item.is_mitigated:
148+
logger.debug('Reimported mitigated item matches a finding that is currently open, closing.')
143149
# TODO: Implement a date comparison for opened defectdojo findings before closing them by reimporting, as they could be force closed by the scanner but a DD user forces it open ?
144150
logger.debug('%i: closing: %i:%s:%s:%s', i, finding.id, finding, finding.component_name, finding.component_version)
145151
finding.mitigated = item.mitigated

0 commit comments

Comments
 (0)