17 de octubre de 2012
Este es el cuarto lanzamiento en la serie de Django 1.3.
Algunas partes de Django – independientes de las aplicaciones escritas por los usuarios finales – utilizan URLs completas, incluyendo el nombre de dominio, que se generan a partir del encabezado HTTP Host. Algunos ataques contra esto están más allá del control de Django y requieren que el servidor web esté correctamente configurado; la documentación de Django ha contenido notas sobre tal configuración durante algún tiempo.
Sin embargo, la propia interpretación de Django de los encabezados Host sigue siendo vulnerable, como se informó recientemente. La interpretación del encabezado Host en Django 1.3.3 y Django 1.4.1 – específicamente, django.http.HttpRequest.get_host() – estaba manejo incorrectamente la información de usuario/contraaseña en el encabezado. Por lo tanto, por ejemplo, el siguiente encabezado Host sería aceptado por Django cuando se ejecutara en validsite.com:
Host: validsite.com:random@evilsite.com
Con esto, un atacante puede causar que partes de Django – particularmente la mecánica de restablecimiento de contraseña – generen y muestren URLs arbitrarias a los usuarios.
Para remediar esto, se está modificando la interpretación en HttpRequest.get_host(); los encabezados Host que contienen contenido potencialmente peligroso (como pares usuario/contraaseña) ahora levantan la excepción django.core.exceptions.SuspiciousOperation.
Los detalles de este problema se publicaron inicialmente en línea como un avisado de seguridad.
may 31, 2026