Примечания к выпуску Django 1.3.4¶
Октябрь 17, 2012
Это четвертый релиз в серии Django 1.3.
Отравление заголовка хоста¶
Некоторые части Django - независимо от приложений, написанных конечным пользователем - используют полные URL, включая доменное имя, которые генерируются из заголовка HTTP Host. Некоторые атаки против этого находятся вне возможностей Django и требуют правильной настройки веб-сервера; документация Django уже некоторое время содержит заметки с рекомендациями пользователям по такой настройке.
Однако встроенный в Django разбор заголовка Host все еще уязвим, о чем нам недавно сообщили. Разбор заголовка Host в Django 1.3.3 и Django 1.4.1 - в частности, django.http.HttpRequest.get_host()
- некорректно обрабатывал информацию об имени пользователя/пароле в заголовке. Так, например, следующий заголовок Host был бы принят Django при запуске на «validsite.com»:
Host: validsite.com:random@evilsite.com
Используя это, злоумышленник может заставить части Django - в частности, механизм сброса пароля - генерировать и показывать пользователям произвольные URL.
Чтобы исправить это, разбор HttpRequest.get_host()
был изменен; заголовки хоста, содержащие потенциально опасное содержимое (например, пары имя пользователя/пароль), теперь вызывают исключение django.core.exceptions.SuspiciousOperation
.
Подробная информация об этой проблеме была первоначально опубликована в Интернете в виде security advisory.