Notas de lanzamiento de Django 5.0.7

9 de julio de 2024

Django 5.0.7 corrige dos problemas de seguridad con severidad «moderada», dos problemas de seguridad con severidad «baja» y un bug en 5.0.6.

CVE-2024-38875: Vulnerabilidad potencial de denegación de servicio en django.utils.html.urlize()

El filtro urlize y el filtro urlizetrunc estaban sujetos a un ataque potencial de denegación de servicio mediante ciertos inputs con un número muy grande de corchetes.

CVE-2024-39329: Enumeración de usuarios a través de la diferencia en el tiempo para los usuarios con contraseñas no utilizables

El método authenticate() permitía a los atacantes remotos enumerar usuarios mediante un ataque de tiempo involucrando solicitudes de inicio de sesión para usuarios con contraseñas no utilizables.

CVE-2024-39330: Potencial de travesía del directorio via Storage.save()

Las clases derivadas de la clase base Storage que sobreescriben el método generate_filename() sin replicar las validaciones de ruta de archivo existentes en la clase padre, permitían una travesía del directorio potencial mediante ciertos inputs al llamar al método save().

Las sub-clases de Storage integradas no estaban afectadas por esta vulnerabilidad.

CVE-2024-39614: Vulnerabilidad potencial de denegación de servicio en get_supported_language_variant()

get_supported_language_variant() estaba sujeta a un ataque potencial de denegación de servicio cuando se utilizaba con cadenas muy largas que contenían caracteres específicos.

Para mitigar esta vulnerabilidad, el código de idioma proporcionado a get_supported_language_variant() ahora se parsea hasta una longitud máxima de 500 caracteres.

Cuando el código de idioma supera los 500 caracteres, ahora se levantará un ValueError si strict es True, o si no hay una variante genérica y strict es False.

Bugfixes

  • Se corrigió un bug en Django 5.0 que causaba una caída de Model.full_clean() en instancias de modelo no guardadas con un campo GeneratedField y ciertas definiciones de Meta.constraints (#35560).