О релизе Django 1.3.4

17 октября 2012

Это четвёртый релиз в ветке Django 1.3.

Опасный заголовок Host

Некоторые части Django – вне зависимости от приложений – используют полный URL, включая доменное имя, которое генерируется из заголовка Host HTTP запроса. Некоторые атаки против этого находятся вне возможностей Django и требуют правильной настройки web-сервера, которые описаны в документации.

Встроенный обработчик заголовка Host по-прежнему уязвим, как нам и сообщалось ранее. В django.http.HttpRequest.get_host() в версиях Django 1.3.3 и 1.4.1 неверно обрабатывает информацию о логине/пароле пользователя. Например, следующий код вернёт “validsite.com”:

Host: validsite.com:random@evilsite.com

Пользуясь этим, злоумышленник может вызвать методы Django – в частности восстановление пароля - для создания и отображения произвольных URL-адреса для пользователей.

Чтобы исключить такую возможность, был изменён HttpRequest.get_host(). Теперь при разборе заголовка Host, который содержит потенциально опасный контент (например, имя пользователя или пароль) будет вызывать исключение django.core.exceptions.SuspiciousOperation.

Полный список исправленных ошибок можно найти на security advisory.