Notas de lanzamiento de Django 1.5.8

14 de mayo de 2014

Django 1.5.8 corrige dos problemas de seguridad en 1.5.8.

Los cachés pueden permitir incorrectamente almacenar y servir datos privados

En ciertas situaciones, Django puede permitir que los cachés almacenen datos privados relacionados con una sesión particular y luego sirvan ese dato a solicitudes con una sesión diferente o sin sesión alguna. Esto puede provocar la divulgación de información y ser un vector para el envenenamiento de caché.

Al utilizar sesiones de Django, Django establecerá un encabezado Vary: Cookie para asegurarse de que los cachés no sirvan datos cacheados a solicitudes de otras sesiones. Sin embargo, las versiones antiguas del Internet Explorer (probablemente solo Internet Explorer 6 y Internet Explorer 7 si se ejecutan en Windows XP o Windows Server 2003) no pueden manejar el encabezado Vary combinado con muchos tipos de contenido. Por lo tanto, Django eliminaría el encabezado si la solicitud era realizada por Internet Explorer.

Para remediar esto, se ha eliminado el comportamiento especial para estas versiones antiguas del Internet Explorer y el encabezado Vary ya no se elimina de la respuesta. Además, las modificaciones al encabezado Cache-Control para todas las solicitudes de Internet Explorer con un encabezado Content-Disposition también han sido eliminadas ya que se encontraron problemas similares.

URLs de redirección malformadas no validadas correctamente

La validación de los redireccionamientos no validaba correctamente algunas URLs malformadas, que son aceptadas por algunos navegadores. Esto permite a un usuario ser redirigido a una URL insegura de forma inesperada.

Django depende del input del usuario en algunos casos (por ejemplo, django.contrib.auth.views.login(), django.contrib.comments y i18n) para redirigir al usuario a una URL «con éxito». Las comprobaciones de seguridad para estos redireccionamientos (es decir, django.utils.http.is_safe_url()) no validaban correctamente algunas URLs malformadas, como http:\\\\\\djangoproject.com, que son aceptadas por algunos navegadores con una interpretación más liberal de las URL.

Para remediar esto, la validación en is_safe_url() se ha reforzado para poder manejar y validar correctamente estas URLs malformadas.