components/python/django/patches/CVE-2015-8213.patch
author Danek Duvall <danek.duvall@oracle.com>
Tue, 24 Nov 2015 15:23:56 -0800
changeset 5127 ef368afc826b
permissions -rw-r--r--
22264635 problem in PYTHON-MOD/DJANGO
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5127
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     1
https://www.djangoproject.com/weblog/2015/nov/24/security-releases-issued/
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     2
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     3
CVE-2015-8213: Fixed settings leak possibility in date template filter
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     4
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     5
If an application allows users to specify an unvalidated format for dates
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     6
and passes this format to the date filter, e.g. {{
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     7
last_updated|date:user_date_format }}, then a malicious user could obtain
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     8
any secret in the application's settings by specifying a settings key
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     9
instead of a date format. e.g. "SECRET_KEY" instead of "j/m/Y".
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    10
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    11
To remedy this, the underlying function used by the date template filter,
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    12
django.utils.formats.get_format(), now only allows accessing the date/time
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    13
formatting settings.
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    14
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    15
This is backported from the commit on the 1.7 branch:
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    16
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    17
    https://github.com/django/django/commit/8a01c6b53169ee079cb21ac5919fdafcc8c5e172
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    18
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    19
because upstream is no longer maintaining the 1.4 branch.
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    20
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    21
--- Django-1.4.22/django/utils/formats.py	Tue Aug 18 10:17:02 2015
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    22
+++ Django-1.4.22/django/utils/formats.py	Tue Nov 24 15:20:12 2015
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    23
@@ -15,6 +15,25 @@
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    24
 _format_cache = {}
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    25
 _format_modules_cache = {}
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    26
 
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    27
+
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    28
+FORMAT_SETTINGS = frozenset([
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    29
+    'DECIMAL_SEPARATOR',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    30
+    'THOUSAND_SEPARATOR',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    31
+    'NUMBER_GROUPING',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    32
+    'FIRST_DAY_OF_WEEK',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    33
+    'MONTH_DAY_FORMAT',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    34
+    'TIME_FORMAT',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    35
+    'DATE_FORMAT',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    36
+    'DATETIME_FORMAT',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    37
+    'SHORT_DATE_FORMAT',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    38
+    'SHORT_DATETIME_FORMAT',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    39
+    'YEAR_MONTH_FORMAT',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    40
+    'DATE_INPUT_FORMATS',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    41
+    'TIME_INPUT_FORMATS',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    42
+    'DATETIME_INPUT_FORMATS',
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    43
+])
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    44
+
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    45
+
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    46
 def reset_format_cache():
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    47
     """Clear any cached formats.
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    48
 
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    49
@@ -66,6 +85,8 @@
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    50
     be localized (or not), overriding the value of settings.USE_L10N.
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    51
     """
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    52
     format_type = smart_str(format_type)
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    53
+    if format_type not in FORMAT_SETTINGS:
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    54
+        return format_type
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    55
     if use_l10n or (use_l10n is None and settings.USE_L10N):
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    56
         if lang is None:
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    57
             lang = get_language()
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    58
--- Django-1.4.22/tests/regressiontests/i18n/tests.py.orig	Tue Aug 18 10:17:02 2015
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    59
+++ Django-1.4.22/tests/regressiontests/i18n/tests.py	Tue Nov 24 15:19:03 2015
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    60
@@ -684,6 +684,10 @@
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    61
                 self.assertEqual(template2.render(context), output2)
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    62
                 self.assertEqual(template3.render(context), output3)
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    63
 
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    64
+    def test_format_arbitrary_settings(self):
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    65
+        self.assertEqual(get_format('DEBUG'), 'DEBUG')
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    66
+
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    67
+
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    68
 class MiscTests(TestCase):
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    69
 
ef368afc826b 22264635 problem in PYTHON-MOD/DJANGO
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    70
     def setUp(self):