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

1 ноября 2016

Django 1.8.16 исправляет две проблемы безопасности в 1.8.15.

Пользователь с жестко заданным паролем, созданный при выполнении тестов на Oracle

При запуске тестов с базой данных Oracle, Django создает временного пользователя базы данных. В старых версиях, если пароль не указан вручную в словаре настроек базы данных TEST, используется жестко закодированный пароль. Это может позволить злоумышленнику с сетевым доступом подключиться к серверу базы данных.

Этот пользователь обычно отбрасывается после завершения набора тестов, но не при использовании опции manage.py test --keepdb или если пользователь имеет активную сессию (например, соединение злоумышленника).

Теперь для каждого тестового запуска используется случайно сгенерированный пароль.

Уязвимость перепривязки DNS при DEBUG=True

Старые версии Django не проверяют заголовок Host против settings.ALLOWED_HOSTS, когда settings.DEBUG=True. Это делает их уязвимыми для DNS rebinding attack.

Хотя Django не поставляет модуль, позволяющий удаленное выполнение кода, это, по крайней мере, вектор межсайтового скриптинга, который может быть довольно серьезным, если разработчики загружают копию производственной базы данных в разработке или подключаются к некоторым производственным сервисам, для которых нет экземпляра разработки, например. Если в проекте используется пакет типа django-debug-toolbar, то злоумышленник может выполнить произвольный SQL, что может быть особенно плохо, если разработчики подключаются к базе данных с учетной записью суперпользователя.

settings.ALLOWED_HOSTS теперь проверяется независимо от DEBUG. Для удобства, если ALLOWED_HOSTS пуст и DEBUG=True, то разрешены следующие вариации localhost ['localhost', '127.0.0.1', '::1']. Если в вашем локальном файле настроек есть производственное значение ALLOWED_HOSTS, то теперь вы должны опустить его, чтобы получить эти запасные значения.

Вернуться на верх