Django libera actualizaciones de seguridad.

imagen / Brian Klug - flickr
  
21 de Agosto de 2014   0  

El día de hoy, el equipo de desarrolladores de Django han emitido nuevas versiones de su famoso framework, estas actualizaciones son:

 

  • Django 1.4.14.
  • Django 1.6.6.
  • Django 1.7 release candidate 3.

Estas versiones ha sido liberadas para corregir algunos problemas de seguridad detectados en el framework y ya se encuentran disponibles en el repositorio oficial de pypi y en los links de descarga de la página djangoproject.org.  Los problemas que solucionan son los siguientes:

Problema 1. Reverse puede generar URL’s que apuntan a otros host.

Django incluye la función de ayuda django.core.urlresolvers.reverse  que normalmente es utilizado para generar una dirección URL de una referencia a una vista o función URL.

url

 

Sin embargo, cuando se presenta una entrada comenzando con dos diagonales (//), la función reverse () podría generar esquemas de URLs en relación a otros anfitriones, lo que permite a un atacante generar enlaces a sitios de su elección, habilitando el uso de phishing y otros ataques.

Problema 2. Denegación de servicios en carga de archivos.

En la configuración default, cuando se le presenta a Django un archivo que existe dentro de una misma ruta con un mismo nombre, el framework intenta generar un nuevo nombre utilizando un guión bajo seguido de un número al final del nombre del archivo, incrementando el número entero hasta que se haya generado un nombre en el que no exista ningún conflicto con alguno ya existente.

uploading

Un atacante con el conocimiento de esto puede explotar el comportamiento secuencial de la generación de nombres de archivos subiendo varios archivos pequeños los cuales compartan un mismo nombre. Django, durante su procesamiento, generaría números cada vez mayores de llamadas del os.stat() como intento de generar nombres de archivos únicos. Como resultado, incluso un número pequeño de intentos de tales cargas de archivos, podría degradar significativamente el rendimiento del sistema.

Problema 3. Secuestro de sesiones en el middleware de usuarios remotos.

Django proporciona un middleware llamado “django.contrib.auth.middleware.RemoteUserMiddleware” y un motor de autenticación “django.contrib.auth.backends.RemoteUserBackend” el cual utiliza el header REMOTE_USER para propósitos de autenticación.

hakin

En algunas circunstancias, el uso de este middleware y motor, podrían resultar en que un usuario reciba la sesión de otro usuario, si se genera un cambio en el header REMOTE_USER sin realizar las acciones de logout/login correspondientes.

Problema 4. Fuga de datos a través de la manipulación del querystring en el admin.

La interfaz de administración de Django, django.contrib.admin, ofrece una posibilidad en la cual los objetos relacionados pueden mostrar una ventana emergente para ser seleccionados. El mecanismo utilizado para ello se basa en la colocación de valores en la URL y querystring que especifican el modelo relacionado a mostrar y el campo a través del cual se implementa la relación. Este mecanismo no realiza comprobaciones de permisos en el nivel del modelo de la clase como un todo.

dj-admin

Este mecanismo no obstante, comprueba que el campo especificado en realidad represente una relación entre los modelos. Así, un usuario con acceso a la interfaz de administración, y con un conocimiento suficiente de la estructura del modelo y las URL’s adecuadas, podría construir vistas emergentes que muestren los valores de los campos no relacionados, incluyendo los campos que el desarrollador no tenía intención de presentar.

 

El equipo Django recomiendan ampliamente actualizar a estas versiones lo antes posible para evitar algún tipo de daño en nuestros sistemas. Si deseas conocer más sobre estas actualizaciones, te recomiendo leer la nota completa.

 

Fuente: https://www.djangoproject.com

 



Alex Dzul

FullStack Python / Django Developer. #jslove

Temas relacionados