==========================Django 1.5.3 release notes==========================*September 10, 2013*This is Django 1.5.3, the third release in the Django 1.5 series. It addressesone security issue and also contains an opt-in feature to enhance the securityof :mod:`django.contrib.sessions`.Directory traversal vulnerability in ``ssi`` template tag=========================================================In previous versions of Django it was possible to bypass the``ALLOWED_INCLUDE_ROOTS`` setting used for security with the ``ssi``template tag by specifying a relative path that starts with one of the allowedroots. For example, if ``ALLOWED_INCLUDE_ROOTS = ("/var/www",)`` the followingwould be possible:.. code-block:: html+django{% ssi "/var/www/../../etc/passwd" %}In practice this is not a very common problem, as it would require the templateauthor to put the ``ssi`` file in a user-controlled variable, but it's possiblein principle.Mitigating a remote-code execution vulnerability in :mod:`django.contrib.sessions`==================================================================================:mod:`django.contrib.sessions` currently uses :mod:`pickle` to serializesession data before storing it in the backend. If you're using the :ref:`signedcookie session backend<cookie-session-backend>` and :setting:`SECRET_KEY` isknown by an attacker (there isn't an inherent vulnerability in Django thatwould cause it to leak), the attacker could insert a string into their sessionwhich, when unpickled, executes arbitrary code on the server. The technique fordoing so is simple and easily available on the internet. Although the cookiesession storage signs the cookie-stored data to prevent tampering, a:setting:`SECRET_KEY` leak immediately escalates to a remote code executionvulnerability.This attack can be mitigated by serializing session data using JSON ratherthan :mod:`pickle`. To facilitate this, Django 1.5.3 introduces a new setting,:setting:`SESSION_SERIALIZER`, to customize the session serialization format.For backwards compatibility, this setting defaults to using :mod:`pickle`.While JSON serialization does not support all Python objects like :mod:`pickle`does, we highly recommend switching to JSON-serialized values. Also,as JSON requires string keys, you will likely run into problems if you areusing non-string keys in ``request.session``. See the:ref:`session_serialization` documentation for more details.