О релизе Django 1.3.4¶
17 октября 2012
Это четвёртый релиз в ветке Django 1.3.
Опасный заголовок Host¶
Некоторые части Django – вне зависимости от приложений – используют полный URL, включая доменное имя, которое генерируется из заголовка Host HTTP запроса. Некоторые атаки против этого находятся вне возможностей Django и требуют правильной настройки web-сервера, которые описаны в документации.
Django’s own built-in parsing of the Host header is, however, still vulnerable,
as was reported to us recently. The Host header parsing in Django 1.3.3 and
Django 1.4.1 – specifically, django.http.HttpRequest.get_host() – was
incorrectly handling username/password information in the header. Thus, for
example, the following Host header would be accepted by Django when running on
«validsite.com»:
Host: validsite.com:random@evilsite.com
Пользуясь этим, злоумышленник может вызвать методы Django – в частности восстановление пароля - для создания и отображения произвольных URL-адреса для пользователей.
Чтобы исключить такую возможность, был изменён HttpRequest.get_host(). Теперь при разборе заголовка Host, который содержит потенциально опасный контент (например, имя пользователя или пароль) будет вызывать исключение django.core.exceptions.SuspiciousOperation.
Полный список исправленных ошибок можно найти на security advisory.