Django, framework de desarrollo web
basado en Python ha actualizado las ramas 1.3 y 1.4 para dar solución a
una vulnerabilidad que podría, mediante técnicas de envenenamiento de
cabeceras ("Header poisoning"), redireccionar a un usuario a un sitio malicioso o incluso el robo de credenciales.
Para realizar algunas operaciones, Django extrae el nombre del dominio de la cabecera "Host"
enviada. La vulnerabilidad (CVE-2012-4520) reside en el parser del
método django.http.HttpRequest.get_host(), que extrae esta cabecera "Host" incorrectamente.
Una cabecera válida tendría el siguiente formato:
Host: example.com
Si a Django se le proporciona una petición con esta cabecera manipulada, como por ejemplo:
Django extraerá y entenderá que el dominio deseado es "example2.com" en lugar de "example.com", que es el correcto.
Un caso particular de ataque se produciría en el caso de restablecer la contraseña del usuario.
Un atacante podría simular una petición de nueva contraseña con la
cabecera Host especialmente manipulada, y que a la víctima le llegase un
confirmación (o nueva contraseña) con un texto similar a "Visite http://example2.com/login para..."
en lugar de aparecer el dominio legítimo. Si este usuario (que en
realidad no ha solicitado nada) picase, introduciría sus datos en otro
dominio. Esto ocurriría tanto en con el gestor de usuarios integrado de
Django, o con cualquier aplicación de este tipo realizada con
Django.http.HttpRequest.get_host.
Además del fallo descrito, se ha actualizado la documentación debido a
la incorrecta descripción del método HttpResponse.set_cookie(), que podría facilitar ataques XSS en
las webs que implementaran incorrectamente este método. La
documentación de Django 1.4, que argumentaba incorrectamente que el
método HttpResponse.set_cookie() establecía siempre la propiedad
HttpOnly para todas las cookies (propiedad que añade protección
adicional ante ataques XSS de scripts maliciosos). Ahora se advierte que
sólo lo hace para las cookies de sesión.
Más información:
Django - Security releases issued
Fixed a security issue related to password resets
Django 1.3.4
Django 1.4.2
Antonio Sánchez
No hay comentarios:
Publicar un comentario