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

1 ноября 2016

Django 1.10.3 исправляет две проблемы безопасности и несколько ошибок в 1.10.2.

Пользователь с жестко заданным паролем, созданный при выполнении тестов на 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, то теперь вы должны опустить его, чтобы получить эти резервные значения.

Исправления

  • Позволяет проверять свойства User.is_authenticated и User.is_anonymous на принадлежность к set (#27309).
  • Исправлено снижение производительности при выполнении migrate в проектах с операциями RenameModel (#27279).
  • Добавлено model_name к вызовам allow_migrate() в makemigrations (#27200).
  • Заставил представление JavaScriptCatalog уважать аргумент packages; ранее он игнорировался (#27374).
  • Исправлено QuerySet.bulk_create() на PostgreSQL, когда количество объектов кратно плюс один от batch_size (#27385).
  • Предотвращение использования i18n_patterns() слишком большой части URL в качестве языка для исправления случая использования prefix_default_language=False (#27063).
  • Заменено возможно некорректное перенаправление с SessionMiddleware при уничтожении сессии в параллельном запросе на SuspiciousOperation, указывающее, что запрос не может быть завершен (#27363).
Вернуться на верх