Примечания к выпуску Django 1.5.3

10 сентября 2013 г.

Это Django 1.5.3, третий выпуск из серии Django 1.5. Он решает одну проблему безопасности, а также содержит функцию подписки для повышения безопасности django.contrib.sessions .

Уязвимость обхода каталогов в ssi теге шаблона

В предыдущих версиях Django можно было обойти ALLOWED_INCLUDE_ROOTS настройку, используемую для безопасности, с помощью ssi тега шаблона, указав относительный путь, который начинается с одного из разрешенных корней. Например, если возможно следующее:ALLOWED_INCLUDE_ROOTS = ("/var/www",)

{% ssi "/var/www/../../etc/passwd" %}

На практике это не очень распространенная проблема, поскольку от автора шаблона потребуется поместить ssi файл в управляемую пользователем переменную, но в принципе это возможно.

Устранение уязвимости удаленного выполнения кода в django.contrib.sessions

django.contrib.sessions в настоящее время используется pickle для сериализации данных сеанса перед их сохранением в серверной части. Если вы используете бэкэнд сеанса подписанных файлов cookie и SECRET_KEY известен злоумышленнику (в Django нет присущей ему уязвимости, которая могла бы вызвать утечку), злоумышленник может вставить строку в свой сеанс, которая, если ее не выбрать, выполняет произвольно код на сервере. Техника для этого проста и легко доступна в Интернете. Хотя хранилище сеанса cookie подписывает данные, хранящиеся в cookie, для предотвращения взлома, SECRET_KEY утечка немедленно перерастает в уязвимость удаленного выполнения кода.

Эту атаку можно смягчить путем сериализации данных сеанса с использованием JSON, а не pickle . Чтобы облегчить это, Django 1.5.3 вводит новый параметр SESSION_SERIALIZER , для настройки формата сериализации сеанса. Для обратной совместимости этот параметр по умолчанию использует pickle . Хотя сериализация JSON поддерживает не все объекты Python, как это pickle делает, мы настоятельно рекомендуем переключиться на сериализованные значения JSON. Кроме того, поскольку для JSON требуются строковые ключи, вы, вероятно, столкнетесь с проблемами, если будете использовать нестроковые ключи в request.session . Подробнее см. Документацию по сериализации сеанса .

Copyright ©2020 All rights reserved