Skip to content

Commit 85e86cc

Browse files
committed
chg: [hardening] hardened file-serving endpoints
1 parent efa90cc commit 85e86cc

14 files changed

Lines changed: 21 additions & 21 deletions

var/www/blueprints/objects_favicon.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
def favicon(filename):
3737
if not filename:
3838
abort(404)
39-
if not 9 <= len(filename) <= 11:
40-
abort(404)
4139
filename = filename.replace('/', '')
40+
if not 9 <= len(filename) <= 11 or not filename.isascii() or not filename.isalnum():
41+
abort(404)
4242
fav = Favicons.Favicon(filename)
4343
return send_from_directory(Favicons.FAVICON_FOLDER, fav.get_rel_path(), as_attachment=False, mimetype='image')
4444

var/www/blueprints/objects_image.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
def image(filename):
3737
if not filename:
3838
abort(404)
39-
if not 64 <= len(filename) <= 70:
40-
abort(404)
4139
filename = filename.replace('/', '')
40+
if not 64 <= len(filename) <= 70 or not filename.isascii() or not filename.isalnum():
41+
abort(404)
4242
image = Images.Image(filename)
4343
return send_from_directory(Images.IMAGE_FOLDER, image.get_rel_path(), as_attachment=False, mimetype='image')
4444

var/www/blueprints/objects_item.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ def create_json_response(data, status_code):
6060
def screenshot(filename):
6161
if not filename:
6262
abort(404)
63-
if not 64 <= len(filename) <= 70:
64-
abort(404)
6563
filename = filename.replace('/', '')
64+
if not 64 <= len(filename) <= 70 or not filename.isascii() or not filename.isalnum():
65+
abort(404)
6666
s = Screenshot(filename)
6767
return send_from_directory(SCREENSHOT_FOLDER, s.get_rel_path(add_extension=True), as_attachment=False, mimetype='image')
6868

var/www/blueprints/objects_ocr.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@ def create_json_response(data, status_code):
4444
def ocr_image(filename):
4545
if not filename:
4646
abort(404)
47-
if not 64 <= len(filename) <= 70:
48-
abort(404)
4947
filename = filename.replace('/', '')
48+
if not 64 <= len(filename) <= 70 or not filename.isascii() or not filename.isalnum():
49+
abort(404)
5050
ocr = Ocrs.Ocr(filename)
5151
return send_file(BytesIO(ocr.draw_bounding_boxs()), mimetype='image/png')
5252

var/www/blueprints/objects_pdf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ def create_json_response(data, status_code):
4343
def pdf_pdfa(pdf_id):
4444
if not pdf_id:
4545
abort(404)
46-
if not 64 <= len(pdf_id):
47-
abort(404)
4846
pdf_id = pdf_id.replace('/', '')
47+
if not 64 <= len(pdf_id) or not pdf_id.isascii() or not pdf_id.isalnum():
48+
abort(404)
4949
pdf = PDFs.PDF(pdf_id)
5050
return send_from_directory(PDFs.PDF_FOLDER, pdf.get_rel_path(), as_attachment=False, mimetype='pdf', download_name=f'{pdf_id}.pdf')
5151

var/www/templates/domains/block_languages_search.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ <h5 class="card-title mb-0">
4646
function(data) {
4747
llanguages = $('#llanguages').tagSuggest({
4848
data: data,
49-
value: [{%if current_languages%}{% for language in current_languages %}'{{language|safe}}',{%endfor%}{%endif%}],
49+
value: [{%if current_languages%}{% for language in current_languages %}'{{language|tojson}}',{%endfor%}{%endif%}],
5050
sortOrder: 'name',
5151
maxDropHeight: 200,
5252
name: 'llanguages'

var/www/templates/hunter/add_retro_hunt_task.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ <h6>Custom YARA rules:</h6>
269269
});
270270

271271
sources_item = $('#sources_item').tagSuggest({
272-
data: {{items_sources|safe}},
272+
data: {{items_sources|tojson}},
273273
sortOrder: 'name',
274274
maxDropHeight: 200,
275275
name: 'sources_item',

var/www/templates/hunter/tracker_add.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -326,8 +326,8 @@ <h6>Custom YARA rules:</h6>
326326

327327

328328
sources_item = $('#sources_item').tagSuggest({
329-
data: {{all_sources|safe}},
330-
{%if dict_tracker%}{%if dict_tracker['filters']%}{%if dict_tracker['filters']['item']%}{%if dict_tracker['filters']['item']['sources']%}value: {{dict_tracker['filters']['item']['sources']|safe}},{%endif%}{%endif%}{%endif%}{%endif%}
329+
data: {{all_sources|tojson}},
330+
{%if dict_tracker%}{%if dict_tracker['filters']%}{%if dict_tracker['filters']['item']%}{%if dict_tracker['filters']['item']['sources']%}value: {{dict_tracker['filters']['item']['sources']|tojson}},{%endif%}{%endif%}{%endif%}{%endif%}
331331
sortOrder: 'name',
332332
maxDropHeight: 200,
333333
name: 'sources_item',

var/www/templates/import_export/block_create_misp_event.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,6 @@
5858
maxSelection: 1,
5959
emptyText: 'Select MISP Account',
6060
name: 'user_misp',
61-
{% if selector_val %}value: ['{{ selector_val | safe}}']{% endif %}
61+
{% if selector_val %}value: ['{{ selector_val | tojson}}']{% endif %}
6262
});
6363
</script>

var/www/templates/investigations/view_investigation.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ <h3>Objects</h3>
250250
maxSelection: 1,
251251
emptyText: 'Select MISP Account',
252252
name: 'user_misp',
253-
{% if selector_val %}value: ['{{ selector_val | safe}}']{% endif %}
253+
{% if selector_val %}value: ['{{ selector_val | tojson}}']{% endif %}
254254
});
255255
$("#collapseMISP").addClass("collapse");
256256

0 commit comments

Comments
 (0)