Skip to content

Commit 9731bab

Browse files
Merge pull request #3624 from DefectDojo/release/1.11.1
Release: Merge release into master from: release/1.11.1
2 parents 3ed4ebb + 80509b1 commit 9731bab

File tree

14 files changed

+43
-21
lines changed

14 files changed

+43
-21
lines changed

components/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "DefectDojo",
3-
"version": "1.11.0",
3+
"version": "1.11.1",
44
"dependencies": {
55
"JUMFlot": "jumjum123/JUMFlot#*",
66
"bootstrap": "^3.4.0",

dojo/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66

77
default_app_config = 'dojo.apps.DojoAppConfig'
88

9-
__version__ = '1.11.0'
9+
__version__ = '1.11.1'
1010
__url__ = 'https://github.com/DefectDojo/django-DefectDojo'
1111
__docs__ = 'http://defectdojo.readthedocs.io/'

dojo/endpoint/views.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
from dojo.forms import EditEndpointForm, \
1919
DeleteEndpointForm, AddEndpointForm, DojoMetaDataForm
2020
from dojo.models import Product, Endpoint, Finding, System_Settings, DojoMeta, Endpoint_Status
21-
from dojo.utils import get_page_items, add_breadcrumb, get_period_counts, get_system_setting, Product_Tab, calculate_grade
21+
from dojo.utils import get_page_items, add_breadcrumb, get_period_counts, get_system_setting, Product_Tab, \
22+
calculate_grade, redirect
2223
from dojo.notifications.helper import create_notification
2324
from dojo.user.helper import user_must_be_authorized
2425

@@ -441,7 +442,7 @@ def endpoint_status_bulk_update(request, fid):
441442
messages.ERROR,
442443
'Unable to process bulk update. Required fields were not selected.',
443444
extra_tags='alert-danger')
444-
return HttpResponseRedirect(post['return_url'])
445+
return redirect(post['return_url'])
445446

446447

447448
def prefetch_for_endpoints(endpoints):

dojo/product/views.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,11 @@ def identify_view(request):
196196
get_data = request.GET
197197
view = get_data.get('type', None)
198198
if view:
199-
return view
199+
# value of view is reflected in the template, make sure it's valid
200+
# although any XSS should be catch by django autoescape, we see people sometimes using '|safe'...
201+
if view in ['Endpoint', 'Finding']:
202+
return view
203+
raise ValueError('invalid view, view must be "Endpoint" or "Finding"')
200204
else:
201205
if get_data.get('finding__severity', None):
202206
return 'Endpoint'

dojo/reports/views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
CustomReportJsonForm, ReportOptions, report_widget_factory
2828
from dojo.tasks import async_pdf_report, async_custom_pdf_report
2929
from dojo.utils import get_page_items, add_breadcrumb, get_system_setting, get_period_counts_legacy, Product_Tab, \
30-
get_words_for_field
30+
get_words_for_field, redirect
3131
from dojo.user.helper import user_must_be_authorized, check_auth_users_list
3232

3333
logger = logging.getLogger(__name__)
@@ -318,7 +318,7 @@ def reports(request):
318318
def regen_report(request, rid):
319319
report = get_object_or_404(Report, id=rid)
320320
if report.type != 'Custom':
321-
return HttpResponseRedirect(report.options + "&regen=" + rid)
321+
return redirect(report.options + "&regen=" + rid)
322322
else:
323323
report.datetime = timezone.now()
324324
report.status = 'requested'

dojo/survey/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ def add_questionnaire(request, eid):
212212
return HttpResponseRedirect(reverse(
213213
'answer_questionnaire', args=(eid, survey.id)))
214214

215-
return HttpResponseRedirect('/engagement/%s' % eid)
215+
return HttpResponseRedirect(reverse('view_engagement', args=(eid,)))
216216
else:
217217
messages.add_message(request,
218218
messages.ERROR,

dojo/tools/acunetix/parser_helper.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
# from memory_profiler import profile #Comment out this and profile in defectdojo repo
77
import html2text
88

9-
logging.basicConfig(level=logging.ERROR)
10-
119
SCAN_NODE_TAG_NAME = "Scan"
1210
ACUNETIX_XML_SCAN_IGNORE_NODES = ['Technologies', 'Crawler']
1311
ACUNETIX_XML_REPORTITEM_IGNORE_NODES = ['CVEList', 'CVSS', 'CVSS3']
@@ -21,7 +19,7 @@ def get_root_node(filename):
2119
:return:
2220
"""
2321
try:
24-
tree = etree.parse(filename)
22+
tree = etree.parse(filename, etree.XMLParser(resolve_entities=False))
2523
return tree.getroot()
2624
except XMLSyntaxError as xse:
2725
logging.error("ERROR : error parsing XML file {filename}".format(filename=filename))

dojo/tools/qualys_webapp/parser.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@ def qualys_webapp_parser(qualys_xml_file, test):
232232
if qualys_xml_file is None:
233233
return []
234234

235+
# supposed to be safe against XEE: https://docs.python.org/3/library/xml.html#xml-vulnerabilities
235236
tree = xml.etree.ElementTree.parse(qualys_xml_file)
236237
is_app_report = tree.getroot().tag == 'WAS_WEBAPP_REPORT'
237238

dojo/tools/veracode/parser.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def __init__(self, filename, test):
2727
self.items = list()
2828
return
2929
try:
30-
xml = etree.parse(filename)
30+
xml = etree.parse(filename, etree.XMLParser(resolve_entities=False))
3131
except:
3232
raise NamespaceErr('Cannot parse this report. Make sure to upload a proper Veracode Detailed XML report.')
3333

dojo/unittests/test_deduplication_logic.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
logger = logging.getLogger(__name__)
77
deduplicationLogger = logging.getLogger("dojo.specific-loggers.deduplication")
88

9-
loglevel = logging.DEBUG
10-
logging.basicConfig(level=loglevel)
11-
129
# things to consider:
1310
# - cross scanner deduplication is still flaky as if some scanners don't provide severity, but another doesn, the hashcode will be different so no deduplication happens.
1411
# so I couldn't create any good tests

0 commit comments

Comments
 (0)